Oracle数据库数据恢复、性能优化

找回密码
注册
搜索
热搜: 活动 交友 discuz
发新帖

999

积分

1

好友

942

主题
1#
发表于 2017-4-13 11:52:48 | 查看: 1592| 回复: 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,这个参数八成用不了.

下载专业ORACLE数据库恢复工具PRM-DUL  For Oracle http://www.parnassusdata.com/

如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复!

诗檀软件专业数据库修复团队

服务热线 : 13764045638  QQ: 47079569     邮箱:service@parnassusdata.com
您需要登录后才可以回帖 登录 | 注册

QQ|手机版|Archiver|Oracle数据库数据恢复、性能优化

GMT+8, 2024-12-20 19:16 , Processed in 0.048519 second(s), 21 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部
TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569