控制文件记录着数据库的重要信息,包括例如数据库标识(参数DB_NAME或者在使用CREATE DATABASE 语句创建时使用的名称)、数据文件和
控制文件记录着数据库的重要信息,包括例如数据库标识(参数DB_NAME或者在使用CREATE DATABASE 语句创建时使用的名称)、数据文件和重做日志文件的名称与位置、创建数据库的时间戳、添加或删除表空间信息、检查点信息、归档信息、备份信息等等,如果在打开的时候没有控制文件将会失败,如果在运行过程中控制文件出现异常那么数据库将立即崩溃,,由此可见控制文件是多么重要,控制文件只能有Oracle服务器来操作读写。控制文件建议做多路副本和备份。动态性能视图V$CONTROLFILE_RECORD_SECTION记录着控制文件包含的内容和信息,其他的一些性能视图比如V$DATAFILE、V$LOG等等将会从该视图获取必要的信息。
0. 如何增加一个控制文件
sys@ > column name format a50
sys@ > show parameter control
NAME TYPE VALUE
------------------------------------ -------- ------------------------------
control_file_record_keep_time integer 7
control_files string /u01/oracle/9i/oradata/gt9i/co
ntrol01.ctl, /u01/oracle/9i/or
adata/gt9i/control02.ctl, /u01
/oracle/9i/oradata/gt9i/contro
l03.ctl
sys@ > select * from v$controlfile;
STATUS NAME
------- --------------------------------------------------
/u01/oracle/9i/oradata/gt9i/control01.ctl
/u01/oracle/9i/oradata/gt9i/control02.ctl
/u01/oracle/9i/oradata/gt9i/control03.ctl
sys@ > create pfile='/u01/oracle/gt9i.ora' from spfile;
File created.
sys@ > shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
然后通过操作系统命令复制一个现有的控制文件,修改pfile增加新的控制文件位置即可:
[oracle@ gt9i]$ ll control*
-rw-r----- 1 oracle oinstall 2023424 4月 11 15:06 control01.ctl
-rw-r----- 1 oracle oinstall 2023424 4月 11 15:06 control02.ctl
-rw-r----- 1 oracle oinstall 2023424 4月 11 15:06 control03.ctl
[oracle@ gt9i]$ cp control01.ctl controlTEST.ctl
[oracle@ gt9i]$ ll control*
-rw-r----- 1 oracle oinstall 2023424 4月 11 15:06 control01.ctl
-rw-r----- 1 oracle oinstall 2023424 4月 11 15:06 control02.ctl
-rw-r----- 1 oracle oinstall 2023424 4月 11 15:06 control03.ctl
-rw-r----- 1 oracle oinstall 2023424 4月 11 15:23 controlTEST.ctl
vi /u01/oracle/gt91.ora
修改控制文件配置成如下:
*.control_files='/u01/oracle/9i/oradata/gt9i/controlTEST.ctl','/u01/oracle/9i/oradata/gt9i/control01.ctl','/u01/oracle/9i/oradata/gt9i/control02.ctl','/u01/oracle/9i/oradata/gt9i/control03.ctl'
上述第1个就是我们刚刚添加的控制文件,现在可以使用pfile来打开数据库。
sys@ > startup pfile='/u01/oracle/gt9i.ora'
ORACLE instance started.
Total System Global Area 286752136 bytes
Fixed Size 740744 bytes
Variable Size 150994944 bytes
Database Buffers 134217728 bytes
Redo Buffers 798720 bytes
Database mounted.
Database opened.
sys@ > show parameter control
NAME TYPE VALUE
------------------------------------ -------- ------------------------------
control_file_record_keep_time integer 7
control_files string /u01/oracle/9i/oradata/gt9i/co
ntrolTEST.ctl, /u01/oracle/9i/
oradata/gt9i/control01.ctl, /u
01/oracle/9i/oradata/gt9i/cont
rol02.ctl, /u01/oracle/9i/orad
ata/gt9i/control03.ctl
sys@ > select * from v$controlfile;
STATUS NAME
------- --------------------------------------------------
/u01/oracle/9i/oradata/gt9i/controlTEST.ctl
/u01/oracle/9i/oradata/gt9i/control01.ctl
/u01/oracle/9i/oradata/gt9i/control02.ctl
/u01/oracle/9i/oradata/gt9i/control03.ctl
可以看到现在在用的控制文件有了4个。
1. 如何删除一个控制文件
增加控制文件的一个反转操作即可。略。
2. 如何备份控制文件
两种方式备份,备份为trace文本文件,可以使用文本编辑器打开直接编辑;或者备份为二进制文件。
sys@ > alter database backup controlfile to trace as '/u01/oracle/gt9icontrol.trc';
Database altered.
sys@ > alter database backup controlfile to '/u01/oracle/gt9icontrol.ctl';
Database altered.