zoukankan      html  css  js  c++  java
  • 【翻译自mos中文文章】重建控制文件的方法

    重建控制文件的方法

    參考原文:
    How to Recreate a Controlfile (Doc ID 735106.1)

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


    解决方式:

    警告:
    仅仅有遇到下列场景时,你才应该recreate 你的控制文件

    1.全部的当前的控制文件copies 已经丢失 或者 都已经损坏(corrupted)
    2.你正在restore一个backup,在此backup中控制文件已经损坏 或者丢失(missing)
    3.你须要在控制文件里改变一个hard limit 的数据库參数(database parameter)
    4.假设你正在move 你的database 到一个server上,而且files位于不同的location上。


    5. oracle 技术支持人员建议你重建控制文件。


    第一种情况:在已经存在的db中(而且该db是mount or  open状态)建立一个新的controlfile

    首先。必须生成一个控制文件的ascii dump文件
    SQL> alter database backup controlfile to trace;

    该trace文件被生成在udump文件夹下:
    SQL> show parameter user_dump_dest

    NAME            TYPE         VALUE
    --------------  ------       ------------------------------------------------
    user_dump_dest  string       /oracle/product/11.1.0/db_1/diag/rdbms/V11/trace

    到/oracle/product/11.1.0/db_1/diag/rdbms/V11/trace文件夹下。依照时间排序:
    % cd /oracle/product/11.1.0/db_1/diag/rdbms/V11/trace
    % ls -ltr

    一旦定位到该文件。该文件会与一般的trace file一样显演示样例如以下:
    Trace file /oracle/product/11.1.0/db_1/diag/rdbms/V11/trace/V11_ora_31225.trc
    Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options
    ORACLE_HOME = /oracle/product/11.1.0/db_1


    你感兴趣的是 包含 控制文件创建脚本的那一段。
    改动trace file 并用改动后的脚本来建立控制文件

    CREATE CONTROLFILE REUSE DATABASE "V11" NORESETLOGS ARCHIVELOG 
    MAXLOGFILES 16 
    MAXLOGMEMBERS 3 
    MAXDATAFILES 100 
    MAXINSTANCES 8 
    MAXLOGHISTORY 292 
    LOGFILE 
    GROUP 1 '/oradata/V11/redo01.log' SIZE 50M, 
    GROUP 2 '/oradata/V11/redo02.log' SIZE 50M, 
    GROUP 3 '/oradata/V11/redo03.log' SIZE 50M 
    DATAFILE 
    '/oradata/V11/system01.dbf', 
    '/oradata/V11/sysaux01.dbf', 
    '/oradata/V11/undotbs01.dbf',
    '/oradata/V11/user01.dbf' 
    CHARACTER SET WE8MSWIN1252 
    ;

    --->请特别注意:CHARACTER SET WE8MSWIN1252  能够由 alert_sid.log中得到。

    ALTER TABLESPACE TEMP_TEST ADD TEMPFILE '/oradata/V11/temp01.dbf'  reuse;

    "CREATE CONTROLFILE"之前的不论什么东西请删掉。
    CHARACTER SET之后的不论什么东西请删掉。一定要保留那个分号
    在上面的样例中,我们选择了NORESETLOGS 选项,而且该db执行于archivelog模式下。


    请务必保证使用shutdown immediate选项来关闭数据库。然后启动到nomount状态下:
     SQL> shutdown immediate;
     SQL> startup nomount;
     SQL>@control.sql
     
    注意:当重建控制文件完成后,务必保证加入已经存在temp file:
    alter tablespace temp_ts add tempfile '?

    /oradata/V11/temp01.dbf'?

    reuse;
    控制文件一旦被创建,db 被自己主动带入到mounted 状态。

    假设你使用了resetlogs打开了database,请尽快做一个backup

    另外一种情况:该db无法到mount 状态
    1.要么restore 控制文件,
    2.要么有一个重建控制文件的脚本,例如以下是一个样例:

    CREATE CONTROLFILE REUSE DATABASE "DBNAME" NORESETLOGS ARCHIVELOG
    Follow the format listing:
    - Location of redo logs.
    - Location of datafiles
    - Specifying the characterset.

    Once you have listed all files correctly you are ready to recreate your controlfile
    SQL> startup nomount;
    SQL>@control.sql

  • 相关阅读:
    Selenium环境搭建
    系统测试用例评审checklist
    软件测试入门
    App测试方法总结
    好东西并查集
    自己编写一个数组去掉重复元素的函数
    杭电OJ BestCoder28期1001Missing number问题(小技巧偏移法)
    介绍一个二次排序的小技巧(best coder27期1001jump jump jump)
    ntohs的一个简单实现(将网络流中用两个字节16进制表示的资源数(如DNS)和长度转换为整形)
    一个节省空间的小技巧
  • 原文地址:https://www.cnblogs.com/wzjhoutai/p/6718515.html
Copyright © 2011-2022 走看看