控制文件是oracle数据库中最重要的文件之一。它记录了数据库的名称及其他关键配置,也记录了当前数据库中所有的数据文件和日志文件的位置及状态等重要信息,是数据库启动过程中必须查找并且使用的关键文件。默认情况下,数据库中有两个控制文件,并且这两个控制文件的内容和大小一致。在生产环境中,一般会建设多个控制文件副本,分别放在不同磁盘上。需要注意的是,不管数据库有多少控制文件,数据库在启动时,会检查所有控制文件,这些控制文件的内容只有全部一致并且没有受损,数据库才能成功启动。
方法一:
-
查看数据库当前的控制文件
SQL> show parameter control_files;
NAME TYPE VALUE
-------------------- ----------- ------------------------------
control_files string /u01/app/oracle/oradata/orcl/control01.ctl,
/u01/app/oracle/oradata/orcl/control02.ctl
2. 修改控制文件
SQL> alter system set control_files='/u01/app/oracle/oradata/orcl/control01.ctl','/u01/app/oracle/oradata/orcl/control02.ctl','/u01/app/oracle/control/control03.ctl' scope=spfile;
System altered.
3.一致性关闭数据库
SQL> shutdown immediate;
4.在操作系统复制控制文件到相应目录
[oracle@ymm oracle]$ cp /u01/app/oracle/oradata/orcl/control01.ctl /u01/app/oracle/control/control03.ctl
5.启动数据库
SQL> startup;
6. 查看数据库当前的控制文件
SQL> show parameter control_files;
NAME TYPE VALUE
---------------------- ----------- ------------------------------
control_files string /u01/app/oracle/oradata/orcl/control01.ctl,
/u01/app/oracle/oradata/orcl/control02.ctl,
/u01/app/oracle/control/control03.ctl
方法二:修改参数文件pfile
-
生成pfile参数文件
SQL> show parameter spfile;
NAME TYPE VALUE
------------------- ----------- ------------------------------------------------------------------
spfile string /u01/app/oracle/product/11.2.0/dbhome_1/dbs/spfileorcl.ora
SQL> create pfile from spfile;
File created.
默认情况下,pfile和spfile都存放在$ORACLE_HOME/dbs目录下。pfile以init开头,spfile以spfile开头。
2.一致性关闭数据库
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
3.修改pfile中控制文件参数
[oracle@ymm dbs]$ vi initorcl.ora
4.复制控制文件副本
[oracle@ymm control]$ cp control03.ctl control04.ctl --我是在相对路径下copy的,不需要加路径
[oracle@ymm control]$ ls
control03.ctl control04.ctl
5.重新生成spfile并启动数据库
SQL> create spfile from pfile;
File created.
SQL> startup;
ORACLE instance started.
Total System Global Area 730714112 bytes
Fixed Size 2231952 bytes
Variable Size 239075696 bytes
Database Buffers 482344960 bytes
Redo Buffers 7061504 bytes
Database mounted.
Database opened.
6.查看控制文件情况
SQL> show parameter control_files;
NAME TYPE VALUE
-------------------- ----------- ------------------------------
control_files string /u01/app/oracle/oradata/orcl/control01.ctl,
/u01/app/oracle/oradata/orcl/control02.ctl,
/u01/app/oracle/control/control03.ctl,
/u01/app/oracle/control/control04.ctl