Creating Control file of Container database including PDBs in Oracle

Example of creating the control file of Container Oracle Database including PDBs

Following is the Trace file generated from the container Oracle database which having PDBs. You can use this file to modified and generated your controlfile path as you found in yours ORADATA folder. You need to modified the Path for Redo logs, Datafiles, temp files as you need and generate the new control file by using this example.

Example of XE database having PDBs. It help to create controlfile of any database:

-- The following are current System-scope REDO Log Archival related
-- parameters and can be included in the database initialization file.
--
-- LOG_ARCHIVE_DEST=''
-- LOG_ARCHIVE_DUPLEX_DEST=''
--
-- LOG_ARCHIVE_FORMAT=ARC%S_%R.%T
--
-- DB_UNIQUE_NAME="XE"
--
-- LOG_ARCHIVE_CONFIG='SEND, RECEIVE, NODG_CONFIG'
-- LOG_ARCHIVE_MAX_PROCESSES=4
-- ARCHIVE_LAG_TARGET=900
-- STANDBY_FILE_MANAGEMENT=MANUAL
-- FAL_CLIENT=''
-- FAL_SERVER=TESTDR
--
-- LOG_ARCHIVE_DEST_1='LOCATION=C:\oracle\archive'
-- LOG_ARCHIVE_DEST_1='OPTIONAL REOPEN=300 NODELAY'
-- LOG_ARCHIVE_DEST_1='ARCH NOAFFIRM NOVERIFY SYNC'
-- LOG_ARCHIVE_DEST_1='REGISTER'
-- LOG_ARCHIVE_DEST_1='NOALTERNATE'
-- LOG_ARCHIVE_DEST_1='NODEPENDENCY'
-- LOG_ARCHIVE_DEST_1='NOMAX_FAILURE NOQUOTA_SIZE NOQUOTA_USED NODB_UNIQUE_NAME'
-- LOG_ARCHIVE_DEST_1='VALID_FOR=(PRIMARY_ROLE,ONLINE_LOGFILES)'
-- LOG_ARCHIVE_DEST_STATE_1=ENABLE

--
-- Below are two sets of SQL statements, each of which creates a new
-- control file and uses it to open the database. The first set opens
-- the database with the NORESETLOGS option and should be used only if
-- the current versions of all online logs are available. The second
-- set opens the database with the RESETLOGS option and should be used
-- if online logs are unavailable.
-- The appropriate set of statements can be copied from the trace into
-- a script file, edited as necessary, and executed when there is a
-- need to re-create the control file.
--
-- Set #1. NORESETLOGS case
--
-- The following commands will create a new control file and use it
-- to open the database.
-- Data used by Recovery Manager will be lost.
-- Additional logs may be required for media recovery of offline
-- Use this only if the current versions of all online logs are
-- available.

-- After mounting the created controlfile, the following SQL
-- statement will place the database in the appropriate
-- protection mode:
-- ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PERFORMANCE

STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "XE" NORESETLOGS ARCHIVELOG
MAXLOGFILES 40
MAXLOGMEMBERS 5
MAXDATAFILES 1024
MAXINSTANCES 8
MAXLOGHISTORY 584
LOGFILE
GROUP 1 (
'C:\ORACLE\ORADATA\XE\REDO011.LOG',
'C:\ORACLE\ORADATA\XE\REDO012.LOG',
'C:\ORACLE\ORADATA\XE\REDO013.LOG',
'C:\ORACLE\ORADATA\XE\REDO014.LOG',
'C:\ORACLE\ORADATA\XE\REDO015.LOG'
) SIZE 200M BLOCKSIZE 512,
GROUP 2 'C:\ORACLE\ORADATA\XE\REDO02.LOG' SIZE 200M BLOCKSIZE 512,
GROUP 3 'C:\ORACLE\ORADATA\XE\REDO03.LOG' SIZE 200M BLOCKSIZE 512,
GROUP 4 'C:\ORACLE\ORADATA\XE\REDO04.LOG' SIZE 200M BLOCKSIZE 512,
GROUP 5 'C:\ORACLE\ORADATA\XE\REDO05.LOG' SIZE 200M BLOCKSIZE 512,
GROUP 6 'C:\ORACLE\ORADATA\XE\REDO06.LOG' SIZE 200M BLOCKSIZE 512,
GROUP 7 'C:\ORACLE\ORADATA\XE\REDO07.LOG' SIZE 200M BLOCKSIZE 512,
GROUP 8 'C:\ORACLE\ORADATA\XE\REDO08.LOG' SIZE 200M BLOCKSIZE 512
-- STANDBY LOGFILE
DATAFILE
'C:\ORACLE\ORADATA\XE\SYSTEM01.DBF',
'C:\ORACLE\ORADATA\XE\SYSAUX01.DBF',
'C:\ORACLE\ORADATA\XE\UNDOTBS01.DBF',
'C:\ORACLE\ORADATA\XE\PDBSEED\SYSTEM01.DBF',
'C:\ORACLE\ORADATA\XE\PDBSEED\SYSAUX01.DBF',
'C:\ORACLE\ORADATA\XE\USERS01.DBF',
'C:\ORACLE\ORADATA\XE\PDBSEED\UNDOTBS01.DBF',
'C:\ORACLE\ORADATA\XE\XEPDB1\SYSTEM01.DBF',
'C:\ORACLE\ORADATA\XE\XEPDB1\SYSAUX01.DBF',
'C:\ORACLE\ORADATA\XE\XEPDB1\UNDOTBS01.DBF',
'C:\ORACLE\ORADATA\XE\XEPDB1\USERS01.DBF',
'C:\ORACLE\ORADATA\XE\PDB1\SYSTEM01.DBF',
'C:\ORACLE\ORADATA\XE\PDB1\SYSAUX01.DBF',
'C:\ORACLE\ORADATA\XE\PDB1\UNDOTBS01.DBF',
'C:\ORACLE\ORADATA\XE\PDB1\USERS01.DBF',
'C:\ORACLE\ORADATA\XE\PDB2\SYSTEM01.DBF',
'C:\ORACLE\ORADATA\XE\PDB2\SYSAUX01.DBF',
'C:\ORACLE\ORADATA\XE\PDB2\UNDOTBS01.DBF',
'C:\ORACLE\ORADATA\XE\PDB2\USERS01.DBF',
'C:\ORACLE\ORADATA\XE\PDB2\TEST_TB01.DBF'
CHARACTER SET AL32UTF8
;

