Por Joel Pérez y Wissem El Khlifi
Publicado en Febrero 2014
Indice
1. Oracle Database 12c: “Cloning Plugabble Databases (PDBs)” ( Parte I )
2. Oracle Database 12c: “Cloning Plugabble Databases (PDBs)” ( Parte II )
3. Oracle Database 12c: “Cloning Plugabble Databases (PDBs)” ( 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 la nueva arquitectura de “Oracle Database 12c” denominada “Oracle Multitenant”, tendremos también la oportunidad de explorar el tema de “Cloning” de “PDBs” enfocado en uno de sus tantos escenarios.
“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. “8”i 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…”, “10g” nos sorprendió con el concepto de ASM… y filosofía “Grid Computing”, 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.
En la nueva versión de manejador de base de datos “Oracle Database 12c” han sido incorporado mas de 500 nuevas características sin embargo e icono principal de la versión radica en la nueva arquitectura es denominada “Oracle Multitenant”.
“Oracle Multitenant” es la nueva opción para “Oracle Database 12c Enterprise Edition” la cual ayuda a los clientes a reducir costos en el área de “IT” a través de la simplificación, consolidación, aprovisionamiento, “Upgrades” y mas. La nueva arquitectura esta basada en una base de datos “Container” la cual puede albergar muchas BBDDs ( Bases de Datos ) denominadas “Plugaggable Databases”. La arquitectura “Oracle Multitenant” es escalable y aplicable de forma total a soluciones ya conocidas como “RAC ( Oracle Real Application Clusters )” & “Oracle Data Guard”. Una simple BBDD no “Pluggable Database” o bien llamada “Non-CDB” ( “Non Container Database” ) puede ser convertida fácilmente a una BBDD “Pluggable Database” sin afectar su contenido, operación y manejo para las aplicaciones relacionadas con la misma.
Los principales beneficios de la arquitectura “Oracle Multitenant” pudieran ser resumidos en 4 grandes factores:
Alta Densidad de Consolidación: las muchas “Pluggable Databases” poseerán como base de operación la misma BBDD “Container” ( “CBD”: “Container Database” ) compartiendo memoria y procesos “Background”, esto conlleva una gran ventaja, cada BBDD no poseerá su propia “SGA”, existirá solo una “SGA” para todas las BBDDs. En esta nueva arquitectura existirá la posibilidad de operar más BBDDs en un mismo servidor o servidores respecto a las versiones anteriores. Este es un beneficio similar a la llamada concepción de consolidación de “schemas”, pero son bien conocidas las barreras, dificultades e implicaciones al aplicar consolidación de “schemas” lo cual trae consigo un tema de seguridad a resolver para lo cual se tendría que implementar un modelo de protección con “Oracle Database Vault” u otros lo cual si podría afectar en cierta medida la arquitectura de permisos de usuarios y objetos.
Rápido Aprovisionamiento & “Cloning” utilizando SQL “Statements”: una “Pluggable Database” puede ser desconectada de un “Database Containter (CBD)” y ser conectada a otro “Database Containter (CBD)”. Alternativamente se puede clonar una “Pluggable Database” en el mismo “Container” o duplicar la misma de un “Container” a otro “Container”, estas operaciones pueden ser llevadas a cabo a través de “SQL Statements” en tan solo unos pocos segundos.
Nuevos Paradigmas para un Rápido “Patching” o “Upgrade”: la inversión de tiempo y esfuerzo para aplicar un “Patch” a una “Database Containter (CBD)” conlleva el resultado de aplicar el mismo a todas las “Pluggable Databases”, si se desea aplicar el “Patch” o “Upgrade” a solo un numero limitado de “Pluggable Databases” el procedimiento es crear otro “Database Containter (CBD)”, desconectar las “Pluggable Databases” del anterior “Container”, incorporar las mismas al nuevo “Container” y allí realizar el trabajo particular de “Patch” y/o “Upgrade” en este nuevo “Container”.
Manejar muchas BBDDs como una sola: consolidando BBDDs existentes como “Pluggable Databases”, los administradores podrán manejar muchas “Pluggable Databases” como si fueran una sola. Por ejemplo, labores de respaldo y recuperaciones son llevadas a cabo desde del “CBD”, toda la administración podrá ser llevada a cabo de forma centralizada.
“Resource Management” Dinámico entre “Pluggable Databases”: “Oracle Database 12c Resource Manager” posee funciones extendidas para controlar el consumo de recursos entre “CDBs” y “Pluggable Databases”.
Es común en tiempos actuales encontrar en las empresas BBDDs distribuidas a lo largo de diversos o muchos servidores. Los costos asociados a manutención, Licencias, repetición de labores a lo largo de estas hacen que el área de “IT” estuviese en constante búsqueda de optimizar labores evitando realizar una misma tarea muchas veces o que por ende existiese el deseo de reducir costos reduciendo cantidad de servidores entre otras estrategias. “Oracle Multitenant” es la respuesta a la reducción de costos que las compañías deseaban. Esto podría verse reflejado en las siguientes aéreas:
• La figura desplegada a continuación es la representación de la localización y organización de la “Metadata” típica de una BBDD “Non-CDB”. La “Metadata” se encuentra en el “Tablespace” “System” y sus objetos pertenecen al diccionario de datos de la BBDD. La creación de cualquier objeto en la BBDD enfila registros y/o modificaciones a la información interna de estas. En el diccionario de datos se encuentra toda la información relacionada con usuarios (user$), “Tablespaces” (TS$) y mas.
• La información del diccionario de datos e información de data de aplicación por mejoras practicas siempre se distribuye en “Tablespaces” diversos:
• El modelo de la siguiente figura es la arquitectura de “Tablespaces” y objetos de una “CDB”. En la parte superior de color rojizo nos encontramos el contenido del “Container” de BBDD en uso. Debajo la representación de la “Oracle System Metadata” ya propiamente relacionada con una “PDB”. La información de la parte inferior esta basada en la información del diccionario de datos para el “Oracle System Metadata” y la parte superior para el registro de los objetos de aplicaciones.
• “PDB” & “root”: el conjunto de “Tablespaces” & “Datafiles” que alberga la “Metadata” para el “Oracle System” es llamado “root”, su nombre propiamente es (CDB$Root) y todos los “Tablespaces” que conforman los datos de aplicaciones esta compuesto en las “PDBs” . La “PDB” es una base de datos “full” mientras que “root” es la BBDD de la “Metadata”. Cada “PDB” posee un “Namespace” privado para usuarios, roles, sinónimos públicos y así sucesivamente.• “Unplug/plug” Desconexión & Conexión de una “PDB” de una maquina a otra: en la siguiente representación se muestra la “PDB” llamada “PDB_1” conformada a una “CBD” denominada “CDB_1” en la maquina 1. Se desea movilizar la “PDB” ( “PDB_1 ) a la maquina 2. Mientras la “PDB_1” esta conectada a la “CDB_1” es la BBDD “CDB_1” quien posee toda la información de la ubicación de “Datafiles” y otros elementos de la “PDB_1” , información que se encuentra alojada en los “Controlfiles” de la “CDB_1”. Para llevar a cabo la desconexión “unplug” la información contenida en la “CBD_1” perteneciente a la “PDB_1” debe ser exportada a un archivo que será pieza clave en el proceso de conexión “Plug” de la “PDB_1” a la “CDB_2” en la maquina 2. La generación del archivo mencionado será de la siguiente forma:
-- The PDB must be closed before unplugging it. alter pluggable database PDB_1 unplug into '/u01/app/oracle/oradata/.../pdb_1.xml';
Para realizar el “plug” de la “PDB_1” en la maquina 2, ejecutaremos la siguiente porción de código:
-- The PDB must be opened after plugging it in. create pluggable database PDB_2 using '/u01/app/oracle/oradata/.../pdb_1.xml' path_prefix = '/u01/app/oracle/oradata/pdb_2_Dir'
El traslado de “PDBs” es un aérea completa de estudio, lo anteriormente expuesto es solo una de las tantas técnicas posibles a realizar, el tema completo de Movilización de “PDB” lo abordaremos en artículos sucesivos.
Error: (The attempt causes ORA-65081: database or pluggable database is not open in read only mode.)
Para versiones posteriores a la “12.1.0.1” se podrá llevar a cabo “Cloning” de “PDB” in “Flight” sin establecer la BBDD original en modo “Read-Only”.
A este punto del artículo tenemos la base de conocimiento necesaria para entender la filosofía de las “PDBs” e iniciar el camino de conocimiento de administración de las mismas. En el presente articulo mostraremos una de las tantas formas bajo las cuales podremos clonar “PDBs”.
Objetivo y escenario: Generar una copia de “PDB” en el mismo “Container” base de la “PDB” original utilizando OMF.
Herramienta de Uso: SQL*Plus
Los motivos bajos los cuales podríamos desear generar copias de “PDBs” son extensos y diversos, listemos algunos:
Para el siguiente ejemplo se asume que se posee una combinación de “CBD” & “PDB” creadas las cuales denominaremos: “CDB1” & “PDB1”, el objetivo será generar una “PDB2” sobre el mismo “Container” “CDB1”. Tal como fue resaltado, para el caso presente el objetivo es probar cambios internos en la BBDD concernientes a una determinada aplicación, si los cambios a la nueva “PDB” fuesen direccionados para hacer “test” de “Upgrades” o “Patchs” lo adecuado seria crear otro “CDB” y realizar el “Plug” de la nueva “PDB” en este nuevo “Container”. Pasemos a visualizar el ejemplo practico.
Establecimiento en modo “Read-Only” de la “PDB1”
Recordemos que para la versión “Oracle Database 12cR1” el “Cloning” en este escenario exige el establecimiento en modo “Read-Only” de la “PDB” original ( “PDB1” ). Conectados a la “CBD1” aplicamos:
. oraenv ORACLE_SID = [CDB1] ? CDB1 sqlplus / as sysdba alter pluggable database pdb1 close immediate;
Apertura de la “PDB1” en modo “Read Only”
alter pluggable database pdb1 open read only; exit
Creación de nuevo Directorio para la “PDB2”
mkdir /u01/MyNewPDB2 chown oracle:oinstall /u01/MyNewPDB2 chmod 775 /u01/MyNewPDB2
Configuracion de “OMF” ( “Oracle Managed Files” ) para la “PDB2”
sqlplus / as sysdba alter system set db_create_file_dest='/u01/MyNewPDB2';
Ejecución del “Cloning”
create pluggable database pdb2 from pdb1;
“Opening” de la nueva “PBD2”
alter pluggable database pdb2 open;
Reestablecimiento de Condiciones para la “PDB1”
Cerrado de la “PDB1” para su apertura posterior en modo “Read-Write”
connect / as sysdba alter session set container=cdb$root; alter pluggable database pdb1 close immediate; alter pluggable database pdb1 open;
Así es de fácil realizar un “Clone” de una “PDB”… esto es “Oracle Multitenant”!!
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