Oracle Database 12c: Transporte de “Tablespaces” ( Multiplataforma ) ( Parte I )

Por Joel Pérez y Wissem El Khlifi
Publicado en septiembre 2013

Índice de contenidos

1. Transporte de “Tablespaces” (Multiplataforma) (Parte I)
2. Transporte de “Tablespaces” (Multiplataforma) (Parte II)
3. Transporte de “Tablespaces” de “11.2.0.3” a “12.1” ( Parte III )

Reciban estimados tecnólogos Oracle un cordial saludo. A través del presente artículo, tendremos la oportunidad de visualizar y adentrarnos un poco en el tema de transporte de “Tablespaces” en modo Multi-Plataforma ( “Cross-Platorm” ) a través de “Backups” consistentes con el uso de RMAN.

Nota: En este articulo se utilizaran los términos “Cross-Platform” & “Multi-Plataforma” como términos sinónimos.

“Database12c” la nueva versión de manejador de base de datos de “Oracle Corporation”, nosotros los tecnólogos Oracle nos preguntábamos “que mas…” podría Oracle adicionar como nuevas características?, de que forma Oracle nos iba a sorprender esta vez y como siempre, las nuevas características y nueva arquitectura no solo nos sorprenden sino que una vez mas nos llevan a otra era…, “Cloud Computing”…

Personalmente he tenido la oportunidad de trabajar con tecnología Oracle como DBA desde su versión 8. 8i la era del internet, 9i la era del internet con mayores elementos, recuerdo que uno de los componentes de mayor importancia fue la presentación de RAC9i “la era naciente de RAC…” y lo que muchos consideramos como el verdadero inicio de la era de Alta Disponibilidad en soluciones Oracle, 10g nos sorprendió con el concepto de ASM… y filosofía Grid, 11g & 11g R2 sobre todo por sus mejoras de alto nivel relacionadas con RAC & Data Guard…, 12c… Cloud Computing, nuevas características… mas de 500 las cuales iremos cubriendo gradualmente a través de artículos y otros elementos de ayuda.

Entremos en materia… hasta versiones previas a “Oracle Database 12cR1” las tareas de traslados, “Upgrades”, replicaciones y otras actividades entre bases de datos pertenecientes a sistemas operativos distintos era todo un reto. Las alternativas, procedimientos y estrategias para manejar temas “Cross-Platform” son realmente diversas y se podría considerar el mismo como un “subset” de un área de especialización para todos aquellos que somos DBA.

“Endian Format”: el “endian format” es el concepto clave para entender todo lo relacionado con operaciones Multi-Plataformas. El “endian format” es el orden en el que están ordenados los “bytes” internamente en archivos binarios pertenecientes a un determinado sistema operativo. En “endian format” posee solo 2 tipos: “Liitle” & “Big”, en uno los “bytes” están ordenados de menor a mayor y viceversa para el caso opuesto.

Hasta versiones previas a “Oracle Database 12cR1” la mayoría de operaciones “Multi-Plataformas” se veían altamente favorecidas si los “endian formats” eran iguales. Ej:

  • Posibilidad de convertir una base de datos (BBDD) completa a la codificación de otro sistema operativo que tuviese el mismo “endian format” a través de “CONVERT DATABASE” de RMAN.
  • Posibilidad de establecer una configuración “Oracle Data Guard” entre BBDDs con sistemas operativos de “endian format” iguales. De forma especifica para versiones anteriores, esta operación solo se podía llevar a cabo entre Sistemas Operativos “Linux & Windows”, no pudiéndose llevar a cabo entre otros sistemas operativos a pesar de que fuesen de “endian formats” iguales.

Si los “endian formats” no eran iguales las operaciones se tornaban un tanto complejas. Como por Ej:

  • Al tener la imposibilidad de aplicar “CONVERT DATABASE” se tenia que recurrir a técnicas como “TRANSPORTABLE TABLESPACE” o “CONVERT DATAFILE”, “Export/Import” u otras
  • Para muchos escenarios la posibilidad se direccionaba en el uso de “Oracle Streams” o “Oracle Golden Gate”
  • Y así sucesivamente...

