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.