Oracle maintains control file Controlfile related scripts (moving, adding, deleting, multiplexing operations)
-- 1- When the database uses the PFILE parameter file, use this method to maintain the control file
-- 1.1 View the parameter file type used by the current database
SQL> SHOW PARAMETER PFILE; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ spfile string /home/oracle/product/11gR2/dbs/spfileora11g.ora
SQL> SHOW PARAMETER SPFILE; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ spfile string /home/oracle/product/11gR2/dbs/spfileora11g.ora
-- 1.2 View the current database control file layout status
SQL> SELECT NAME FROM V$CONTROLFILE; NAME -------------------------------------------------------------------------------- /home/oracle/product/oradata/ora11g/control01.ctl /home/oracle/product/fast_recovery_area/ora11g/control04.ctl /home/oracle/product/oradata/ora11g/control02.ctl /home/oracle/product/oradata/ora11g/control03.ctl /home/oracle/backup/controlfile/control05.ctl /home/oracle/backup/controlfile/control06.ctl /home/oracle/backup/controlfile/control07.ctl 7 rows selected
SQL> SELECT VALUE FROM V$PARAMETER WHERE NAME = 'control_files'; VALUE -------------------------------------------------------------------------------- /home/oracle/product/oradata/ora11g/control01.ctl, /home/oracle/product/fast_rec
-- 1.3 Close the database and modify the dynamic parameter file PFILE (if the current database uses the PFILE parameter file)
SQL> shutdown immediate
control_files=("/home/oracle/product/oradata/ora11g/control01.ctl", "/home/oracle/product/fast_recovery_area/ora11g/control04.ctl", "/home/oracle/product/oradata/ora11g/control02.ctl", "/home/oracle/product/oradata/ora11g/control03.ctl", "/home/oracle/backup/controlfile/control05.ctl", "/home/oracle/backup/controlfile/control06.ctl")
-- 1.4 Multi-copy control files at the operating system level to make it consistent with the plan
$ cp /home/oracle/product/oradata/ora11g/control01.ctl /home/oracle/product/oradata/ora11g/control02.ctl $ cp /home/oracle/product/oradata/ora11g/control01.ctl /home/oracle/product/oradata/ora11g/control03.ctl $ cp /home/oracle/product/oradata/ora11g/control01.ctl /home/oracle/backup/controlfile/control05.ctl $ cp /home/oracle/product/oradata/ora11g/control01.ctl /home/oracle/backup/controlfile/control06.ctl $ cp /home/oracle/product/oradata/ora11g/control01.ctl /home/oracle/backup/controlfile/control07.ctl
-- 1.5 Start the database using the PFILE parameter file
SQL> STARTUP PFILE = '/home/oracle/product/admin/ora11g/pfile/init.ora';
-- 1.6 Create SPFILE file based on PFILE parameter file
SQL> CREATE SPFILE FROM PFILE;
-- 1.7 Restart the database using a static parameter file
SQL> SHUTDOWN IMMEDIATE; SQL> STARTUP
-- 2- When the database uses the SPFILE parameter file, use this method to maintain the control file
-- 2.1 View the parameter file type used by the current database
SQL> SHOW PARAMETER PFILE; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ spfile string /home/oracle/product/11gR2/dbs/spfileora11g.ora
SQL> SHOW PARAMETER SPFILE; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ spfile string /home/oracle/product/11gR2/dbs/spfileora11g.ora
-- 2.2 View the current database control file layout status
SQL> SELECT NAME FROM V$CONTROLFILE; NAME -------------------------------------------------------------------------------- /home/oracle/product/oradata/ora11g/control01.ctl /home/oracle/product/fast_recovery_area/ora11g/control04.ctl /home/oracle/product/oradata/ora11g/control02.ctl /home/oracle/product/oradata/ora11g/control03.ctl /home/oracle/backup/controlfile/control05.ctl /home/oracle/backup/controlfile/control06.ctl /home/oracle/backup/controlfile/control07.ctl 7 rows selected
-- 2.3 Use the ALTER SYSTEM command to modify the control file information as the SYS DBA user
ALTER SYSTEM SET control_files = '/home/oracle/product/oradata/ora11g/control01.ctl', '/home/oracle/product/fast_recovery_area/ora11g/control04.ctl', '/home/oracle/product/oradata/ora11g/control02.ctl', '/home/oracle/product/oradata/ora11g/control03.ctl', '/home/oracle/backup/controlfile/control05.ctl', '/home/oracle/backup/controlfile/control06.ctl', '/home/oracle/backup/controlfile/control07.ctl' SCOPE = spfile;
-- 2.4 Close the database
SQL> SHUTDOWN IMMEDIATE;
-- 2.5 Multi-copy control files at the operating system level to make it consistent with the plan
$ cp /home/oracle/product/oradata/ora11g/control01.ctl /home/oracle/product/oradata/ora11g/control02.ctl $ cp /home/oracle/product/oradata/ora11g/control01.ctl /home/oracle/product/oradata/ora11g/control03.ctl $ cp /home/oracle/product/oradata/ora11g/control01.ctl /home/oracle/backup/controlfile/control05.ctl $ cp /home/oracle/product/oradata/ora11g/control01.ctl /home/oracle/backup/controlfile/control06.ctl $ cp /home/oracle/product/oradata/ora11g/control01.ctl /home/oracle/backup/controlfile/control07.ctl
-- 2.6 Start the database and create PFILE based on SPFILE
SQL> STARTUP; SQL> CREATE PFILE FROM SPFILE;