• 【翻译自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
  • 相关阅读:
    Xcode 10 关于 CocoaPods 安装失败的问题RuntimeError
    iOS 解决xcode设置全局断点后 执行视频播放时自动进入断点cxa_throw
    iOS swift String 换行显示
    iOS wkWebView点击链接无反应
    iOS swift跑马灯滚动可以点击
    iOS swift版本无限滚动轮播图
    iOS swift中比较模型数组是否相等
    iOS valueForKeyPath快速计算求和、平均值、最大、最小
    iOS 全屏播放网页视频退出后状态栏被隐藏
    vacabulary1
  • 原文地址:https://www.cnblogs.com/jzssuanfa/p/7295462.html
Copyright © 2020-2023  润新知