损坏当前联机日志出问题了,HELP ME!!

[复制链接]
查看11 | 回复8 | 2004-6-10 08:32:51 | 显示全部楼层 |阅读模式
我的系统是WIN2000 SERVER ORACLE 817,我再做"损坏当前联机日志"的恢复方法的实验,出现了问题,我想用通过备份来恢复,我的步骤是:
1)先用
SQL> select group#,sequence#,archived,status from v$log;查出来现在活动的日志是 GROUP#SEQUENCE# ARC STATUS
------- ---------- --- ----------------
1 35 YES INACTIVE
2 34 YES INACTIVE
3 36 NOCURRENT
2)然后shutdown abort,关闭的数据库(因为我想模拟日志组中有活动的事务)
3)删除F:\Oracle\oradata\test1\redo03
4)startup提示
ORA-00313: open failed for members of log group 3 of thread 1
ORA-00312: online log 3 thread 1: f:\ORACLE\ORADATA\TEST1\REDO03.LOG'
ORA-27041: unable to open file
OSD-04002: unable to open file
O/S-Error: (OS 2) 系统找不到指定的文件
SQL> select group#,sequence#,archived,status from v$log;
GROUP#SEQUENCE# ARCHIVED STATUS
---------- ---------- -------- ----------------
1
1 NO CURRENT
2
2 YESINACTIVE
3
3 YESINACTIVE
发现是当前日志
5)SQL> alter database clear unarchived logfile group 1;
alter database clear unarchived logfile group 1
*
ERROR at line 1:
ORA-01624: log 3 needed for crash recovery of thread 1
ORA-00312: online log 3 thread 1: 'F:\ORACLE\ORADATA\TEST1\REDO03.LOG'
6)recover database until cancel;
出现
SQL> recover database until cancel;
ORA-00279: ?? 1946814 (? 06/10/2004 08:32:51 ??) ???? 1 ????
ORA-00289: ??: F:\ORACLE\ORADATA\ARCHIVELOG36_1.ARC
ORA-00280: ?? 1946814 ???? 1 ???? # 36 ???

指定日志: {=suggested | filename | AUTO | CANCEL}
cancel;-----------------------------------------------因为归档中只到了ARCHIVELOG35_1.ARC
ORA-00308: ???????? 'cancel;'
ORA-27041: ??????
OSD-04002: N^7(4r?*ND alter database open resetlogs;
alter database open resetlogs
*
ERROR 位于第 1 行:
ORA-01194: ??3?????????????
ORA-01110: ???? 3: 'F:\ORACLE\ORADATA\TEST1\USERS01.DBF'
8)我认为是数据文件有问题,进行了F:\>copy d:\hotlocal\system01.dbf f:\oracle\oradata\test1\
改写 f:\oracle\oradata\test1\SYSTEM01.DBF 吗? (Yes/No/All): y
已复制 1 个文件。
F:\>copy d:\hotlocal\rbs01.dbf f:\oracle\oradata\test1\
改写 f:\oracle\oradata\test1\RBS01.DBF 吗? (Yes/No/All): y
已复制 1 个文件。
SQL> recover database;
ORA-00279: ?? 1926710 (? 06/09/2004 17:33:44 ??) ???? 1 ????
ORA-00289: ??: F:\ORACLE\ORADATA\ARCHIVELOG33_1.ARC
ORA-00280: ?? 1926710 ???? 1 ???? # 33 ???