Personalmente como DBA siempre desee desde hace años una nueva característica que pudiese sortear este tipo de dificultades relacionadas con bases de datos pertenecientes a “Endian Formats” distintos. “Oracle Database 12c” ha respondido a eso y mas con mas de 500 nuevas características tal como fue mencionado al principio del articulo.

La característica de transportar “Tablespaces” entre base de datos ha existido desde numerosas versiones anteriores. De forma tradicional la técnica de transportar un “Tablespace” esta basada en lo siguiente:

  • Establecer el “tablespace” en modo “read only” para poder obtener una imagen física consistente del mismo
  • Copiar a través de utilitarios de sistema operativo los “Datafiles” correspondientes
  • Exportar la “Metadata” perteneciente a los “tablespaces” deseados a transportar
  • Y finalmente importar la “Metadata” en la BBDD destino teniendo de forma físicamente ubicable los “Datafiles” los cuales pasaran a ser parte de la BBDD destino

Los 2 elementos objeto del transporte son: “Datafiles” & “Export Dump File”. El “Export Dump File” es Multi-Plataforma mas no los “Datafiles”, esto implica que cuando se deseaba ( hasta versiones previas a “Oracle Database 12cR1” ) realizar la operación de transporte hacia una BBDD de un sistema operativo distinto con “endian format” distinto, era necesario realizar un “CONVERT TABLESPACE” o “CONVERT DATAFILE” como complemento de la operación.

La columna vertebral de las operaciones Multi-Plataformas en “Oracle Database 12c” están basadas en la capacidad de realizar “Backups” & “ Restore” “Cross-Platform” a través de “RMAN Backupsets”.

Veamos de forma practica como es el procedimiento para llevarlo a cabo con “Oracle Database 12cR1”

Objetivo: Llevar a cabo un transporte de “Tablespaces” en modo “Cross-Platform” con el uso de “RMAN Backupsets” consistentes. Para el presente caso los sistemas operativos origen y destino serán los siguientes de forma correspondiente: “Oracle Enterprise Linux 64bits” y “Windows 8 64bits”

Creación de “Tablespace”

Creación de “Tablespace” “TBS_TRANSP” el cual será utilizado como “Tablespace” objeto de transporte

sandbox1(orawiss):/home/oracle/PDB02>sqlplus / as sysdba

SQL*Plus: Release 12.1.0.1.0 Production on Mon Jul 15 06:00:47 2013

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Advanced Analytics
and Real Application Testing options

SQL> CREATE TABLESPACE TBS_TRANSP DATAFILE AUTOEXTEND ON MAXSIZE 100M;

Tablespace created.

SQL> CREATE TABLE TAB_TRASNP (ID NUMBER) TABLESPACE TBS_TRANSP;

Table created.

SQL> insert into TAB_TRASNP values (1);

1 row created.

SQL> commit;

Commit complete.

Chequeo de Pre-Requisitos

Tal como en las versiones anteriores, se debe realizar el verificado de si los “Tablespaces” a ser transportados son auto-contenidos ( “Self-Contained” ). Un “Tablespace” posee condición “Self-Contained” afirmativa si los objetos de este no dependen de otros “Tablespaces” que no estén siendo transportados en la operación.

Nota: Para llevar a cabo la operación de transporte el parámetro de BBDD “COMPATIBLE” debe encontrarse con un set igual o superior a “12.0”

SQL> EXECUTE DBMS_TTS.TRANSPORT_SET_CHECK('TBS_TRANSP', TRUE);

PL/SQL procedure successfully completed.

SQL> SELECT * FROM TRANSPORT_SET_VIOLATIONS;

no rows selected

SQL>

Chequeo de Plataformas soportadas

