ORACLE的控制文件

前端之家收集整理的这篇文章主要介绍了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备份都可以)恢复控制文件。(有点复杂)

猜你在找的Oracle相关文章