指定日志: {=suggested | filename | AUTO | CANCEL}
F:\Oracle\oradata\test1\archive\TEST1T001S00033.ARC
ORA-00283: ??????????
ORA-00313: ??????? 3 (?? 1) ???
ORA-00312: ???? 3 ?? 1: 'F:\ORACLE\ORADATA\TEST1\REDO03.LOG'
ORA-27041: ??????
OSD-04002: N^7(4r?*ND shutdown immediate;
ORA-01109: ??????

已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。
Total System Global Area113498140 bytes
Fixed Size
75804 bytes
Variable Size
56754176 bytes
Database Buffers 56590336 bytes
Redo Buffers
77824 bytes
数据库装载完毕。
ORA-01113: ?? 1 ??????
ORA-01110: ???? 1: 'F:\ORACLE\ORADATA\TEST1\SYSTEM01.DBF
进行数据文件的恢复,还是STARTUP不成功.我要怎么办呀??
回复

使用道具 举报

千问 | 2004-6-10 08:32:51 | 显示全部楼层
你这种现场,只能用 不完全恢复的概念来处理
最终都要resetlog
回复

使用道具 举报

千问 | 2004-6-10 08:32:51 | 显示全部楼层
这样的情况只能进行不完全恢复,我的操作如下:
SQL> alter database clear unarchived logfile group 1;
alter database clear unarchived logfile group 1
*
ERROR 位于第 1 行:
ORA-01624: 线程1的紧急恢复需要日志1
ORA-00312: 联机日志 1 线程 1: 'C:\ORACLE\ORADATA\PFERP\REDO01.LOG'

SQL> recover database until cancel;
ORA-00279: 更改 17735237 (在 06/10/2004 16:10:56 生成) 对于线程 1 是必需的
ORA-00289: 建议: C:\ORACLE\ORADATA\PFERP\ARCHIVE\ARC00001.001
ORA-00280: 更改 17735237 对于线程 1 是按序列 # 1 进行的

指定日志: {=suggested | filename | AUTO | CANCEL}
auto
ORA-00328: 归档日志在更改 17730215 结束,需要稍后的更改 17735237
ORA-00334: 归档日志: 'C:\ORACLE\ORADATA\PFERP\ARCHIVE\ARC00001.001'

ORA-01547: 警告: RECOVER 成功但 OPEN RESETLOGS 将出现如下错误
ORA-01194: 文件1需要更多的恢复来保持一致性
ORA-01110: 数据文件 1: 'C:\ORACLE\ORADATA\PFERP\SYSTEM01.DBF'

SQL> recover database until cancel;
ORA-00279: 更改 17735237 (在 06/10/2004 16:10:56 生成) 对于线程 1 是必需的
ORA-00289: 建议: C:\ORACLE\ORADATA\PFERP\ARCHIVE\ARC00001.001
ORA-00280: 更改 17735237 对于线程 1 是按序列 # 1 进行的

指定日志: {=suggested | filename | AUTO | CANCEL}
C:\oracle\oradata\pferp\REDO01.LOG
已应用的日志。
完成介质恢复。
SQL> alter database open resetlogs;
数据库已更改。
SQL> select
2group#, sequence#,archived,status
3from v$log;
GROUP#SEQUENCE# ARC STATUS
---------- ---------- --- ----------------
1
1 NOCURRENT
2
0 YES UNUSED
3
0 YES UNUSED
SQL>
日志组1我是以之前的备份restore的。
回复

使用道具 举报

千问 | 2004-6-10 08:32:51 | 显示全部楼层
恩,怎么做,可以具体些吗?我就是只有做不完全恢复了.
回复

使用道具 举报

千问 | 2004-6-10 08:32:51 | 显示全部楼层
最初由 lwlv2 发布
[B]我的系统是WIN2000 SERVER ORACLE 817,我再做"损坏当前联机日志"的恢复方法的实验,出现了问题,我想用通过备份来恢复,我的步骤是:
1)先用
SQL> select group#,sequence#,archived,status from v$log;查出来现在活动的日志是 GROUP#SEQUENCE# ARC STATUS
------- ---------- --- ----------------
1 35 YES INACTIVE
2 34 YES INACTIVE
3 36 NOCURRENT
2)然后shutdown abort,关闭的数据库(因为我想模拟日志组中有活动的事务)
3)删除F:\Oracle\oradata\test1\redo03
4)startup提示
ORA-00313: open failed for members of log group 3 of thread 1
ORA-00312: online log 3 thread 1: f:\ORACLE\ORADATA\TEST1\REDO03.LOG'
ORA-27041: unable to open file
OSD-04002: unable to open file
O/S-Error: (OS 2) 系统找不到指定的文件
SQL> select group#,sequence#,archived,status from v$log;
GROUP#SEQUENCE# ARCHIVED STATUS
---------- ---------- -------- ----------------
1
1 NO CURRENT[/COLOR]
2
2 YESINACTIVE
3
3 YESINACTIVE
发现是当前日志
5)SQL> alter database clear unarchived logfile group 1;
alter database clear unarchived logfile group 1
*
ERROR at line 1:
ORA-01624: log 3 needed for crash recovery of thread 1
ORA-00312: online log 3 thread 1: 'F:\ORACLE\ORADATA\TEST1\REDO03.LOG'
[/B]

你这时的当前日志组是1呀,而不是损坏的3。
所以你在第5步应该
5)SQL> alter database clear logfile group 3;
回复

使用道具 举报

千问 | 2004-6-10 08:32:51 | 显示全部楼层
现在成了
SVRMGR> startup
已启动 ORACLE 实例。
系统全局区域合计有
113498140个字节
Fixed Size
75804个字节
Variable Size
56754176个字节
Database Buffers
56590336个字节
Redo Buffers
77824个字节
已装入数据库。
ORA-03113: end-of-file on communication channel
这个样子了,不是按照 zhangjinbo 的做的,(因为刚看到 zhangjinbo 的帖子),我下面怎么处理呢??
回复

使用道具 举报

千问 | 2004-6-10 08:32:51 | 显示全部楼层
grassbell
你这时的当前日志组是1呀,而不是损坏的3。
所以你在第5步应该
5)SQL> alter database clear logfile group 3;

哦?对应该是3.不过现在我的数据库成了上述样子了,我想知道我怎么再用SQPLUS呀?我SQLPLUS进不去的
回复

使用道具 举报

千问 | 2004-6-10 08:32:51 | 显示全部楼层
最初由 lwlv2 发布
[B]
哦?对应该是3.不过现在我的数据库成了上述样子了,我想知道我怎么再用SQPLUS呀?我SQLPLUS进不去的 [/B]

你的情况,我没能重现。
但是你现在redo03.log不存在,应该先把它重建
alter database clear logfile group 3;
然后,recover database until cancel;
一直回车,尽量使用归档日志
最后,再来一次recover database until cancel;
输入 cancel;
打开数据库
alter database open resetlogs;
试试看。
回复

使用道具 举报

千问 | 2004-6-10 08:32:51 | 显示全部楼层
http://www.itpub.net/showthread.php?threadid=140687
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行