服务器掉电导致控制文件与数据文件不匹配

来源:互联网 发布:自动发卡源码 编辑:程序博客网 时间:2024/04/29 19:46
【cause】
磁阵掉电导致控制文件与数据文件seq#不一致


测试备份的三个控制文件,都不可用,只有使用recreate control的方法尝试恢复


【solution】
1)由于无法mount,不可以用下面的方法创建现有数据库的控制文件样本:
alter database backup controlfile to trace as '/home/oracle/zxindbf/admin/zxin/control';


通过linux:[strings]命令大致了解该数据库的数据文件情况:


#strings control01.ctl  
}|{z
TZXIN
t-ZXIN
t-ZXIN
zxin
zxin
/zxindata/oracle/redolog/redo01.dbf
/zxindata/oracle/redolog/redo02.dbf
/zxindata/oracle/redolog/redo03.dbf
【                                      ---括号中为CREATE CONTROLFILE所需要的
/zxindata/oracle/system/system.dbf
/zxindata/oracle/system/undo.dbf
/zxindata/oracle/system/sysaux.dbf
/zxindata/oracle/system/temp.dbf        ---去掉
/zxindata/oracle/system/users.dbf
/zxindata/zxin_file0/zxin_data.dbf
/zxindata/zxin_index/zxin_index.dbf
/zxindata/zxin_temp/zxin_temp.dbf
/zxindata/zxin_part1/ZXIN_WATCH_W1a.dbf
/zxindata/zxin_part2/ZXIN_WATCH_W2a.dbf
/zxindata/zxin_part3/ZXIN_WATCH_W3a.dbf
/zxindata/zxin_part4/ZXIN_WATCH_W4a.dbf
/zxindata/zxin_part5/ZXIN_WATCH_W5a.dbf
/zxindata/zxin_part6/ZXIN_WATCH_W6a.dbf
/zxindata/zxin_part7/ZXIN_WATCH_W7a.dbf
/zxindata/zxin_temp/zxin_temp1.dbf      --去掉

/zxindata/oracle/redolog/redo01.dbf
/zxindata/oracle/redolog/redo02.dbf
/zxindata/oracle/redolog/redo03.dbf
/zxindata/oracle/system/system.dbf
/zxindata/oracle/system/undo.dbf
/zxindata/oracle/system/sysaux.dbf
/zxindata/oracle/system/temp.dbf
/zxindata/oracle/system/users.dbf
/zxindata/zxin_file0/zxin_data.dbf
/zxindata/zxin_index/zxin_index.dbf
/zxindata/zxin_temp/zxin_temp.dbf
/zxindata/zxin_part1/ZXIN_WATCH_W1a.dbf
/zxindata/zxin_part2/ZXIN_WATCH_W2a.dbf
/zxindata/zxin_part3/ZXIN_WATCH_W3a.dbf
/zxindata/zxin_part4/ZXIN_WATCH_W4a.dbf
/zxindata/zxin_part5/ZXIN_WATCH_W5a.dbf
/zxindata/zxin_part6/ZXIN_WATCH_W6a.dbf
/zxindata/zxin_part7/ZXIN_WATCH_W7a.dbf
/zxindata/zxin_temp/zxin_temp1.dbf
SYSTEM
UNDOTBS1
SYSAUX
TEMP
USERS
ZXIN_DATA
ZXIN_INDEX
ZXIN_TEMP
SYSTEM
......
控制文件描述中只包含在线日志文件和数据文件


2)重建控制文件,并启动数据库
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "ZXIN" NORESETLOGS  NOARCHIVELOG
    MAXLOGFILES 12
    MAXLOGMEMBERS 3
    MAXDATAFILES 254
    MAXINSTANCES 4
    MAXLOGHISTORY 292
LOGFILE
  GROUP 1 '/zxindata/oracle/redolog/redo01.dbf'  SIZE 2048M,
  GROUP 2 '/zxindata/oracle/redolog/redo02.dbf'  SIZE 2048M,
  GROUP 3 '/zxindata/oracle/redolog/redo03.dbf'  SIZE 2048M
DATAFILE
  '/zxindata/oracle/system/system.dbf',
  '/zxindata/oracle/system/undo.dbf',
  '/zxindata/oracle/system/sysaux.dbf',
  '/zxindata/oracle/system/temp.dbf',
  '/zxindata/oracle/system/users.dbf',
  '/zxindata/zxin_file0/zxin_data.dbf',
  '/zxindata/zxin_index/zxin_index.dbf',
  '/zxindata/zxin_temp/zxin_temp.dbf',
  '/zxindata/zxin_part1/ZXIN_WATCH_W1a.dbf',
  '/zxindata/zxin_part2/ZXIN_WATCH_W2a.dbf',
  '/zxindata/zxin_part3/ZXIN_WATCH_W3a.dbf',
  '/zxindata/zxin_part4/ZXIN_WATCH_W4a.dbf',
  '/zxindata/zxin_part5/ZXIN_WATCH_W5a.dbf',
  '/zxindata/zxin_part6/ZXIN_WATCH_W6a.dbf',
  '/zxindata/zxin_part7/ZXIN_WATCH_W7a.dbf'
CHARACTER SET ZHS16GBK
;


RECOVER DATABASE


ALTER DATABASE OPEN;
---为临时表空间添加临时文件(注意大小与现有数据文件的一致)
ALTER TABLESPACE TEMP ADD TEMPFILE '/zxindata/oracle/system/temp.dbf'
     SIZE 512M REUSE AUTOEXTEND OFF;
     
ALTER TABLESPACE ZXIN_TEMP ADD TEMPFILE '/zxindata/zxin_temp/zxin_temp.dbf'
     SIZE 6G REUSE AUTOEXTEND OFF;
     
ALTER TABLESPACE ZXIN_TEMP ADD TEMPFILE '/zxindata/zxin_temp/zxin_temp1.dbf'
     SIZE 20G REUSE AUTOEXTEND OFF;


3)备份数据
exp system/manager full=y file=/zxindata/full_0701.dmp


3)恢复控制文件三个副本
因为之前尝试各个control是否有用,现在当前的control file只有control02.ctl
需要shutdown immediate,拷贝,恢复三个副本,并修改参数文件control_files


查看当前的control
SQL> show parameters control_files


NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
control_files                        string      /zxindata/oracle/control/contr
                                                 ol02.ctl
SQL> shutdown immediate


#rm -f control01.ctl control03.ctl
#cp control02.ctl control01.ctl
#cp control02.ctl control03.ctl
#rm -f /home/oracle/zxindbf/zxin/define/initzxin.ora
#mv /home/oracle/zxindbf/zxin/define/initzxin.ora_bk /home/oracle/zxindbf/zxin/define/initzxin.ora
SQL> startup nomount
SQL> show parameters control_files


NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
control_files                        string      /zxindata/oracle/control/contr
                                                 ol01.ctl, /zxindata/oracle/con
                                                 trol/control02.ctl, /zxindata/
                                                 oracle/control/control03.ctl
SQL>ALTER DATABASE OPEN;
原创粉丝点击