- 最后登录
- 2017-5-4
- 在线时间
- 81 小时
- 威望
- 999
- 金钱
- 2391
- 注册时间
- 2013-9-11
- 阅读权限
- 150
- 帖子
- 1124
- 精华
- 5
- 积分
- 999
- UID
- 1220
|
1#
发表于 2017-4-13 11:52:48
|
查看: 1593 |
回复: 0
数据库原为归档日志模式,因为redolog日志文件有坏块,启动不起来了,删掉了原来的relog01.log等三个日志文件,重新创建了大小不一样的redolog,后来发现启不来,又重新生成了与原来一样大小的redolog,改档日志模式从归档到非归档,启动不来后,又重新了控制文件,改回了归档,现在库里面没有有效的备份,数据文件的SCN与控制文件的SCN不同了,我怎么能启动到OPEN状态呢?
SQL> recover database using backup controlfile;
ORA-00279: 更改 5439148 (在 11/06/2006 05:32:14 生成) 对于线程 1 是必需的
ORA-00289: 建议: /home/oracle/product/9.2.0/dbs/arch1_1.dbf
ORA-00280: 更改 5439148 对于线程 1 是按序列 # 1 进行的
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
cancel
Media recovery cancelled.
SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-01113: 文件 1 需要介质恢复
ORA-01110: 数据文件 1: '/home/oracle/oradata/ocpdb/system01.dbf'
现在执行recover 提示我必须要用reset log 启到open,可是我没办法OPEN了啊.
SQL> recover database;
ORA-00283: 恢复会话因错误而取消
ORA-01610: 使用 BACKUP CONTROLFILE 选项的恢复必须已完成
SQL> !oerr ora 01610
01610, 00000, "recovery using the BACKUP CONTROLFILE option must be done"
// *Cause: Either an earlier database recovery session specified BACKUP
// CONTROLFILE, or the controlfile was recreated with the RESETLOGS
// option, or the controlfile being used is a backup controlfile.
// After that only BACKUP CONTROLFILE recovery is allowed
// and it must be followed by a log reset at the next database open.
// *Action: Perform recovery using the BACKUP CONTROFILE option.
控制文件刚才又删掉了,重建也不行,已经删了建,建了删N次了.
都给你搞得乱了,控制文件没有坏的话不需要动它
就
SQL>recover database
滚到需要redo log的时候cancel掉
SQL>alter database open resetlogs
就行了,可能没有归档出来的数据丢了,因为你的redo log坏了,也许没有数据库丢。
SQL> recover database;
ORA-00283: 恢复会话因错误而取消
ORA-01610: 使用 BACKUP CONTROLFILE 选项的恢复必须已完成
楼上的大哥,我也晕了哦,他不提示我是AUTO还是CANCEL啊.
是我们下面一省局的数据库redolog丢掉了,我原来是归档的了,为了模拟它们的现象,我改成了非归档,又删了redolog,重启了一次,用resetlog,忘了做全备了,就又DOWN掉后,再删了一次,这下玩儿完了,就再也启不来了.
SQL> recover database using backup controlfile until cancel;[/COLOR]
ORA-00279: 更改 5439148 (在 11/06/2006 05:32:14 生成) 对于线程 1 是必需的
ORA-00289: 建议: /home/oracle/product/9.2.0/dbs/arch1_1.dbf
ORA-00280: 更改 5439148 对于线程 1 是按序列 # 1 进行的
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
cancel
ORA-01547: 警告: RECOVER 成功但 OPEN RESETLOGS 将出现如下错误
ORA-01194: 文件1需要更多的恢复来保持一致性
ORA-01110: 数据文件 1: '/home/oracle/oradata/ocpdb/system01.dbf'
ORA-01112: 未启动介质恢复
是它们的redolog日志文件有坏块儿了.他们的库没有删redolog,我是为了模仿它们,把我的环境的redolog给删了.
现在的麻烦就是,两边都曾经resetlogs启来过一次了,而且启动后没有做export等物理或者逻辑备份.面临无法启动的危险!!!
我是在测试环境上的,但他们是生产环境,clear做过了,就是clear之后重启成功的,resetlogs第一次成功了,现在是第二次resetlogs启不来了.
楼上的兄弟,控制文件也是删了重建了N次了哦. 你看我贴的日志
SQL> startup nomount;
ORACLE instance started.
Total System Global Area| 269554828|bytes
Fixed Size | 451724|bytes
Variable Size | 134217728|bytes
Database Buffers | 134217728|bytes
Redo Buffers | 667648|bytes
SQL> CREATE CONTROLFILE REUSE DATABASE "OCPDB" RESETLOGS ARCHIVELOG
-- SET STANDBY TO MAXIMIZE PERFORMANCE
MAXLOGFILES 5
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 1
MAXLOGHISTORY 226
LOGFILE
GR 2 3 4 5 6 7 8 9 OUP 1 '/home/oracle/oradata/ocpdb/redo01.log' SIZE 100M,
GROUP 2 '/home/oracle/oradata/ocpdb/redo02.log' SIZE 100M,
GROUP 3 '/home/oracle/oradata/ocpdb/redo03.log' SIZE 100M
-- STANDBY LOGFILE
DATAFIL 10 11 12 13 E
14 '/home/oracle/oradata/ocpdb/system01.dbf',
'/home/oracle/oradata/ocpdb/undotbs1.dbf',
'/home/oracle/oradata/ocpdb/cwmlite01.dbf',
'/home/oracle/oradata/ocpdb/drsys01.dbf',
'/home/oracle/oradata/ocpdb/example01.dbf',
'/ 15 16 17 18 19 home/oracle/oradata/ocpdb/indx01.dbf',
20 '/home/oracle/oradata/ocpdb/odm01.dbf',
21 '/home/oracle/oradata/ocpdb/tools01.dbf',
22 '/home/oracle/oradata/ocpdb/users01.dbf',
23 '/home/oracle/oradata/ocpdb/xdb01.dbf',
24 '/home/oracle/oradata/ocpdb/perfstat.dbf',
25 '/home/oracle/oradata/ocpdb/users02.dbf',
26 '/home/oracle/oradata/ocpdb/hwm.dbf',
27 '/home/oracle/oradata/ocpdb/users03.dbf',
28 '/home/oracle/oradata/ocpdb/snap2.dbf',
29 '/home/oracle/oradata/ocpdb/defaultsp.dbf',
30 '/home/oracle/oradata/ocpdb/snap3.dbf'
31 CHARACTER SET ZHS16GBK
32 ;
Control file created.
SQL> recover database using backup controlfile until cancel;
ORA-00279: 更改 5439148 (在 11/06/2006 05:32:14 生成) 对于线程 1 是必需的
ORA-00289: 建议: /home/oracle/product/9.2.0/dbs/arch1_1.dbf
ORA-00280: 更改 5439148 对于线程 1 是按序列 # 1 进行的
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
cancel
ORA-01547: 警告: RECOVER 成功但 OPEN RESETLOGS 将出现如下错误
ORA-01194: 文件1需要更多的恢复来保持一致性
ORA-01110: 数据文件 1: '/home/oracle/oradata/ocpdb/system01.dbf'
ORA-01112: 未启动介质恢复
SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-01194: 文件1需要更多的恢复来保持一致性
ORA-01110: 数据文件 1: '/home/oracle/oradata/ocpdb/system01.dbf'
不行啊兄弟,还是一样的报错:
SQL> shutdown immediate;
ORA-01109: 数据库未打开
Database dismounted.
ORACLE instance shut down.
SQL> startup nomount;
ORACLE instance started.
Total System Global Area| 269554828|bytes
Fixed Size | 451724|bytes
Variable Size | 134217728|bytes
Database Buffers | 134217728|bytes
Redo Buffers | 667648|bytes
SQL> @creat_ctl.sql
Control file created.
SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-01194: 文件1需要更多的恢复来保持一致性
ORA-01110: 数据文件 1: '/home/oracle/oradata/ocpdb/system01.dbf'
生产库那边resetlogs 之后,我忘了叫他们做export full的逻辑全备了,而且生产上的空间紧张,不允许归档日志模式. 有坏块的redolog文件,我也忘了drop掉重建,就叫他们先shutdown ,做一次冷备.结果呢,shutdown半天下不来,就让他们shutdown abort了,然后再让他们试着重启,报ORACLE内部错误,ORA-00600: internal error code, arguments: [25012], [1], [2], [], [], [], [], []. 然后我不敢乱动了,就叫他们马上做冷备,38G的数据文件到现在还没备完呢.
这是生产机的情况,我刚才贴的日志都是我这儿测试机的日志,
1.controlfile 我删了建,建了删,好多次了.
2.redolog文件我也是drop之后又create 三遍了.
3.我因为是测试机,空间紧张,所有的备份早删了,生产机那边只有按用户的export逻辑备份.
initSID.ora 我也加入了以下语句:
_allow_resetlogs_corruption = TRUE
_corrupted_rollback_segments=TRUE
_offline_rollback_segments=TURE
是啊,resetlogs就是清一下日志,关系不大了,现在是我怎么才能把它open起来呢.
1.在initSID.ora文件中添加如下一行:
_allow_readonly_corruption = TRUE
2.在MOUNT状态下,以read only 打开数据库?
SQL> startup mount;
ORACLE instance started.
Total System Global Area| 269554828|bytes
Fixed Size | 451724|bytes
Variable Size | 134217728|bytes
Database Buffers | 134217728|bytes
Redo Buffers | 667648|bytes
Database mounted.
SQL> alter database open readonly ;
alter database open readonly
*
ERROR at line 1:
ORA-02288: 无效的 OPEN 模式
SQL> alter database open read only;
alter database open read only
*
ERROR at line 1:
ORA-16008: 不确定的控制文件检查点
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项
3.现在OPEN不成功,如果成功了,我就可以export full了,然后再重建库,重新导入回来,,对吗?
楼上的兄弟,现在生产库跟我的模拟库状态一样了,唯一的区别是生产库的控制文件没有重建过呢.而且报的错也一样,就是那个数据文件需要RECOVER了.
忘了说了,他们的库还不是9i的,也不是8i,是8.0.6,估计那个read only 参数用不上.不过一会儿试试再说.
现在这个参数也用不了啦啊!initSID.ora已经添加了.
SQL> alter database open read only;
alter database open read only
*
ERROR at line 1:
ORA-16008: 不确定的控制文件检查点
生产环境的数据库是oracle 8.0.6,这个参数八成用不了.
|
|