Para poder llevar a cabo el procedimiento, la plataforma destino debe estar en la lista presentada a continuación. Para el caso presente, la plataforma destino es:

( 12 Microsoft Windows x86 64-bit                        Little  )

SQL> set linesize 2000
SQL> set pagesize 2000
SQL> select PLATFORM_ID, PLATFORM_NAME, ENDIAN_FORMAT from v$transportable_platform;

PLATFORM_ID PLATFORM_NAME                                   ENDIAN_FORMAT      
----------- ------------------------------------------------------------------
          1 Solaris[tm] OE (32-bit)                             Big                     
          2 Solaris[tm] OE (64-bit)                             Big                     
          7 Microsoft Windows IA (32-bit)                       Little                  
         10 Linux IA (32-bit)                                   Little                  
          6 AIX-Based Systems (64-bit)                          Big                     
          3 HP-UX (64-bit)                                      Big                     
          5 HP Tru64 UNIX                                       Little                  
          4 HP-UX IA (64-bit)                                   Big                     
         11 Linux IA (64-bit)                                   Little                  
         15 HP Open VMS                                         Little                  
          8 Microsoft Windows IA (64-bit)                       Little                  
          9 IBM zSeries Based Linux                             Big                     
         13 Linux x86 64-bit                                    Little                  
         16 Apple Mac OS                                        Big                     
         12 Microsoft Windows x86 64-bit                        Little                  
         17 Solaris Operating System (x86)                      Little                  
         18 IBM Power Based Linux                               Big                     
         19 HP IA Open VMS                                      Little                  
         20 Solaris Operating System (x86-64)                   Little                  
         21 Apple Mac OS (x86-64)                               Little                  

20 rows selected.

SQL>

“Read Only”

Establecimiento en modo “Read Only” para el “Tablespace” “TBS_TRANSP”

SQL> ALTER TABLESPACE TBS_TRANSP READ ONLY;

Tablespace altered.

SQL>

“BACKUP TO PLATFORM”

Tal como puede ser apreciado en la siguiente sentencia. Se realiza comando “BACKUP” con la opción nueva “TO PLATFORM” el cual será una de las opciones fundamentos para llevar a cabo operaciones “Cross-Platform” en “Oracle Database 12c”. En el mismo comando se establece la generación del “Export Dump File” el cual será pieza complemento de la actividad final de transporte. En versiones previas a “Oracle Database 12c” estas 2 actividades debían ser realizadas de forma separada, no existía un comando como “BACKUP TO PLATFORM” para realizar la actividad el cual además tuviese la opción “DATAPUMP FORMAT” para la generación del mismo.

Posterior a la generación serán copiadas las piezas del “Backup” y “Export Dump File” a un directorio designado para tal fin en el sistema operativo “Windows”, la ruta designada es la siguiente: “C:\PDB02”

BACKUP TO PLATFORM 'Microsoft Windows x86 64-bit'
FORMAT '/home/oracle/PDB02/tbs_transp.bck'
DATAPUMP FORMAT '/home/oracle/PDB02/tbs_transp.dmp'
TABLESPACE TBS_TRANSP;

sandbox1(orawiss):/home/oracle/PDB02>rman

Recovery Manager: Release 12.1.0.1.0 - Production on Mon Jul 15 06:02:50 2013

Copyright (c) 1982, 2013, Oracle and/or its affiliates.  All rights reserved.

RMAN>  CONNECT TARGET "sys AS SYSBACKUP";

target database Password:
connected to target database: ORAWISS (DBID=3257067578)

RMAN>

RMAN> BACKUP TO PLATFORM 'Microsoft Windows x86 64-bit'
FORMAT '/home/oracle/PDB02/tbs_transp.bck'
DATAPUMP FORMAT '/home/oracle/PDB02/tbs_transp.dmp'
TABLESPACE TBS_TRANSP;
2> 3> 4>

