一.控制文件作用:
1.记录了数据库的物理状态。
2.维护数据库的一致性。控制文件中记录了数据库系统scn号、数据文件scn号与数据文件头里的开始scn号,如果这三个scn号一致说明数据库可以启动。如果不一致就要恢复。
3.在参数文件中定义控制文件的位置和个数。 控制文件最少1个,最多8个,多个文件是镜像的关系。 定义控制文件 *.control_files='/opt/oracle/oradata/orcl/control01.ctl','/opt/oracle/oradata/orcl/control02.ctl','/opt/oracle/oradata/orcl/control03.ctl'
4.控制文件是二进制文件 一般不超过100m。
5.数据库从mount阶段开始使用控制文件,
6.控制文件只能连接一个数据库。
7.丢失了要恢复
二.控制文件包含以下内容:
数据库名字和标识符(DB ID) 数据库创建的时间戳表空间的名字数据文件和联机重做日志文件的位置和名字当前联机重做日志文件的sequence号码检查点信息回滚段的开始和结束联机重做日志的归档信息备份信息
三.转储控制文件:
由于控制文件是个二进制文件,无法直接打开查阅,但是通过上一章介绍的如下命令可以将控制文件内容转储出来便于查看: alter session set events 'immediate trace name controlf level 12'; 以下是来自Oracle Database 11g的转储测试: SQL> alter session set events 'immediate trace name controlf level 12'; Session altered. #备份控制文件到trace文件中 SQL> alter database backup controlfile to trace;
Database altered.
SQL> select value from v$diag_info where name='Default Trace File'; VALUE -------------------------------------------------------------------------------- /u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_4929.trc
注意:从11g 开始,可以通过v$diag_info 获得当前会话转储文件的名称。
四.控制文件检查数据库的一致性:
1.控制文件中记录了数据库系统scn号、数据文件scn号与数据文件头列里的开始scn号,如果这三个scn号一致说明数据库可以启动。如果不一致就要恢复。 #系统scn号 SQL> select checkpoint_change# from v$database;
CHECKPOINT_CHANGE# ------------------ 469717 #文件scn号 SQL> select checkpoint_change# from v$datafile;
CHECKPOINT_CHANGE# ------------------ 469717 469717 469717 469717
开始scn号 SQL> select checkpoint_change# from v$datafile_header;
CHECKPOINT_CHANGE# ------------------ 469717 469717 469717 469717
2.scn号与时间的转换: #全局检查点 SQL> alter system checkpoint;
System altered. #创建一个函数 SQL> create or replace function scn_to_timestamp(query_scn in NUMBER) return TIMESTAMP IS EXTERNAL NAME "ktfexscntot" WITH CONTEXT PARAMETERS (context ,query_scn OCINUMBER,RETURN) LIBRARY DBMS_TRAN_LIB; / 2 3 4 5 6 7 8 9
Function created. #系统scn SQL> select checkpoint_change# from v$database;
CHECKPOINT_CHANGE# ------------------ 473363 #scn转成时间 SQL> select scn_to_timestamp(473363) from dual;
SCN_TO_TIMESTAMP(473363) --------------------------------------------------------------------------- 16-JUN-14 06.16.14.000000000 AM
#时间转成scn SQL> select timestamp_to_scn('16-JUN-14 06.16.14.000000000 AM') from dual;
TIMESTAMP_TO_SCN('16-JUN-1406.16.14.000000000AM') ------------------------------------------------- 473362
五.控制文件多元化 (增减控制文件数据量)
1.规划原则: 多例复用,定义多个控制文件,分别放在不同的磁盘上。
2.管理控制文件的个数和位置: spfile 或pfile 都可以实现对控制文件的个数和位置的管理 spfile步骤: 修改spfile参数control_file 一致性关闭数据库 增加或者减少控制文件 使用spfile启动数据库 验证结果。
例:修改控制文件个数
--减少控制文件 SQL> alter system set control_files='/opt/oracle/oradata/orcl/control01.ctl' scope=spfile;
System altered.
或者
--增加控制文件: SQL> alter system set control_files='/opt/oracle/oradata/orcl/control01.ctl', '/opt/oracle/oradata/orcl/control02.ctl', '/opt/oracle/oradata/orcl/control03.ctl' scope=spfile;
System altered.
--关闭数据库
SQL> shutdown immediate
--copy控制文件到添加目录 或者删除控制文件 [oracle@master disk3]$ cp /u01/app/oracle/oradata/prod/disk3/control01.ctl /u01/app/oracle/oradata/prod/disk4/control01.ctl
--启动数据库
SQL> startup ORACLE instance started.
Total System Global Area 418484224 bytes Fixed Size 1336932 bytes Variable Size 276826524 bytes Databa