Oracle重建控制文件

oracle数据库通过控制文件保持数据库的完整性,一旦控制文件被破坏数据库将无法启动,因此建议采用多路控制文件或者备份控制文件的方法。

控制文件是数据库建立的时候自动生成的二进制文件,只能通过实例进行修改,如果手动修改的话会造成控制文件与物理信息不符合,从而导致数据库不能正常工作。

控制文件主要包括下面内容:
1.控制文件所属数据库的名字,一个控制文件只能属一个数据库
2.数据库创建时间
3.数据文件的名称,位置,联机,脱机状态信息
4.所有表空间信息
5.当前日志序列号
6.最近检查点信息
其中,数据库名称,标识和创建时间在数据库创建时写入;数据文件和重做日志名称和位置在增加,重命名或者删除的时候更新;表空间信息在增加或者删除表空间的时候进行更新。

在初始化参数文件中control_files参数主要来描述控制文件的文件名跟物理路径,如下所示:
control_files=("/u01/app/oracle/oradata/orcl/control01.ctl")
该参数只设置一个,也可以设置多个,如下所示:
control_files=("u01/app/oracle/oradata/orcl/control01.ctl"
               "u01/app/oracle/oradata/orcl/control02.ctl",
               "u01/app/oracle/oradata/orcl/control03.ctl")
这个方法叫做多路控制文件,oracle可以利用这个方法恢复被破坏的控制文件,oracle最多允许设置8个多路控制文件。这种做法主要防止冗余错误。

必须所有的多路控制文件都完整正确数据库才能正常启动,只要丢失一个或者一个内容不正确数据库就不能顺利启动。

假设数据库有8个控制文件,如果其中某一个、或七个同时坏掉,此时,oracle是起不来的。在nomount的状态下就会报错。

排除这个错误的方法是,到pfile文件里修改control file的选项,只要8个里,其中有一个是完好的,oracle便能正常启动。

【说明】【oracle在mount状态启动时,控制文件只会读取一个,其余七个只是镜像复制】

对控制文件的管理原则:
1.明确控制文件的名称很存储路径
参数设置错误将无法打开数据库,数据库打开以后,实例将同时写入所有的控制文件但是只会读取第一个控制文件的内容。
2.为数据库创建多路控制文件
a.多路控制文件内容必须完全一样,oracle实例同时将内容写入到control_files变量所设置的控制文件中。
b.初始化参数control_files中列出的第一个文件是数据库运行期间唯一可读取的控制文件。
c.创建,恢复和备份控制文件必须在数据库关闭的状态下运行,这样才能保证操作过程中控制文件不被修改。
d.数据库运行期间如果一个控制文件变为不可用,那么实例将不再运行,应该终止这个实例,并对破坏的控制文件进行修复。
3.将多路控制文件放在不同的硬盘上
4.采用操作系统镜像方式备份控制文件
5.手工方式备份控制文件
应该及时备份特别是发生了如下的操作的时候:
添加删除重命名数据文件
添加删除表空间,改变表空间读写状态
添加删除重做日志文件
如果手工备份不及时的话,就会产生备份的控制文件与正在使用的控制文件不一致,那么利用备份的控制文件启动数据库时会破坏数据库的一致性完整性,甚至不能启动数据库,因此手工备份控制文件要注意及时备份。

创建多路控制文件

利用spfile文件创建多路控制文件
1.利用SYS帐号登陆SQL*PLUS,查询一下控制文件信息视图
SQL>select name from v$controlfile;
结果显示为:
NAME
----------------------------------
/u01/app/oracle/oradata/orcl/control01.ctl
/u01/app/oracle/oradata/orcl/control02.ctl
/u01/app/oracle/oradata/orcl/control03.ctl
这里列出了控制文件的名称以及位置

2.更改spfile中控制文件的信息,增加一个新的控制文件
SQL>alter system set control_files='/u01/app/oracle/oradata/orcl/control01.ctl','/u01/app/oracle/oradata/orcl/control02.ctl' scope=spfile

结果显示为:
系统已经更改。

【scope必须是spfile,不能为both,不然会报ORA-02095的错。原因为oracle在启动时,会同时读写各个控制文件,而更改过后的控制文件参数也会再下次启动时生效】

3.关闭数据库

4.在操作系统中将已有的控制文件复制,修改名称保存到刚才增加控制文件的指定位置。(这步必须做的,否则数据库无法启动)

5.重新启动控制文件,使控制文件改变生效。


利用pfile创建多路控制文件
1.关闭数据库

2.在操作系统中将原有的控制文件复制一份保存到不同的位置上去,比如说将原有的'/u01/app/oracle/oradata/orcl/control01.ctl'控制文件复制一份保存到oracle/oradata目录下去。

3.用文本编辑器打开pfile进行编辑,一般是在ORACLE_BASE\admin\\pfile里面,把新添加的控制文件信息添加进去。

4.重新启动数据库,使控制文件生效。
注意在9i中,默认的控制文件是spfile,所以修改了pfile以后启动要:
SQL>startup pfile=ORACLE_BASE\admin\\pfile\init.ora

其他方法:还可以手动创建spfile,或者可以把原先spfile改名一下。

原因:oracle启动时会先找spfile,spfile有情况下,才会找pfile,当然,如果pfile也有问题,那就只能是自己建一个pfile了。

管理控制文件

备份控制文件
1.命令:alter database backup controlfile to '/u01/app/oracle/oradata/controlfile.bkp';

命令给出的路径一定要实现就建好,否则系统会报错。控制文件丢失或者出错的时候就可以在初始化参数文件中把control_files参数指向备份后的路径,或者是把备份后的控制文件复制到原来的控制文件的位置覆盖掉。

2.使用命令:alter database backup controlfile to trace;

在ORACLE_BASE\admin\\udump里面生成跟踪文件(使用show parameter user_dump语句可以可以获取跟踪文件存放目录),其中就有创建文件的SQL脚本,可以利用脚本来重建新的控制文件。

【这是最无奈的做法,重建控制文件】

问题:

1.把备份的文件放到原有的控制文件的位置还是不能用。
知道不能用,但是暂时还没想通。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23155850/viewspace-663326/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/23155850/viewspace-663326/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值