什么是控制文件?

控制文件是用于描述物理数据库当前状态的二进制文件。
丢失控制文件则数据库无法使用,必须加以修复。
数据库加载阶段需要根据控制文件中的信息判断数据库的状态。
控制文件很重要,所以应该设置多份拷贝(通常为3份)。
 
控制文件的内容:

1,数据库名字和标识符
2,数据库创建时间戳
3,表空间名字 (添加或删除表空间时记录)
4,数据文件和redo日志文件的名字和位置
5,当前redo日志文件序列号 (做log switch时记录)
6,检查点信息 (做checkpoint时记录)
7,undo段的起始点和结束点
8,redo日志归档信息 (日志归档时记录)
9,备份信息 (由RMAN负责维护)
 
通过spfile复制控制文件:

1,修改spfile
   SQL> alter system set control files = '$ORACLE_BASE/oradata/gldb/control01.ctl','$ORACLE_BASE/oradata/gldb/control01.ctl' scope=spfile;
2,关闭数据库
   SQL> shutdown normal;
3,复制控制文件
   $ cp $ORACLE_BASE/oradata/gldb/control01.ctl $ORACLE_BASE/oradata/gldb/control01.ctl
4,启动数据库
   SQL> startup;
 
当然,通过修改pfile实现也可以。
 
查看control file信息:
 
SQL> select name from v$controlfile;
NAME
--------------------------------------------------------------------------------
/home/oracle/oradata/gldb/control01.ctl
/home/oracle/oradata/gldb/control02.ctl
/home/oracle/oradata/gldb/control03.ctl
SQL>  select value from v$parameter where name='control_files';    
VALUE
--------------------------------------------------------------------------------
/home/oracle/oradata/gldb/control01.ctl, /home/oracle/oradata/gldb/control02.ctl
, /home/oracle/oradata/gldb/control03.ctl

SQL> show parameters control_files;
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
control_files                        string      /home/oracle/oradata/gldb/cont
                                                 rol01.ctl, /home/oracle/oradat
                                                 a/gldb/control02.ctl, /home/or
                                                 acle/oradata/gldb/control03.ct
                                                 l