zoukankan      html  css  js  c++  java
  • 【翻译自mos文章】在重建控制文件之前应该考虑的事情

    在重建控制文件之前应该考虑的事情

    来源于:
    Things to Consider Before Recreating the Controlfile (文档 ID 1475632.1)

    适用于:
    Oracle Database - Enterprise Edition - Version 10.2.0.1 and later
    Information in this document applies to any platform.

    目的:
    突出控制文件的重要性和在重建控制文件之前应该考虑的问题。



    问题解决的步骤:

    在重建控制文件之前:
    控制文件对数据库来说是很重要的。一些信息仅仅存储在控制文件里,而不存储在数据字典中。


    元数据包含闪回日志,块变化跟踪,Rman备份和数据文件的位置。


    常常有变通方案或解决方式。而且控制文件根本不用重建。


    假设你必须重建控制文件,或者Oracle指示你这么做。考虑例如以下的事情:


    1. 不可訪问的/offlined 的datafile
    假设一開始全部的datafile不在disk上。你将不能recreate controlfile。
    假设datafiles在disk上,务必保证没有offlined的datafile

    select distinct(status) from v$datafile where status not in ('ONLINE','SYSTEM');
    select name, ts#, online$, contents$ from ts$ where online$ =2;
    否则,一旦控制文件以resetlogs的方式重建之后,全部的offlined 的datafile不能加入回database。


    你会遇到下列错误:

    RMAN> sql 'alter database datafile 6 online';
    
    
    sql statement: alter database datafile 6 online
    RMAN-00571: ===========================================================
    RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
    RMAN-00571: ===========================================================
    RMAN-03009: failure of sql command on default channel at 07/29/2012 11:07:07
    RMAN-11003: failure during parse/execution of SQL statement: alter database datafile 6 online
    ORA-01190: control file or data file 6 is from before the last RESETLOGS
    ORA-01110: data file 6: '/opt/app/oracle/oradata/ORA112/leng_ts.dbf' 

    2.闪回 database
    当一个控制文件被重建之后。全部的闪回信息--normal restore point, guaranteed restore point, and flashback database都将会被关闭,即使用NORESETLOGS方式去建立
    全部的disk上的闪回日志不能被catelog回 控制文件 中。

    假设你尝试catalog flashback log,你将会遇到以下的错误:

      File Name: /opt/app/oracle/fra/ORA112/flashback/o1_mf_85zttw61_.flb
      RMAN-07529: Reason: catalog is not supported for this file type
    你将会不得不又一次启用flashback database.全部旧的闪回日志将不再实用,须要手工从disk上remove掉。




    3.闪回区(Flash Recovery Area)使用率
    一旦控制文件被重建。v$flash_recovery_area_usage视图可能不会反馈实际的使用率。

    因此,你须要执行以下的命令来把全部东西catalog回控制文件里。

    RMAN> catalog recovery area;

    4.备份元数据
    假设你没有使用rman的恢复文件夹。你须要将全部的backuppiece catalog到控制文件里。进一步来说,在9i之前,我们不能catalog backuppiece
    控制文件对于备份和恢复是极为重要的。

    catalog 全部的backuppiece 到控制文件里固然没错,可是你必须首先有一个控制文件。


    假设你丢失了全部的syatem,而且仅仅有backuppiece可用,你必须至少有一个controlfile 来catalog backuppiece。
    进一步来说,disk上没有不论什么datafile的话。你不能重建controlfile


    备份Current controlfile

    RMAN> backup current controlfile;
    SYS> alter database backup controlfile to '/tmp/control01.bk';
    
    在重建控制文件之前,你至少做一个当前控制文件的备份。


    在open/mounted模式时:


    当数据库已经关闭时,请使用操作系统命令做备份,举比例如以下:

    SYS@ORA112.SQL> show parameter control_files
    NAME                     TYPE          VALUE
    ------------------------------------ -------------------- ------------------------------
    control_files                 string          /opt/app/oracle/oradata/ORA112
                                                  /control1.ctl, /opt/app/oracle
                                                  /oradata/ORA112/control2.ctl
    
    
    $ cp /opt/app/oracle/oradata/ORA112/control1.ctl /opt/app/oracle/oradata/ORA112/control1.ctl.old
    $ cp /opt/app/oracle/oradata/ORA112/control2.ctl /opt/app/oracle/oradata/ORA112/control2.ctl.old

    请注意:二进制备份与ASCII备份是不同的!
    SQL> alter database backup controlfile to trace;
    上面的命令会生成一个ASCII命令,用该ASCII命令能够重建controlfile。该命令实际不是current controlfile的备份。




    *******************************加入開始*****************************************
    译者注:以下的这一点是译者自己加的:


    5. 数据库级别的补充日志信息在重建控制文件之后会丢失
    具体见:
    Missed Database Supplemental Log Information After Recreate Controlfile In 10g Database. (文档 ID 1474952.1)
    或者:
    http://blog.csdn.net/msdnchina/article/details/38360055
    *******************************加入结束*****************************************


    推荐:
    1)在不同的存储上复用控制文件
    至少须要在两个不同的存储上有两个控制文件的copies。假设media 被损坏,你至少还有另外一个copy还可用。
    因此。数据库參数文件至少有两个控制文件位置:
        control_files='location1/file1','location2/file2'
    2)打开控制文件的autobackup
    这将会确保在每次backup的最后会有一个controlfile的备份
        RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;
     假设须要。使用例如以下命令来改动autobackup的位置:
        RMAN> CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
  • 相关阅读:
    事务传播机制,搞懂。
    洛谷 P1553 数字反转(升级版) 题解
    洛谷 P1200 [USACO1.1]你的飞碟在这儿Your Ride Is Here 题解
    洛谷 P1055 ISBN号码 题解
    洛谷 P2141 珠心算测验 题解
    洛谷 P1047 校门外的树 题解
    洛谷 P1980 计数问题 题解
    洛谷 P1008 三连击 题解
    HDU 1013 题解
    HDU 1012 题解
  • 原文地址:https://www.cnblogs.com/jzssuanfa/p/7295462.html
Copyright © 2011-2022 走看看