Starting backup at 07/15/2013 06:03:50
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=271 device type=DISK
allocated channel: ORA_DISK_2
channel ORA_DISK_2: SID=21 device type=DISK
allocated channel: ORA_DISK_3
channel ORA_DISK_3: SID=270 device type=DISK
allocated channel: ORA_DISK_4
channel ORA_DISK_4: SID=32 device type=DISK
allocated channel: ORA_DISK_5
channel ORA_DISK_5: SID=262 device type=DISK
Running TRANSPORT_SET_CHECK on specified tablespaces
TRANSPORT_SET_CHECK completed successfully

Performing export of metadata for specified tablespaces...
   EXPDP>
WARNING: Oracle Data Pump operations are not typically needed when connected to the
 root or seed of a container database.

   EXPDP> Starting "SYSBACKUP"."TRANSPORT_EXP_ORAWISS_cfoz":
   EXPDP> Processing object type TRANSPORTABLE_EXPORT/PLUGTS_BLK
   EXPDP> Processing object type TRANSPORTABLE_EXPORT/TABLE
   EXPDP> Processing object type TRANSPORTABLE_EXPORT/TABLE_STATISTICS
   EXPDP> Processing object type TRANSPORTABLE_EXPORT/STATISTICS/MARKER
   EXPDP> Processing object type TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK
   EXPDP> Master table "SYSBACKUP"."TRANSPORT_EXP_ORAWISS_cfoz" successfully loaded/unloaded
   EXPDP> ******************************************************************************
   EXPDP> Dump file set for SYSBACKUP.TRANSPORT_EXP_ORAWISS_cfoz is:
   EXPDP>   /opt/app/oracle/product/12.1/db_1/dbs/backup_tts_ORAWISS_29071.dmp
   EXPDP> ******************************************************************************
   EXPDP> Datafiles required for transportable tablespace TBS_TRANSP:
   EXPDP>   +DATA/ORAWISS/DATAFILE/tbs_transp.341.820821679
   EXPDP> Job "SYSBACKUP"."TRANSPORT_EXP_ORAWISS_cfoz" successfully completed at
    Mon Jul 15 06:05:17 2013 elapsed 0 00:01:07
Export completed

channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00060 name=+DATA/ORAWISS/DATAFILE/tbs_transp.341.820821679
channel ORA_DISK_1: starting piece 1 at 07/15/2013 06:05:21
channel ORA_DISK_1: finished piece 1 at 07/15/2013 06:05:23
piece handle=/home/oracle/PDB02/tbs_transp.bck tag=TAG20130715T060353 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:02
channel ORA_DISK_1: starting full datafile backup set
input Data Pump dump file=/opt/app/oracle/product/12.1/db_1/dbs/backup_tts_ORAWISS_29071.dmp
channel ORA_DISK_1: starting piece 1 at 07/15/2013 06:05:23
channel ORA_DISK_1: finished piece 1 at 07/15/2013 06:05:24
piece handle=/home/oracle/PDB02/tbs_transp.dmp tag=TAG20130715T060353 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 07/15/2013 06:05:24

RMAN>

“RESTORE FOREIGN TABLESPACE”

Conectados en el sistema operativo destino “Windows” y en una BBDD “Target” en la cual realizaremos el transporte, procederemos a la aplicación del mismo. El comando “RESTORE” con las opciones “FOREIGN TABLESPACE” realizara el transporte, en el mismo se especifica el o los “Datafile(s)” que contiene el backup, la locación del “Backupset” y del “Export Dump File”. Tal como se puede apreciar en el “output”, el proceso de transporte se basa en la incorporación de los “Datafiles” a la BBDD registrando los mismos en el o los “Controlfile(s)” y el posterior “Import” de la “Metadata” para así completar el proceso de transporte.

C:\Users\wissem>rman

Recovery Manager: Release 12.1.0.1.0 - Production on Mon Jul 15 12:08:36 2013

Copyright (c) 1982, 2013, Oracle and/or its affiliates.  All rights reserved.

RMAN> CONNECT TARGET "sys AS SYSBACKUP";

