前端之家收集整理的这篇文章主要介绍了
ORACLE的控制文件,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
控制
文件的
功能和特点: 1)定义
数据库当前物理状态 2)维护数据的一致性 3)是一个二进制
文件 4)在mount阶段被读取 5)记录RMAN备份的元数据 查看database控制
文件位置: 19:02:27
sql> show parameter control_file NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ control_file_record_keep_time integer 7 control_files string /u01/oradata/timran11g/control01. ctl,/u01/oradata/timran11g/contr ol02.ctl,/u01/oradata/timran11g/ control03.ctl 19:02:42
sql> select name from v$controlfile; NAME --------------------------------------------------------------------------------------------------- /u01/oradata/timran11g/control01.ctl /u01/oradata/timran11g/control02.ctl /u01/oradata/timran11g/control03.ctl 3.2 控制
文件多元化 1)配置多个control_files,控制
文件最好有三个,是相互镜像的(shutdown下cp命令复制即可),然后
修改spfile中的control_files参数,Oracle建议分配在不同的物理磁盘上。 *注意点:最多可以有8个control files多路复用。 19:10:25
sql> alter system set control_files='/u01/oradata/timran11g/control01.ctl','/u01/disk1/control02.ctl','/u01/disk1/control03.ctl' scope=spfile; System altered. 2)三个control
文件要一致(同一版本,scn相同),本来就是镜像关系 -rw-r----- 1 oracle oinstall 7356416 07-16 20:00 control01.ctl -rw-r----- 1 oracle oinstall 7356416 07-16 20:01 control02.ctl -rw-r----- 1 oracle oinstall 7356416 07-16 20:01 control03.ctl 3)控制
文件查看:v$controlfile 、show parameter controlfile、 v$parameter 3.3 控制
文件的重建与备份 1)trace
文件: 可以在mount或open模式下
生成一个脚本,用于控制
文件重建。 19:59:24
sql> alter database backup controlfile to trace; //
生成的trace
文件在udump的最新trc
文件里 或者
sql>alter database backup controlfile to trace as '/u01/oradata/timran11g/con.trace'; //存到自己起的
文件名里。 2)binary
文件:控制
文件的备份 20:00:20
sql> alter database backup controlfile to '/u01/oradata/timran11g/con.bak'; 恢复cp /u01/oradata/timran11g/con.bak /u01/oradata/timran11g/control03.ctl 3.4 控制
文件手工恢复 控制
文件一但损坏,系统将崩溃或死机。 1)单个
文件损坏了:
数据库关闭,使用操作系统命令复制其副本到指定的位置。 2)所有的控制
文件丢失,(正常
关闭,shutdown immediate后
删除控制
文件) 假设控制
文件的备份也没有,利用前面做的trace
文件重新
生成控制
文件 在nomount 状态下执行trace脚本 15:37:16
sql> startup force nomount ORACLE instance started.
sql> CREATE CONTROLFILE REUSE DATABASE "TIMRAN11" NORESETLOGS ARCHIVELOG MAXLOGFILES 16 MAXLOGMEMBERS 3 MAXDATAFILES 100 MAXINSTANCES 8 MAXLOGHISTORY 292 LOGFILE GROUP 1 '/u01/oradata/timran11g/redo01.log' SIZE 50M,GROUP 2 '/u01/oradata/timran11g/redo02.log' SIZE 50M,GROUP 3 '/u01/oradata/timran11g/redo03.log' SIZE 50M -- STANDBY LOGFILE DATAFILE '/u01/oradata/timran11g/system01.dbf','/u01/oradata/timran11g/sysaux01.dbf','/u01/oradata/timran11g/user01.dbf','/u01/oradata/timran11g/example01.dbf','/u01/oradata/timran11g/test01.dbf','/u01/oradata/timran11g/undotbs01.dbf' CHARACTER SET ZHS16GBK ; 可以看到执行后三个控制
文件又重新建立了。 说明:这个重建控制
文件的过程主要有两大部分
内容: 第一部分是脚本中的可见信息:1)定义了几个参数的最大值,2)在线日志的物理信息,3)数据
文件的物理信息,4)使用的字符集。 第二部分是隐含的不可见信息,比如SCN信息,重建最关键的是将当前所有数据
文件头部的最新SCN信息复制到了控制
文件中。以便接下来打开
数据库。
sql> select file#,checkpoint_change# from v$datafile; //从控制
文件读出 FILE# CHECKPOINT_CHANGE# ---------- ------------------ 1 5629150 2 5629150 3 5629150 4 5629150 5 5629150 6 5629150
sql> select file#,checkpoint_change# from v$datafile_header; //从数据
文件读出 FILE# CHECKPOINT_CHANGE# ---------- ------------------ 1 5629150 2 5629150 3 5629150 4 5629150 5 5629150 6 5629150 15:39:49
sql> alter database open; 2)利用控制
文件备份(手动备份或RMAN备份都可以)恢复控制
文件。(有点复杂)