-- Commands to re-create incarnation table
-- Below log names MUST be changed to existing filenames on
-- disk. Any one log file from each branch can be used to
-- re-create incarnation records.
-- ALTER DATABASE REGISTER LOGFILE 'C:\ORACLE\ARCHIVE\ARC0000000001_1020770292.0001';
-- Recovery is required if any of the datafiles are restored backups,
-- or if the last shutdown was not normal or immediate.
RECOVER DATABASE

-- All logs need archiving and a log switch is needed.
ALTER SYSTEM ARCHIVE LOG ALL;

-- Database can now be opened normally.
ALTER DATABASE OPEN;

-- Open all the PDBs.
ALTER PLUGGABLE DATABASE ALL OPEN;

-- Commands to add tempfiles to temporary tablespaces.
-- Online tempfiles have complete space information.
-- Other tempfiles may require adjustment.
ALTER TABLESPACE TEMP ADD TEMPFILE 'C:\ORACLE\ORADATA\XE\TEMP01.DBF'
SIZE 135266304 REUSE AUTOEXTEND ON NEXT 655360 MAXSIZE 32767M;
ALTER SESSION SET CONTAINER = PDB$SEED;
ALTER TABLESPACE TEMP ADD TEMPFILE 'C:\ORACLE\ORADATA\XE\PDBSEED\TEMP012019-09-18_15-38-03-475-PM.DBF'
SIZE 65011712 REUSE AUTOEXTEND ON NEXT 655360 MAXSIZE 32767M;
ALTER SESSION SET CONTAINER = XEPDB1;
ALTER TABLESPACE TEMP ADD TEMPFILE 'C:\ORACLE\ORADATA\XE\XEPDB1\TEMP01.DBF'
SIZE 135266304 REUSE AUTOEXTEND ON NEXT 655360 MAXSIZE 32767M;
ALTER SESSION SET CONTAINER = PDB1;
ALTER TABLESPACE TEMP ADD TEMPFILE 'C:\ORACLE\ORADATA\XE\PDB1\TEMP012019-09-18_15-38-03-475-PM.DBF' REUSE;
ALTER SESSION SET CONTAINER = PDB2;
ALTER TABLESPACE TEMP ADD TEMPFILE 'C:\ORACLE\ORADATA\XE\PDB2\TEMP012019-09-18_15-38-03-475-PM.DBF' REUSE;
ALTER SESSION SET CONTAINER = CDB$ROOT;
-- End of tempfile additions.
--
-- Set #2. RESETLOGS case
--
-- The following commands will create a new control file and use it
-- to open the database.
-- Data used by Recovery Manager will be lost.
-- The contents of online logs will be lost and all backups will
-- be invalidated. Use this only if online logs are damaged.

-- After mounting the created controlfile, the following SQL
-- statement will place the database in the appropriate
-- protection mode:
-- ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PERFORMANCE

STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "XE" RESETLOGS ARCHIVELOG
MAXLOGFILES 40
MAXLOGMEMBERS 5
MAXDATAFILES 1024
MAXINSTANCES 8
MAXLOGHISTORY 584
LOGFILE
GROUP 1 (
'C:\ORACLE\ORADATA\XE\REDO011.LOG',
'C:\ORACLE\ORADATA\XE\REDO012.LOG',
'C:\ORACLE\ORADATA\XE\REDO013.LOG',
'C:\ORACLE\ORADATA\XE\REDO014.LOG',
'C:\ORACLE\ORADATA\XE\REDO015.LOG'
) SIZE 200M BLOCKSIZE 512,
GROUP 2 'C:\ORACLE\ORADATA\XE\REDO02.LOG' SIZE 200M BLOCKSIZE 512,
GROUP 3 'C:\ORACLE\ORADATA\XE\REDO03.LOG' SIZE 200M BLOCKSIZE 512,
GROUP 4 'C:\ORACLE\ORADATA\XE\REDO04.LOG' SIZE 200M BLOCKSIZE 512,
GROUP 5 'C:\ORACLE\ORADATA\XE\REDO05.LOG' SIZE 200M BLOCKSIZE 512,
GROUP 6 'C:\ORACLE\ORADATA\XE\REDO06.LOG' SIZE 200M BLOCKSIZE 512,
GROUP 7 'C:\ORACLE\ORADATA\XE\REDO07.LOG' SIZE 200M BLOCKSIZE 512,
GROUP 8 'C:\ORACLE\ORADATA\XE\REDO08.LOG' SIZE 200M BLOCKSIZE 512
-- STANDBY LOGFILE
DATAFILE
'C:\ORACLE\ORADATA\XE\SYSTEM01.DBF',
'C:\ORACLE\ORADATA\XE\SYSAUX01.DBF',
'C:\ORACLE\ORADATA\XE\UNDOTBS01.DBF',
'C:\ORACLE\ORADATA\XE\PDBSEED\SYSTEM01.DBF',
'C:\ORACLE\ORADATA\XE\PDBSEED\SYSAUX01.DBF',
'C:\ORACLE\ORADATA\XE\USERS01.DBF',
'C:\ORACLE\ORADATA\XE\PDBSEED\UNDOTBS01.DBF',
'C:\ORACLE\ORADATA\XE\XEPDB1\SYSTEM01.DBF',
'C:\ORACLE\ORADATA\XE\XEPDB1\SYSAUX01.DBF',
'C:\ORACLE\ORADATA\XE\XEPDB1\UNDOTBS01.DBF',
'C:\ORACLE\ORADATA\XE\XEPDB1\USERS01.DBF',
'C:\ORACLE\ORADATA\XE\PDB1\SYSTEM01.DBF',
'C:\ORACLE\ORADATA\XE\PDB1\SYSAUX01.DBF',
'C:\ORACLE\ORADATA\XE\PDB1\UNDOTBS01.DBF',
'C:\ORACLE\ORADATA\XE\PDB1\USERS01.DBF',
'C:\ORACLE\ORADATA\XE\PDB2\SYSTEM01.DBF',
'C:\ORACLE\ORADATA\XE\PDB2\SYSAUX01.DBF',
'C:\ORACLE\ORADATA\XE\PDB2\UNDOTBS01.DBF',
'C:\ORACLE\ORADATA\XE\PDB2\USERS01.DBF',
'C:\ORACLE\ORADATA\XE\PDB2\TEST_TB01.DBF'
CHARACTER SET AL32UTF8
;

-- Commands to re-create incarnation table
-- Below log names MUST be changed to existing filenames on
-- disk. Any one log file from each branch can be used to
-- re-create incarnation records.
-- ALTER DATABASE REGISTER LOGFILE 'C:\ORACLE\ARCHIVE\ARC0000000001_1020770292.0001';
-- Recovery is required if any of the datafiles are restored backups,
-- or if the last shutdown was not normal or immediate.
RECOVER DATABASE USING BACKUP CONTROLFILE

-- Database can now be opened zeroing the online logs.
ALTER DATABASE OPEN RESETLOGS;

-- Open all the PDBs.
ALTER PLUGGABLE DATABASE ALL OPEN;

-- Commands to add tempfiles to temporary tablespaces.
-- Online tempfiles have complete space information.
-- Other tempfiles may require adjustment.
ALTER TABLESPACE TEMP ADD TEMPFILE 'C:\ORACLE\ORADATA\XE\TEMP01.DBF'
SIZE 135266304 REUSE AUTOEXTEND ON NEXT 655360 MAXSIZE 32767M;
ALTER SESSION SET CONTAINER = PDB$SEED;
ALTER TABLESPACE TEMP ADD TEMPFILE 'C:\ORACLE\ORADATA\XE\PDBSEED\TEMP012019-09-18_15-38-03-475-PM.DBF'
SIZE 65011712 REUSE AUTOEXTEND ON NEXT 655360 MAXSIZE 32767M;
ALTER SESSION SET CONTAINER = XEPDB1;
ALTER TABLESPACE TEMP ADD TEMPFILE 'C:\ORACLE\ORADATA\XE\XEPDB1\TEMP01.DBF'
SIZE 135266304 REUSE AUTOEXTEND ON NEXT 655360 MAXSIZE 32767M;
ALTER SESSION SET CONTAINER = PDB1;
ALTER TABLESPACE TEMP ADD TEMPFILE 'C:\ORACLE\ORADATA\XE\PDB1\TEMP012019-09-18_15-38-03-475-PM.DBF' REUSE;
ALTER SESSION SET CONTAINER = PDB2;
ALTER TABLESPACE TEMP ADD TEMPFILE 'C:\ORACLE\ORADATA\XE\PDB2\TEMP012019-09-18_15-38-03-475-PM.DBF' REUSE;
ALTER SESSION SET CONTAINER = CDB$ROOT;
-- End of tempfile additions.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.