Creación de un Multitenant Container Database 12c de forma Manual
Por Francisco RiccioPublicado en Junio 2015
Introducción
En algunas ocasiones hemos tenido la necesidad de crear bases de datos de forma manual, quizás por automatizar el proceso de creación o porque las políticas de seguridad de la compañía no permitían la ejecución de aplicaciones en entornos visuales y por ende no podíamos ejecutar el utilitario DBCA, etc.
El propósito de esta implementación es indicar el procedimiento a ejecutar para crear un Multitenant Container Database (CDB) de forma manual mediante scripts. Dicho procedimiento se asemeja en varios pasos a la creación de una base de datos como lo hacíamos en las anteriores versiones salvo por algunos pasos adicionales que debemos realizar.
Antes de iniciar con la implementación, recomiendo revisar el siguiente material con la finalidad de tener todos los conceptos sólidos sobre la arquitectura de Oracle Multitenant.
https://docs.oracle.com/database/121/CNCPT/cdblogic.htm
Implementación
El ambiente a implementar está configurado sobre 1 servidor con sistema operativo Oracle Linux 5 Update 10 x64 bits y Oracle Database 12.1.0.2.
El CDB a crear se llamará DEV.
Paso 1
Creamos una carpeta donde se almacenarán los control files, data files y redo logs de nuestro CDB. Posteriormente configuramos la variable ORACLE_SID y crearemos el archivo PFILE.
A continuación se presenta el contenido del archivo initDEV.ora (PFILE).
*.db_name=DEV *.control_files='/u02/oradata/DEV/control01.ctl','/u02/oradata/DEV/control02.ctl','/u02/oradata/DEV/control03.ctl' *.db_block_size=8192 *.memory_target=800M *.undo_tablespace='UNDOTBS1' *.enable_pluggable_database=true |
El parámetro ENABLE_PLUGGABLE_DATABASE es importante que esté configurado con el valor de TRUE, de esta manera indicamos que es una base de datos de tipo CDB.
El valor por defecto del parámetro es FALSE.
Nota: Si contamos con una base de datos CDB y modificamos el parámetro ENABLE_PLUGGABLE_DATABASE al valor de FALSE o dicho parámetro lo retiramos del Parameter File conseguiremos el error: "ORA-65093: multitenant container database not set up properly".
Por ende la base de datos CDB debe tener este parámetro con el valor de TRUE en todo momento.
Una vez creado el PFILE procedemos a subir nuestro CDB a NOMOUNT.
Paso 2
Creamos una carpeta para almacenar el Container SEED. En nuestro caso se ubicará en la ruta: /u02/oradata/DEV/pdbseed.
Posteriormente procedemos a crear el CDB.
Se adjunta el script de creación.
create database DEV maxlogfiles 16 maxlogmembers 3 maxdatafiles 1024 datafile '/u02/oradata/DEV/system01.dbf' size 700M reuse autoextend on next 200M maxsize unlimited extent management local SYSAUX datafile '/u02/oradata/DEV/sysaux01.dbf' size 500M reuse autoextend on next 200M maxsize unlimited smallfile default temporary tablespace TEMP tempfile '/u02/oradata/DEV/temp01.dbf' size 500M reuse autoextend on next 200M maxsize 5G smallfile undo tablespace UNDOTBS1 datafile '/u02/oradata/DEV/undotbs01.dbf' size 500M reuse autoextend on next 200M maxsize 5G CHARACTER SET AL32UTF8 NATIONAL CHARACTER SET AL16UTF16 LOGFILE group 1 ('/u02/oradata/DEV/redo01.log') SIZE 100M, group 2 ('/u02/oradata/DEV/redo02.log') SIZE 100M, group 3 ('/u02/oradata/DEV/redo03.log') SIZE 100M USER SYS IDENTIFIED BY oracle USER SYSTEM IDENTIFIED BY oracle ENABLE PLUGGABLE DATABASE SEED file_name_convert=('/u02/oradata/DEV/system01.dbf','/u02/oradata/DEV/pdbseed/system01.dbf', '/u02/oradata/DEV/sysaux01.dbf','/u02/oradata/DEV/pdbseed/sysaux01.dbf', '/u02/oradata/DEV/temp01.dbf','/u02/oradata/DEV/pdbseed/temp01.dbf', '/u02/oradata/DEV/undotbs01.dbf','/u02/oradata/DEV/pdbseed/undotbs01.dbf'); |
Las opciones:
- ENABLE PLUGGABLE DATABASE, permite crear el container ROOT en conjunto con los CONTROL FILES, REDO LOG Y DATAFILES durante la fase de OPEN.
- SEED, permite indicar donde se almacenarán los data files para el container SEED. Si utilizamos OMF o el parámetro PDB_FILE_NAME_CONVERT podemos ignorar esta opción.
Finalizado el paso 2 debemos modificar el parámetro oculto: "_oracle_script" al valor de TRUE a nivel de sesión.
Luego debemos cerrar y abrir el PDB SEED.
Procedemos a ejecutar el siguiente script:
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/perl/bin/:$PATH SQL> @?/rdbms/admin/catcdb.sql
El script permite instalar todas los componentes (APEX, Oracle OLAP, Oracle Database Vault, Oracle Label Security, etc) disponibles en el CDB.
El CDB debería contar con todos los componentes instalados para evitar el error ORA-1917.
Mayor detalle en: My Oracle Support (MOS) Nota: 1962134.1 (ORA-1917: user or role 'PDB_DBA' does not exist When Trying to Create Pluggable Database (PDB))
Nota 1: El BUG 17033183 apareció en la primera versión del Release 12c; en el cual el script catcdb.sql no venía incluido como parte de la instalación del software de Oracle Database.
Mayor detalle en: My Oracle Support (MOS) Nota: 17033183.8 (Bug 17033183 - Withdrawn fix - superseded by 17316776).
Nota 2: La redefinición de la variable PATH está documentado en: My Oracle Support (MOS) Nota: 1964089.1 (ORA-01917 While Creating Pluggable Database).
Una vez ejecutado el script, nuestro CDB estaría listo para albergar PDBs como se verá a continuación.
Paso 4
Es importante que tengamos presente las siguientes recomendaciones:
- El tablespace permanente y temporal del CDB deben ser de uso exclusivo.
- Asignar un nuevo tablespace permanente y temporal por defecto a cada PDB de uso exclusivo.
create pluggable database PDB_DESA admin user friccio identified by oracle roles=(DBA) file_name_convert=('/u02/oradata/DEV/pdbseed','/u02/oradata/DEV/PDB_DESA'); |
Creamos los tablespace permanente y temporal para configurarlos como defectos del PDB.
Conclusión
Este material ha permitido entregar todos los pasos necesarios para crear un Multitenant Container Database (CDB) desde la consola SQL Plus vía scripts demostrando lo simple y práctico del proceso.
A pesar de ello, es importante aclarar que el uso del utilitario DBCA para la creación de CDB y NO-CDB debería ser nuestra primera opción para evitar errores humanos en el procedimiento.
No hay comentarios:
Publicar un comentario