zoukankan      html  css  js  c++  java
  • oracle重建控制文件

    根据已有数据库创建新的控制文件
    #数据库必须是mounted或open状态

    sql> alter database backup controlfile to trace;
    

    可以使用以下快捷方式找到对应的trace文件

    sql> alter database backup controlfile to trace;
    sql> oradebug setmypid;
    sql> oradebug tracefile_name;
    

    从trace文件中要找出以下内容,保存到脚本controlfile.sql:

    CREATE CONTROLFILE REUSE DATABASE "DB11" NORESETLOGS  NOARCHIVELOG
        MAXLOGFILES 16
        MAXLOGMEMBERS 3
        MAXDATAFILES 100
        MAXINSTANCES 8
        MAXLOGHISTORY 292
    LOGFILE
      GROUP 1 '/u01/app/oracle/oradata/db11/redo01.log'  SIZE 50M BLOCKSIZE 512,
      GROUP 2 '/u01/app/oracle/oradata/db11/redo02.log'  SIZE 50M BLOCKSIZE 512,
      GROUP 3 '/u01/app/oracle/oradata/db11/redo03.log'  SIZE 50M BLOCKSIZE 512
    -- STANDBY LOGFILE
    DATAFILE
      '/u01/app/oracle/oradata/db11/system01.dbf',
      '/u01/app/oracle/oradata/db11/sysaux01.dbf',
      '/u01/app/oracle/oradata/db11/undotbs01.dbf',
      '/u01/app/oracle/oradata/db11/users01.dbf',
      '/u01/app/oracle/oradata/db11/example01.dbf',
      '/u01/app/oracle/oradata/db11/test01.dbf'
    CHARACTER SET AL32UTF8
    ;
    

    正式创建控制文件

    sql> shutdown immediate
    sql> startup nomount
    sql> @controlfile.sql #创建完成后,数据库会自动到mounted状态
    

    #创建控制文件后,记得添加临时文件

    sql> alter tablespace temp add tempfile '/u01/app/oracle/oradata/db11/temp01.db' reuse;
    

    如果是以resetlogs打开数据库,建议尽快做一个数据库备份。

    如果数据库已经无法mount,比如需要还原数据库时,则需要手工写创建脚本了。
    脚本必须以:
    create controlfile reuse database "dbname" noresetlogs archivelog
    开始。

    其它步骤类似。

  • 相关阅读:
    伪造mysql服务端实现任意读取
    客户端session安全问题(flask)
    systemd教程
    MySQL的一些常用基本命令的使用说明
    AMD、CMD、CommonJs和ES6的区别
    for in与for of的区别,以及forEach,map,some,every,filter的区别
    EcmaScript 6 十大常用特性
    单行省略号与多行省略号
    Array.prototype.slice.call()详解及转换数组的方法
    返回顶部
  • 原文地址:https://www.cnblogs.com/abclife/p/5770338.html
Copyright © 2011-2022 走看看