• Oracle 控制文件


    一. Oracle 控制文件主要包含如下条目
    DATABASE ENTRY
    CHECKPOINT PROGRESS RECORDS
    REDO THREAD RECORDS
    LOG FILE RECORDS
    DATA FILE RECORDS
    TEMP FILE RECORDS
    TABLESPACE RECORDS
    LOG FILE HISTORY RECORDS
    OFFLINE RANGE RECORDS
    ARCHIVED LOG RECORDS
    BACKUP SET RECORDS
    BACKUP PIECE RECORDS
    BACKUP DATAFILE RECORDS
    BACKUP LOG RECORDS
    DATAFILE COPY RECORDS
    BACKUP DATAFILE CORRUPTION RECORDS
    DATAFILE COPY CORRUPTION RECORDS
    DELETION RECORDS
    PROXY COPY RECORDS
    INCARNATION RECORDS

    二.可以通过dump看到 控制文件内

    方法1.直接dump controlfile:alter system set events 'immediate trace name controlf level 10'

    方法2.  alter database backup controlfile to trace
         查看UDMP目录下的<SID>_ora_<PID>.trc文件

    方法3.alter database backup controlfile to 文件名
        查询该文件

    SQL>select name from v$controlfile     
    SQL>show parameter user_dump_dest
    在指定的目录下会找到刚产生的trc文件,通过日期可以看出那个是刚产生的。

    三. 控制文件的重建:CREATE CONTROLFILE SET/reuse DATABASE SID RESETLOGS/NOresetlogs NOARCHIVELOG/archivelong

     

    ORA-00205: error in identifying control file, check alert log for more info

    当三个控制文件都已损坏,又没有控制文件的备份,我们只能采取重建控制文件的做法。

    SQL> startup nomount
    ORACLE instance started.
    Total System Global Area  268435456 bytes
    Fixed Size                  1266968 bytes
    Variable Size              88083176 bytes
    Database Buffers          176160768 bytes
    Redo Buffers                2924544 bytes

    SQL> create controlfile reuse database woody noresetlogs archivelog
      2  LOGFILE
      3  GROUP 1 '/u01/app/oracle/oradata/woody/redo01.log',
      4  GROUP 2 '/u01/app/oracle/oradata/woody/redo02.log',
      5  GROUP 3 '/u01/app/oracle/oradata/woody/redo03.log'
      6  DATAFILE
      7  '/u01/app/oracle/oradata/woody/sysaux01.dbf',
      8  '/u01/app/oracle/oradata/woody/system01.dbf',
      9  '/u01/app/oracle/oradata/woody/UNDOTBS01.dbf'
    10  CHARACTER SET ZHS16GBK
    11  ;
    Control file created.
    成功地重建控制文件后,我们尝试着打开数据库,但系统报错,提示需要进行介质恢复。

    SQL> conn /as sysdba;
    Connected to an idle instance.
    SQL> startup
    ORACLE instance started.
    Total System Global Area  268435456 bytes
    Fixed Size                  1266968 bytes
    Variable Size              88083176 bytes
    Database Buffers          176160768 bytes
    Redo Buffers                2924544 bytes
    Database mounted.
    ORA-01113: file 1 needs media recovery
    ORA-01110: data file 1: '/u01/app/oracle/oradata/woody/system01.dbf'

    SQL> recover datafile '/u01/app/oracle/oradata/woody/system01.dbf';
    Media recovery complete.
    SQL> recover datafile '/u01/app/oracle/oradata/woody/UNDOTBS01.dbf';
    Media recovery complete.
    SQL> recover datafile '/u01/app/oracle/oradata/woody/sysaux01.dbf';
    Media recovery complete.

    介质恢复后,重新打开数据库,提示日志文件也需恢复。
    SQL> recover database until cancel;
    日志已恢复。
    控制文件、数据文件、日志文件全部恢复后,将三种文件同步,并打开数据库,成功地完成了数据库的恢复工作。
    SQL> alter database open resetlogs;
    数据库已更改。

    在做了alter database open resetlogs;会把online redelog file清空,数据文件丢失.所以这个时候要做一个全备份。

    resetlogs命令表示一个数据库逻辑生存期的结束和另一个数据库逻辑生存期的开始,每次使用 resetlogs命令的时候,SCN不会被重置,不过oracle会重置日志序列号,而且会重置联机重做日志内容.这样做是为了防止不完全恢复后日志序 列会发生冲突(因为现有日志和数据文件间有了时间差)。

  • 相关阅读:
    CentOS重启与关机
    VIM打开文件与保存文件
    sql Split
    JS获取URL参数
    C#后台调用公网接口(GET, POST)
    鼠标右击.exe的程序出现闪退(桌面重启)怎么办
    JS判断有无网络(移动端)
    TFS API : 四、工作项查询
    TFS API:三、TFS WorkItem添加和修改、保存
    TFS API:二、TFS 代码查询工作项
  • 原文地址:https://www.cnblogs.com/datalife/p/1985310.html
Copyright © 2020-2023  润新知