target database Password:
connected to target database: CDBTST (DBID=918472262)

RMAN> Restore foreign tablespace TBS_TRANSP
2> FORMAT 'C:\PDB02\tbs_transp.dbf'
3> FROM BACKUPSET 'C:\PDB02\tbs_transp.bck'
4> DUMP FILE FROM BACKUPSET 'C:\PDB02\tbs_transp.dmp';

Starting restore at 15-JUL-13
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=366 device type=DISK

channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring all files in foreign tablespace TBS_TRANSP
channel ORA_DISK_1: reading from backup piece C:\PDB02\tbs_transp.bck
channel ORA_DISK_1: restoring foreign file 60 to C:\PDB02\TBS_TRANSP.DBF
channel ORA_DISK_1: foreign piece handle=C:\PDB02\tbs_transp.bck
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:05
channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring Data Pump dump file to C:\app\wissem\product\12.1.0\dbh_1/
dbs/backup_tts_CDBTST_83935.dmp
channel ORA_DISK_1: reading from backup piece C:\PDB02\tbs_transp.dmp
channel ORA_DISK_1: foreign piece handle=C:\PDB02\tbs_transp.dmp
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:02

Performing import of metadata...
   IMPDP>
WARNING: Oracle Data Pump operations are not typically needed when connected to the root 
or seed of a container database.

   IMPDP> Master table "SYSBACKUP"."TSPITR_IMP_CDBTST_gtfF" successfully loaded/unloaded
   IMPDP> Source timezone version is +00:00 and target timezone version is -05:00.
   IMPDP> Starting "SYSBACKUP"."TSPITR_IMP_CDBTST_gtfF":
   IMPDP> Processing object type TRANSPORTABLE_EXPORT/PLUGTS_BLK
   IMPDP> Processing object type TRANSPORTABLE_EXPORT/TABLE
   IMPDP> Processing object type TRANSPORTABLE_EXPORT/TABLE_STATISTICS
   IMPDP> Processing object type TRANSPORTABLE_EXPORT/STATISTICS/MARKER
   IMPDP> Processing object type TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK
   IMPDP> Job "SYSBACKUP"."TSPITR_IMP_CDBTST_gtfF" successfully completed at 
Mon Jul 15 12:12:43 2013 elapsed 0 00:00:23
Import completed

Finished restore at 15-JUL-13

RMAN> exit

Recovery Manager complete.

C:\Users\wissem>

Verificado

Verificaremos el trabajo de transporte realizado

C:\Users\wissem>sqlplus / as sysdba

SQL*Plus: Release 12.1.0.1.0 Production on Mon Jul 15 12:13:53 2013

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

SQL> select * from TAB_TRASNP;

        ID
----------
         1

SQL> exit;
Disconnected from Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

C:\Users\wissem>

Conclusión

Tal como se pudo observar durante la ejecución del transporte, en “Oracle Database 12c” el “endian format” ya no representa una dificultad o elemento de posibilidad para realizar tareas “Cross-Platform” a excepción de aquellas tareas de “Upgrade” de versiones anteriores a “12c”

 


Joel es un experto DBA con más de 12 años de experiencia, especializado en bases de datos con especial énfasis en la soluciones de alta disponibilidad (RAC, Data Guard, y otras). Es un conferencista habitual en eventos de Oracle como: OTN LAD TOUR y otros. Consultor Internacional con trabajos en más de 20 países alrededor del mundo. Fue el primer latinoamericano en ser nombrado "Experto OTN" en el año 2003, Oracle ACE año 2004 y actualmente Oracle ACE Director. Wissem es un Senior DBA con más de 12 años de experiencia, especializado en soluciones RAC & Data Guard. Actualmente labora para “Schneider Electric / APC Global operations”. Wissem ha trabajado también para varias empresas internacionales líderes en sectores de Bancas, Telecomunicaciones, Internet y Energía. Wissem fue el primer Oracle ACE en España y es un OCP DBA.