【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;
磁阵掉电导致控制文件与数据文件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;