控制文件(Control file)
Oracle在装载(mount)数据库时,Oracle会根据初始化参数文件中的control_files参数来定位控制文件;在启动例程时,Oracle会根据控制文件中的数据库名称和位置,在例程和数据库之间建立关联;在打开数据库时,Oracle会根据控制文件中的数据文件名称和位置、重做日志文件名称和位置,来打开这些文件。一个数据库最多可以有8个控制文件。
修改控制文件的各种因素:
1、在数据库发生物理变化时,会自动修改控制文件;(比如 创建表空间,增加或删除数据文件或重名数据文件等)
2、在出现 “检查点”事件时,CKPT进程会自动修改控制文件,以便数据文件和重做日志文件保持同步,并根据此恢复数据库;
3、当数据库处于 归档模式方式时,ARCn进程会自动用归档日志文件名和日志序列号之类的信息修改控制文件;
4、使用RMAN执行数据库备份操作时,RMAN的备份信息会被记录到控制文件中。
控制文件主要包括的内容:
1、数据库创建的时间信息;
2、数据库名称和位置,一个控制文件只能管理或属于一个数据库;
3、表空间名称;
4、相关的数据文件、重做日志文件的名称、位置、联机或脱机状态信息;
5、重做日志文件归档信息;
6、当前重做日志的序号(log sequence number)。它是一个在重做日志文件切换时被递增和记录的唯一性标识号;
7、当前检查点信息;
8、撤销段的开始和结束信息;
9、RMAN(Recovery Manager )恢复管理器的备份信息;
管理控制文件的准则
要想对控制文件进行管理,必须具有 ALTER DATABASE 系统权限;
多路复用控制文件的方法或步骤如下:
1、以SYS用户SYSDBA的身份等到数据库;
2、修改SPFILE中的初始化参数CONTROL_FILES : 例如:
ALTER SYSTEM SET CONTROL_FILES='D:\OracleDataBase\app\Administrator\oradata\wenzhong\control01.ctl',
'D:\OracleDataBase\app\Administrator\oradata\wenzhong\control02.ctl',
'D:\OracleDataBase\app\Administrator\oradata\wenzhong\control03.ctl',
'D:\control04.ctl'
SCOPE=SPFILE;
3、关闭数据库 ;即SHUTDOWN IMMEDIATE;
4、复制现有的控制文件;为确保所有控制文件互为镜像,完全相同,必须关闭数据库。
HOST COPY D:\OracleDataBase\app\Administrator\oradata\wenzhong\control01.ctl D:\control04.ctl
5、重新启动数据库;
备注:如果某个文件丢失或损坏了 比如control04.ctl 损坏了,但又不想修改初始化参数文件中的参数。只需要将现有的控制文件
复制一份即可 如: HOST COPY D:\OracleDataBase\app\Administrator\oradata\wenzhong\control01.ctl D:\control04.ctl
如果想修改初始化参数文件中参数,则在NOMOUNT模式下,修改初始化参数文件中的CONTROL_FILES,删除不需要或损坏的控制文件即可:
ALTER SYSTEM SET CONTROL_FILES='D:\OracleDataBase\app\Administrator\oradata\wenzhong\control01.ctl',
'D:\OracleDataBase\app\Administrator\oradata\wenzhong\control02.ctl',
'D:\OracleDataBase\app\Administrator\oradata\wenzhong\control03.ctl'
SCOPE=SPFILE;
备份控制文件的两种方法:
备份控制文件需使用 ALTER DATABASE BACKUP CONTROLFILE 语句;
1、将控制文件备份为二进制文件:ALTER DATABASE BACKUP CONTROLFILE TO 'F:\OracleTest\control.bkp';
2、将控制文件备份为文本文件(被称为 跟踪备份 BACKUO TO TRACE),跟踪备份被存放在由初始化参数 USER_DUMP_DEST指定的目录中:
查看USER_DUMP_DEST指定的目录 : SHOW PARAMETER USER_DUMP_DEST
备份为文本文件: ALTER DATABASE BACKUP CONTROLFILE TO TRACE ;
跟踪备份文件名称的格式为 <SID>_ora_<PID>.trc .SID是指数据库的系统标识号;PID是进行备份的操作系统进程ID。
删除控制文件
1、 在数据库处于NOMOUNT状态或OPEN状态时,使用 ALTER SYSTEM SET control_files=.... SCOPE=SPFILE语句修改数据库初始化参数文件中的
初始化参数control_files,删除不需要或损坏的控制文件。本语句不能物理删除控制文件,如果要物理删除需 执行 HOST DEL 控制文件。
2、使用SHUTDOWN IMMEDIATE 关闭数据库;
3、重新启动数据库即可。
移动控制文件
移动控制文件必须关闭或停止数据库的使用;但是移动数据文件、重做日志文件则不需要,它们可以在OPEN状态下移动。
1、在数据库处于NOMOUNT 或OPEN状态下 使用 ALTER SYSTEM SET control_files=....SCOPE=SPFILE来修改数据库初始化参数文件的初始化参数 control_files,指出
移动之后的控制文件的位置和名称;
2、SHUTDOWN IMMEDIATE 关闭数据库;
3、第一步不能物理移动控制文件,必须手动通过 复制粘贴或 HOST COPY 控制文件 的方式移动;
4、STARTUP 重新启动数据库即可。
查询控制文件
SELECT * FROM V$CONTROLFILE -------控制文件名称
SELECT * FROM V$CONTROLFILE_RECORD_SECTION -------控制文件记录文档的信息
SELECT * FROM V$PARAMETER -------初始化参数CONTROL_FILES指定控制文件名称
控制文件中包含的内容:
A、)数据库创建时间信息。
B、)数据库的名称,一个控制文件只能管理或隶属于一个数据库。
C、)表空间名称。
D、)相关的数据文件、重做日志文件的名称、位置、联机或脱机状态信息。
E、)重做日志归档信息。
F、)当前重做日志的序号(log sequence number)。它是一个在重做日志文件切换时被递增和记录的唯一性标识号。
G、)当前的检验点信息。
H、)撤销段的开始与结束信息。
I、)Reconvery Manager(RMAN,恢复管理器)备份信息。RMAN是DBA用来备份恢复数据库的实用工具。
Oracle在装载数据库时,根据初始化参数文件中的control_files参数来定位控制文件,在启动例程时,Oracle会根据控制文件中的数据库名和位置,在例程和数据库之间建立关联;在打开数据库时,Oracle根据控制文件中的数据库名称和位置、重做日志文件名和位置,打开这些文件。一个数据库最多可以有8个控制文件。
修改SPFILE中的初始化参数control_files。
Alter system set control_files=’ D:/OracleDataBase/app/Administrator/oradata/orcl/control01.ctl’
, ’D:/OracleDataBase/app/Administrator/oradata/orcl/control02.ctl’
,’ D:/OracleDataBase/app/Administrator/oradata/orcl/control03.ctl’
SCOPE=SPFILE;
必须关闭数据库然后再启动数据库才可使修改后的SPFILE参数起作用。
复制现有的控制文件:
为了使复制的控制文件和原始控制文件互为镜像,完全相同,必须先关闭数据库在复制。
HOST COPY D:/OracleDataBase/app/Administrator/oradata/orcl/control01.ctl E:/control05.ctl
最后再重新启动数据库。
删除某个控制文件的方法:
HOST DEL E:/control05.ctl
被删除的控制文件同样必须先关闭数据库,再删除,最后再启动数据库。
将控制文件备份为二进制文件:
ALTER DATABASE BACKUP CONTROLFILE TO ‘f:/control.bkp’;
将控制文件备份为文本文件:
ALTER DATABASE BACKUP CONTROLFILE TO TRACE as 'f:/oracletest/wenzhong_ora_ctr.trc';
跟踪备份的文件名称格式为 <SID>_ORA_<PID>.trc。SID为系统标识符;PID为系统进程ID。
被备份为文本文件,称为跟踪备份(backup to trace),被存放在由初始化参数user_dump_dest指定的目录中。
控制文件的几个重要的永久参数
名称 |
说明 |
MAXDATAFILES |
指定数据文件的最大个数 |
MAXLOGFILES |
指定重做日志文件的最大个数 |
MAXLOGMEMBERS |
指定重做日志文件中每个组的成员的最大个数 |
MAXLOGHISTROY |
指定控制文件可以记载的重做日志历史的最大个数 |
MAXINSTANCES |
指定可以同时访问数据库例程的最大个数 |
创建新的控制文件的步骤:
制作一个包含数据库的所有数据文件和重做日志文件的列表
如:LOGFILE
………….;
DATAFILE
………..;
修改初始化参数文件SPFILE中的control_files参数:
STARTUP NOMOUNT
ALTER SYSTEM SET CONTROL_FILES=’ D:/OracleDataBase/app/Administrator/oradata/orcl/control01.ctl’;
SCOPE=SPFILE;
关闭数据库然后重新启动数据库到NOMOUNT状态使修改后的参数生效;
SHUTDOWN IMMEDIATE;
STARTUP NOMOUNT;
创建新的控制文件:
CREATE CONTROLFILE REUSE DATABASE “WENZHONG” NORESETLOGS NOARCHIVELOG
MAXDATAFILES 5
MAXLOGFILES 3
MAXLOGMEMBERS 2
MAXLOGHISTROY 3
MAXINSTANCES 10
LOGFILE
……………….;
DATAFILE
…………………..;
CHARACTER SET ZHS16GBK;
将数据库启动到OPEN状态
重建临时表空间中的临时文件:
ALTER TABLESPACE TEMP ADD TEMPFILE ‘D:/OracleDataBase/app/Administrator/oradata/orcl/tempfile01.dbf’
SIZE 2M REUSE AUTOEXTEND ON NEXT 3M MAXSIZE 10M;