Oracle Database Administrator's Guide 11g---9.Managing Control Files

  1.What Is a Control File?

         每一个Oracle Database 都有一个控制文件,它说一个保存数据库的物理结构的二进制文件,包含以下方面:

      1).Database Name

      2).Datafiles 和 redo log files 的名称和地址

      3).Database 建立时的时间戳

      4).The current log sequence number

      5).CheckPoint information

 

      如果没有控制文件,那么数据库就不能挂载,而且恢复也比较困难。所以一般都建立2个以上的控制文件,已作为备份所用。建立多个控制文件称为多路控制文件(Multiplex Control Files),Oracle Database会对所有在CONTROL_FILES参数中指定的控制文件写入信息,但是数据库只会读第一个文件,但是如果这几个文件任何一个出现问题,数据库都会不能打开,需要中断修复。

 

 

 2.Creating Control Files

     2.1Creating Initial Control Files

         第一次建立控制文件的时候是在使用Create Database语句的时候,在CONTROL_FILES参数里设定,例如:

         CONTROL_FILES = (/u01/oracle/prod/control01.ctl,
                                     /u02/oracle/prod/control02.ctl,
                                     /u03/oracle/prod/control03.ctl)

         

     2.2 Creating Additional Copies, Renaming, and Relocating Control Files

              1).首先关闭数据库

         2).把现有的控制文件拷贝到新的地址上。

         3).修改数据库初始文件中的CONTROL_FILES参数,增加或修改控制文件名

         4).重启数据库

 

        2.3 Creating New Control Files

           当所有的控制文件被删除或者损坏、或者改变数据库名字(例如在分布式系统环境中有重名)      

或者Oracle Database的版本低于10.2时,都要重新生成一个新的控制文件。版本低于10.2时,如果你改变了MAXLOGFILES的值,你不能用ALERT DATABASE命令去改变设定,这样会产生一个错误,必须要重新生成控制文件。而后面的版本控制文件会自动改变。

    

         下面是CREATE CONTROLFILE语句:

          CREATE CONTROLFILE
             SET DATABASE prod
             LOGFILE GROUP 1 ('/u01/oracle/prod/redo01_01.log',
                                        '/u01/oracle/prod/redo01_02.log'),
                         GROUP 2 ('/u01/oracle/prod/redo02_01.log',
                                       '/u01/oracle/prod/redo02_02.log'),
                         GROUP 3 ('/u01/oracle/prod/redo03_01.log',
                                       '/u01/oracle/prod/redo03_02.log')
                         RESETLOGS
                         DATAFILE '/u01/oracle/prod/system01.dbf' SIZE 3M,
                                       '/u01/oracle/prod/rbs01.dbs' SIZE 5M,
                                       '/u01/oracle/prod/users01.dbs' SIZE 5M,
                                       '/u01/oracle/prod/temp01.dbs' SIZE 5M
                         MAXLOGFILES 50
                         MAXLOGMEMBERS 3
                         MAXLOGHISTORY 400
                         MAXDATAFILES 200
                         MAXINSTANCES 6
                         ARCHIVELOG;

 

         2.4 Steps for Creating New Control Files

                 1.) 找出数据库中的datafiles 和 redo log files

                      可以通过下面三个表来查询:

                       SELECT MEMBER FROM V$LOGFILE;
                       SELECT NAME FROM V$DATAFILE;
                       SELECT VALUE FROM V$PARAMETER WHERE NAME = 'control_files';

           2.) 关闭数据库

           3.)备份所有的datafiles 和 redo log files

           4.) 打开数据库,但不要挂载

                       startup nomount

           5.) 使用CREATE CONTROLFILE 语句建立一个新的控制文件

           6.)备份这个新建的控制文件

           7.)修改CONTROL_FILES 初始化参数去包含这个新的控制文件

           8.)必要时修复数据库,如果你不是在修复数据库,这一步可以略过

           9.)重新打开数据库,如果在上面没有设RESETLOGS, 则用 ALTER DATABASE OPEN;

                 如果设了,则用ALTER DATABASE OPEN RESETLOGS;

 

    3. Backing Up Control Files

         使用alter database backup controlfile 语句去备份控制文件,有两种方式,

         第一种是把控制文件备份成为一个二进制文件:

             alter database backup controlfile  to '/oracle/backup/control.bkp';


         第二种是产生一个SQL语句,重新运行可以产生控制文件

             alter database backup controlfile to trace;

          这条命令在追踪文件中生成一个SQL脚本,你可以编辑这个脚本。

 

     4.Recovering a Control File Using a Current Copy

         这步很简单,先关闭数据库,只要把好的控制文件覆盖坏的控制文件,然后重启数据库就可以了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值