Crear una Base de Datos Oracle Multitenant en Modo Silencioso
Consejo Breve
Podemos usar el programa dbca para crear una instancia en Oracle 19c multitenant de una forma similar a la que acostumbramos en versiones no multitenant.
Archivo de Respuesta
Se requiere preparar un archivo de respuesta similiar a este, que incluya los parametros createAsContainerDatabase=true
y numberOfPDBs=0
para generar solamente el contenedor multitenant y posteriormente crear una base de datos pluggable.
sid=patodb
gdbName=patodb
createAsContainerDatabase=true
numberOfPDBs=0
databaseConfigType=SINGLE
databaseType=MULTIPURPOSE
templateName={ORACLE_HOME}/assistants/dbca/templates/General_Purpose.dbc
datafileJarLocation={ORACLE_HOME}/assistants/dbca/templates/
datafileDestination=/oradata/cdbs
storageType=FS
redoLogFileSize=64
useLocalUndoForPDBs=false
enableArchive=true
recoveryAreaDestination=/oradata/recovery
recoveryAreaSize=10240
memoryMgmtType=AUTO
totalMemory=2048
createListener=LISTENER:1521
characterSet=AL32UTF8
nationalCharacterSet=AL16UTF16
sysPassword=********
systemPassword=********
sampleSchema=false
initParams=log_archive_format=%t_%s_%r.arc
Aquí también incluí otro parámetro multitenant useLocalUndoForPDBs=false
ya que quiero un solo tablespace UNDO compartido entre la CDB raíz y las PDBs.
Crear el Contenedor y la Base de Datos Pluggable
Entonces ya puedes ejecutar el comando dbca -silent -createDatabase -responseFile
como siempre:
[oracle@patoracle ~]$ dbca -silent -createDatabase -responseFile ./dbcreate.rsp
Prepare for db operation
10% complete
Copying database files
40% complete
Creating and starting Oracle instance
42% complete
46% complete
52% complete
56% complete
60% complete
Completing Database Creation
66% complete
69% complete
70% complete
Executing Post Configuration Actions
100% complete
Database creation complete. For details check the logfiles at:
/opt/oracle/cfgtoollogs/dbca/patodb.
Database Information:
Global Database Name:patodb
System Identifier(SID):patodb
Look at the log file "/opt/oracle/cfgtoollogs/dbca/patodb/patodb.log" for further details.
[oracle@patoracle ~]$
Y cuando tu instancia esté funcionando puedes crear la Base de Datos Pluggable de esta forma:
[oracle@patoracle ~]$ sqlplus / as sysdba
SQL> CREATE PLUGGABLE DATABASE taller
ADMIN USER pato IDENTIFIED BY ********
ROLES = (dba)
STORAGE (MAXSIZE 2G)
DEFAULT TABLESPACE datos DATAFILE '/oradata/pdbs/taller/datos.dbf' SIZE 250M AUTOEXTEND ON
PATH_PREFIX = '/oradata/pdbs/taller/'
FILE_NAME_CONVERT = ('/oradata/cdbs/PATODB/pdbseed/', '/oradata/pdbs/taller/');
Pluggable database created.
SQL> ALTER PLUGGABLE DATABASE taller OPEN;
Pluggable database altered.
SQL> ALTER PLUGGABLE DATABASE taller SAVE STATE;
Pluggable database altered.
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 TALLER READ WRITE NO
hay que notar que las bases de datos pluggable son clonadas a partir del PDB$SEED
así que tal vez requieras hacer conversión de nombres de ser necesario para cumplir tus estándares.