Chinaunix

标题: Oracle数据库联机日志文件丢失处理方法(总结)! [打印本页]

作者: remen    时间: 2005-09-17 15:07
标题: Oracle数据库联机日志文件丢失处理方法(总结)!
Oracle数据库联机日志文件丢失处理方法

试验一:用命令清空日志组方法
1、        查看原来表中数据
SQL>; conn test/test
Connected.
SQL>; select * from test;

       TEL
----------
         1
         2
         3
2、插入新数据
SQL>; insert into test values(4);
1 row created.
SQL>; commit;
Commit complete.
SQL>;
3、        正常关闭数据库
4、        利用os command删除所有redo文件
5、        启动数据库
SQL>; startup
ORACLE instance started.
Total System Global Area  353862792 bytes
Fixed Size                   730248 bytes
Variable Size             285212672 bytes
Database Buffers           67108864 bytes
Redo Buffers                 811008 bytes
Database mounted.
ORA-00313: open failed for members of log group 1 of thread 1
ORA-00312: online log 1 thread 1: '/T3/ORACLE/oradata/ORA9/redo01.log'
6、        查看当前日志状态
SQL>; select * from v$log;

    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS
---------- ---------- ---------- ---------- ---------- --- ----------------
FIRST_CHANGE# FIRST_TIME
------------- ----------
         1          1          2  104857600          1 YES INACTIVE
       487837 01-9月 -05

         2          1          4  104857600          1 NO  CURRENT
       487955 01-9月 -05

         3          1          3  104857600          1 YES INACTIVE
       487839 01-9月 -05
看来redo01.log不是当前日志,对于这类非当前日志可以直接clear,系统会重新自动生成一个redo文件

7、SQL>; alter database clear logfile group 1;
Database altered.
7、        继续启动db
SQL>; alter database open;
alter database open
*
ERROR at line 1:
ORA-00313: open failed for members of log group 2 of thread 1
ORA-00312: online log 2 thread 1: '/T3/ORACLE/oradata/ORA9/redo02.log'
8、        看来redo也得恢复,但是redo02是当前redo,直接clear是不行的
SQL>; alter database clear logfile group 2;
alter database clear logfile group 2
*
ERROR at line 1:
ORA-00350: log 2 of thread 1 needs to be archived
ORA-00312: online log 2 thread 1: '/T3/ORACLE/oradata/ORA9/redo02.log'
尝试clear unarchived logfile group ,报错:
SQL>; alter database clear unarchived logfile group 2;
alter database clear unarchived logfile group 2
*
ERROR at line 1:
ORA-00313: open failed for members of log group 2 of thread 1
ORA-00312: online log 2 thread 1: '/T3/ORACLE/oradata/ORA9/redo02.log'
ORA-27037: unable to obtain file status
SVR4 Error: 2: No such file or directory
Additional information: 3
看来他是因为找不到这个文件,从有效的备份中cp一个过来看看
SQL>; host cp /T3/ORACLE/oradatabak/redo02* /T3/ORACLE/oradata/ORA9

SQL>; alter database clear unarchived logfile group 2;

Database altered.
搞定……….

9、        按照oracle的某些做法也是可以的
SQL>; alter database clear unarchived logfile group 1 unrecoverable datafile;

Database altered.

10、但是对于非当前日志就都可以,下面看看redo03
SQL>;  alter database clear logfile group 3;

Database altered.

结论:
如果数据库是正常shutdown,非当前日志都可以直接clear来重新生成,而且不丢失数据,因为正常关闭db,数据已经写入dbf文件了。唯独当前日志不可以,当前日志必须首先从有效的备份中拷贝一个日志文件过来,然后用
alter database clear unarchived logfile group n 或alter database clear unarchived logfile group n,除此之外,还可以用下面的方法来做

方法二:用cancel模式恢复数据库
前面的出错提示,步骤都一样,唯独恢复的方法不一样
SQL>; startup
ORACLE instance started.
Total System Global Area  353862792 bytes
Fixed Size                   730248 bytes
Variable Size             285212672 bytes
Database Buffers           67108864 bytes
Redo Buffers                 811008 bytes
Database mounted.
ORA-00313: open failed for members of log group 1 of thread 1
ORA-00312: online log 1 thread 1: '/T3/ORACLE/oradata/ORA9/redo01.log'
看看丢失了哪些redo
SQL>; host ls /T3/ORACLE/oradarta/ORA9/redo*
/T3/ORACLE/oradarta/ORA9/redo*: No such file or directory
看来redo都丢了
直接recover
SQL>; recover database until cancel;
Media recovery complete.
这个时候redo还没有生成
SQL>; host ls /T3/ORACLE/oradata/ORA9/redo*
/T3/ORACLE/oradata/ORA9/redo*: No such file or directory
启动数据库
SQL>; alter database open ;
alter database open
*
ERROR at line 1:
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open

SQL>;  alter database open resetlogs;
Database altered.
(注意,这里必须用resetlogs,否则会错误的
SQL>; alter database open noresetlogs;
alter database open noresetlogs
*
ERROR at line 1:
ORA-00313: open failed for members of log group 1 of thread 1
ORA-00312: online log 1 thread 1: '/T3/ORACLE/oradata/ORA9/redo01.log'
SQL>;
Resetlogs其实就是根据控制文件让系统自动重新生成redo,如果noresetlog的话,就不会重新生成redo,缺少了文件,db自然无法启动)
SQL>;  host ls /T3/ORACLE/oradata/ORA9/redo*
/T3/ORACLE/oradata/ORA9/redo01.log  /T3/ORACLE/oradata/ORA9/redo02.log  /T3/ORACLE/oradata/ORA9/redo03.log
SQL>;
检验
SQL>; select * from test.test;

       TEL
----------
         1
         2
         3
         4
SQL>;
数据一点儿都没有丢失

结论:
如果数据库是正常关闭的,用recover database until cancel可以轻松恢复或者说重新建立所有的redo,不再区分是否是当前日志,而且由于正常关闭,不会丢失任何数据,唯一可能丢失的情况就是如果日志还没有归档
这种恢复方法 由于要resetlogs,所以在恢复完成后,日志清零,以前的备份不再起作用,所以建议立即备份
SQL>; archive log list;
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            /T3/ORACLE/arch
Oldest online log sequence     0
Next log sequence to archive   1
Current log sequence           1
SQL>;


实验三:通过重新生成控制文件来恢复redo
前面的都一样,只是处理方法不一样
SQL>; startup
ORACLE instance started.

Total System Global Area  353862792 bytes
Fixed Size                   730248 bytes
Variable Size             285212672 bytes
Database Buffers           67108864 bytes
Redo Buffers                 811008 bytes
Database mounted.
ORA-00313: open failed for members of log group 1 of thread 1
ORA-00312: online log 1 thread 1: '/T3/ORACLE/oradata/ORA9/redo01.log'

SQL>; alter database backup controlfile to trace;

Database altered.

SQL>; shutdown immediate
ORA-01109: database not open

Database dismounted.
ORACLE instance shut down.
SQL>;
2、        修改一下刚才生成的那个文件
CREATE CONTROLFILE REUSE DATABASE "ORA9"  RESETLOGS  ARCHIVELOG
--  SET STANDBY TO MAXIMIZE PERFORMANCE
    MAXLOGFILES 50
    MAXLOGMEMBERS 5
    MAXDATAFILES 100
    MAXINSTANCES 1
    MAXLOGHISTORY 226
LOGFILE
  GROUP 1 '/T3/ORACLE/oradata/ORA9/redo01.log'  SIZE 100M,
  GROUP 2 '/T3/ORACLE/oradata/ORA9/redo02.log'  SIZE 100M,
  GROUP 3 '/T3/ORACLE/oradata/ORA9/redo03.log'  SIZE 100M
-- STANDBY LOGFILE
DATAFILE
  '/T3/ORACLE/oradata/ORA9/system01.dbf',
  '/T3/ORACLE/oradata/ORA9/undotbs01.dbf',
  '/T3/ORACLE/oradata/ORA9/cwmlite01.dbf',
  '/T3/ORACLE/oradata/ORA9/drsys01.dbf',
  '/T3/ORACLE/oradata/ORA9/example01.dbf',
  '/T3/ORACLE/oradata/ORA9/indx01.dbf',
  '/T3/ORACLE/oradata/ORA9/odm01.dbf',
  '/T3/ORACLE/oradata/ORA9/tools01.dbf',
  '/T3/ORACLE/oradata/ORA9/users01.dbf',
  '/T3/ORACLE/oradata/ORA9/xdb01.dbf',
  '/T3/ORACLE/oradata/ORA9/test01.dbf'
CHARACTER SET ZHS16GBK
;
另存为一个脚本,运行他
SQL>; @clone.sql
Control file created.
SQL>; alter database open resetlogs;
Database altered.
SQL>;
搞定……………

结论:这种方法的关键是重新创建控制文件,后面的步骤和前面的道理一样的

前面的三种方法都是假设db是正常关闭的,数据已经写入数据库文件中,所以不会由数据存在redo种,所以clear的话也不会有数据丢失


方法四:修改系统参数方法
1、        插入数据
SQL>; select * from test;

       TEL
----------
         1
         2
         3
         4

SQL>; insert into test values(5);

1 row created.

SQL>; commit;

Commit complete.

SQL>;
2、        强行关闭
SQL>; shutdown abort
ORACLE instance shut down.
SQL>;
3、        手工模拟删除redo
4、        启动db
SQL>; startup
ORACLE instance started.

Total System Global Area  353862792 bytes
Fixed Size                   730248 bytes
Variable Size             285212672 bytes
Database Buffers           67108864 bytes
Redo Buffers                 811008 bytes
Database mounted.
ORA-00313: open failed for members of log group 3 of thread 1
ORA-00312: online log 3 thread 1: '/T3/ORACLE/oradata/ORA9/redo03.log'
ORA-27037: unable to obtain file status
SVR4 Error: 2: No such file or directory
Additional information: 3
5、        尝试使用前3中方法中最简单的
SQL>; recover database until cancel;
ORA-00279: change 550174 generated at 09/02/2005 16:00:19 needed for thread 1
ORA-00289: suggestion : /T3/ORACLE/arch/1_1.dbf
ORA-00280: change 550174 for thread 1 is in sequence #1
Specify log: {<RET>;=suggested | filename | AUTO | CANCEL}
看来不行
6、        修改init.ora,加入一行
_allow_resetlogs_corruption=true
7、        启动with pfile
SQL>; startup
ORACLE instance started.
Total System Global Area  320308312 bytes
Fixed Size                   730200 bytes
Variable Size             285212672 bytes
Database Buffers           33554432 bytes
Redo Buffers                 811008 bytes
Database mounted.
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open

SQL>; host ls /T3/ORACLE/oradata/ORA9/redo*
/T3/ORACLE/oradata/ORA9/redo*: No such file or directory
SQL>; alter database open resetlogs;
Database altered.

SQL>; host ls /T3/ORACLE/oradata/ORA9/redo*
/T3/ORACLE/oradata/ORA9/redo01.log  /T3/ORACLE/oradata/ORA9/redo02.log  /T3/ORACLE/oradata/ORA9/redo03.log
8、        检验数据
SQL>; select * from test.test;

       TEL
----------
         1
         2
         3
         4

SQL>;
看到了吧,我们前面由于执行了SHUTDOWN ABORT,这时候对数据的修改还没有保存到数据文件中,虽然执行了COMMIT,这个时候还在联机日志中,等待CKPT触发DBWR写入DATAFILE,但是这个时候执行了SHUTDOWN ABORT,redo被删除后,里面的信息也就丢了,造成数据丢失
9、        备份,去掉那个参数


试验五:丢失当前日志组的成员
1、SQL>; select * from v$logfile;

    GROUP# STATUS  TYPE
---------- ------- -------
MEMBER
--------------------------------------------------------------------------------
         3         ONLINE
/T3/ORACLE/oradata/ORA9/redo03.log

         2         ONLINE
/T3/ORACLE/oradata/ORA9/redo02.log

         1         ONLINE
/T3/ORACLE/oradata/ORA9/redo01.log


    GROUP# STATUS  TYPE
---------- ------- -------
MEMBER
--------------------------------------------------------------------------------
         1         ONLINE
/T3/ORACLE/oradata/ORA9/redo01a.log

         2         ONLINE
/T3/ORACLE/oradata/ORA9/redo02a.log

         3         ONLINE
/T3/ORACLE/oradata/ORA9/redo03a.log

SQL>; select * from v$log;

    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS
---------- ---------- ---------- ---------- ---------- --- ----------------
FIRST_CHANGE# FIRST_TIME
------------- ----------
         1          1          2  104857600          2 YES INACTIVE
       554599 02-9月 -05

         2          1          3  104857600          2 YES INACTIVE
       554601 02-9月 -05

         3          1          4  104857600          2 NO  CURRENT
       554603 02-9月 -05
SQL>;
3、        模拟插入数据
SQL>; conn test/test
Connected.
SQL>; select * from test;

       TEL
----------
         1
         2
         3
         4

SQL>; insert into test values(5);

1 row created.

SQL>; commit
  2  ;

Commit complete.
4、        shutdown db,模拟删除一个当前日志成员
$ cd oradata/ORA9
$ ls redo03*
redo03.log   redo03a.log
$ rm redo03a.log
5、        启动db,表面没有错误
SQL>; startup
ORACLE instance started.

Total System Global Area  353862792 bytes
Fixed Size                   730248 bytes
Variable Size             285212672 bytes
Database Buffers           67108864 bytes
Redo Buffers                 811008 bytes
Database mounted.
Database opened.
SQL>;
6、        查看日至成员
SQL>; select * from v$logfile;

    GROUP# STATUS  TYPE
---------- ------- -------
MEMBER
--------------------------------------------------------------------------------
         3         ONLINE
/T3/ORACLE/oradata/ORA9/redo03.log

         2         ONLINE
/T3/ORACLE/oradata/ORA9/redo02.log

         1         ONLINE
/T3/ORACLE/oradata/ORA9/redo01.log


    GROUP# STATUS  TYPE
---------- ------- -------
MEMBER
--------------------------------------------------------------------------------
         1         ONLINE
/T3/ORACLE/oradata/ORA9/redo01a.log

         2         ONLINE
/T3/ORACLE/oradata/ORA9/redo02a.log

         3 INVALID ONLINE
/T3/ORACLE/oradata/ORA9/redo03a.log
7、        删除出问题的联机日志文件
SQL>; alter database drop logfile member '/T3/ORACLE/oradata/ORA9/redo03a.log';
alter database drop logfile member '/T3/ORACLE/oradata/ORA9/redo03a.log'
*
ERROR at line 1:
ORA-01609: log 3 is the current log for thread 1 - cannot drop members
ORA-00312: online log 3 thread 1: '/T3/ORACLE/oradata/ORA9/redo03.log'
ORA-00312: online log 3 thread 1: '/T3/ORACLE/oradata/ORA9/redo03a.log'


SQL>;
看来当前日志成员是不允许删除的
SQL>; alter system switch logfile;

System altered.

SQL>; select * from v$log;

    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS
---------- ---------- ---------- ---------- ---------- --- ----------------
FIRST_CHANGE# FIRST_TIME
------------- ----------
         1          1          5  104857600          2 NO  CURRENT
       557687 02-9月 -05

         2          1          3  104857600          2 YES INACTIVE
       554601 02-9月 -05

         3          1          4  104857600          2 YES ACTIVE
       554603 02-9月 -05


SQL>; alter database drop logfile member '/T3/ORACLE/oradata/ORA9/redo03a.log';

Database altered.

SQL>;  alter database add logfile member '/T3/ORACLE/oradata/ORA9/redo03a.log' to group 3;

Database altered.
SQL>; select * from v$logfile;

    GROUP# STATUS  TYPE
---------- ------- -------
MEMBER
--------------------------------------------------------------------------------
         3         ONLINE
/T3/ORACLE/oradata/ORA9/redo03.log

         2         ONLINE
/T3/ORACLE/oradata/ORA9/redo02.log

         1         ONLINE
/T3/ORACLE/oradata/ORA9/redo01.log


    GROUP# STATUS  TYPE
---------- ------- -------
MEMBER
--------------------------------------------------------------------------------
         1         ONLINE
/T3/ORACLE/oradata/ORA9/redo01a.log

         2         ONLINE
/T3/ORACLE/oradata/ORA9/redo02a.log

         3 INVALID ONLINE
/T3/ORACLE/oradata/ORA9/redo03a.log
看来还得切换一下日至
SQL>; alter system switch logfile;

System altered.
SQL>; select * from v$logfile;

    GROUP# STATUS  TYPE
---------- ------- -------
MEMBER
--------------------------------------------------------------------------------
         3         ONLINE
/T3/ORACLE/oradata/ORA9/redo03.log

         2         ONLINE
/T3/ORACLE/oradata/ORA9/redo02.log

         1         ONLINE
/T3/ORACLE/oradata/ORA9/redo01.log


    GROUP# STATUS  TYPE
---------- ------- -------
MEMBER
--------------------------------------------------------------------------------
         1         ONLINE
/T3/ORACLE/oradata/ORA9/redo01a.log

         2         ONLINE
/T3/ORACLE/oradata/ORA9/redo02a.log

         3         ONLINE
/T3/ORACLE/oradata/ORA9/redo03a.log

至此,大功告成…………….

结论:
只要日志组的member不是一个,出现前面的4种可能性是非常小的,即使出现了也有相应的恢复方法,所以不必惊慌;
如果memer多于1个,即使坏了其中的几个,也不会 影响数据库的正常启动,启动后,再进行相应的操作即可, 所以这个时候每天察看alert.log就显得非常重要了。


Remen
2005.9.2
作者: remen    时间: 2005-09-17 15:24
标题: Oracle数据库联机日志文件丢失处理方法(总结)!
晕!
费了半天力,总结了这个咚咚,却没人理睬,郁闷!
作者: cattiger    时间: 2005-09-17 21:51
标题: Oracle数据库联机日志文件丢失处理方法(总结)!
我顶,remen属于实干型的,佩服,以后请多多关照!
作者: shooterchan    时间: 2005-09-19 08:26
标题: Oracle数据库联机日志文件丢失处理方法(总结)!

作者: 笑看风云_淡    时间: 2005-09-19 09:14
标题: Oracle数据库联机日志文件丢失处理方法(总结)!
强!!!
作者: txfy    时间: 2005-09-19 09:26
标题: Oracle数据库联机日志文件丢失处理方法(总结)!
不错,支持一下!
作者: 微硬    时间: 2005-09-19 10:26
标题: Oracle数据库联机日志文件丢失处理方法(总结)!
写的好,,正是我这类白菜型DBA需要的好东东,,顶啊`~`~`~`~
作者: lunarseaboy    时间: 2005-09-19 13:15
标题: Oracle数据库联机日志文件丢失处理方法(总结)!
好的不能再好了!!

收藏!
作者: 星海夜航    时间: 2005-09-19 14:32
标题: Oracle数据库联机日志文件丢失处理方法(总结)!
不错,收藏
作者: czc9    时间: 2005-09-19 21:36
标题: Oracle数据库联机日志文件丢失处理方法(总结)!
非常好,谢谢!
作者: hgxtzhou    时间: 2005-09-20 10:27
标题: Oracle数据库联机日志文件丢失处理方法(总结)!
好东冬,经念总结!!!  
作者: jassika    时间: 2005-09-20 10:46
标题: Oracle数据库联机日志文件丢失处理方法(总结)!
这是我最害怕碰到的情况,数据库无法启动,
写的很好,能不能作一系列讲座啊,
嘻嘻,贪得无厌!
作者: TigerEye    时间: 2005-09-20 10:52
标题: Oracle数据库联机日志文件丢失处理方法(总结)!
写的非常好,谢谢
作者: netzh    时间: 2005-09-20 14:25
标题: Oracle数据库联机日志文件丢失处理方法(总结)!
写的不错,顶一吧
作者: amadun    时间: 2005-09-20 17:02
标题: Oracle数据库联机日志文件丢失处理方法(总结)!
好文,狂顶
作者: 我家老婆最美丽    时间: 2005-09-21 09:29
标题: Oracle数据库联机日志文件丢失处理方法(总结)!
好好好!

解释了我对redolog的一些困惑.
作者: sshd    时间: 2005-09-21 15:04
标题: Oracle数据库联机日志文件丢失处理方法(总结)!
Your discussion may not include all the cases:
NO CURRENT
NO ACTIVE
NO INACTIVE
YES INACTIVE
作者: swallowcn    时间: 2005-09-27 21:17
标题: Oracle数据库联机日志文件丢失处理方法(总结)!
楼主,写得很经典,好久我按你的步骤来实际搞几下!
作者: shutter2005    时间: 2005-10-01 09:48
标题: Oracle数据库联机日志文件丢失处理方法(总结)!
下面是我遇到的问题,请教怎么解决不了?

SQL>; connect internal/oracle as sysdba
已连接到空闲例程。
SQL>; startup open
ORACLE 例程已经启动。

Total System Global Area  545252620 bytes
Fixed Size                    70924 bytes
Variable Size             142057472 bytes
Database Buffers          403046400 bytes
Redo Buffers                  77824 bytes
数据库装载完毕。
ORA-00314: ?? 2 (?? 1)????? 47258 ? 47261 ???
ORA-00312: ???? 2 ?? 1: 'D:\ORACLE\ORADATA\ORCL\REDO02.LOG'




以下是我作的恢复步骤,怎么不成功,请教
SQL>; shutdown immediate
ORA-01109: ??????


已经卸载数据库。
ORACLE 例程已经关闭。
SQL>; startup mount
ORACLE 例程已经启动。

Total System Global Area  545252620 bytes
Fixed Size                    70924 bytes
Variable Size             142057472 bytes
Database Buffers          403046400 bytes
Redo Buffers                  77824 bytes
数据库装载完毕。



SQL>; select group#,sequence#,archived,status from v$log;

    GROUP#  SEQUENCE# ARC STATUS
---------- ---------- --- ----------------
         1      47257 NO  INACTIVE
         2      47258 NO  ACTIVE
         3      47259 NO  CURRENT
         

SQL>; alter database clear unarchived logfile group 2;
alter database clear unarchived logfile group 2
*
ERROR 位于第 1 行:
ORA-01624: ??2?????????1
ORA-00312: ???? 2 ?? 1: 'D:\ORACLE\ORADATA\ORCL\REDO02.LOG'






SQL>; shutdown immediate
ORA-01109: ??????


已经卸载数据库。
ORACLE 例程已经关闭。
SQL>; startup open
ORACLE 例程已经启动。

Total System Global Area  545252620 bytes
Fixed Size                    70924 bytes
Variable Size             142057472 bytes
Database Buffers          403046400 bytes
Redo Buffers                  77824 bytes
数据库装载完毕。
ORA-00313: ??????? 2 (?? 1) ???
ORA-00312: ???? 2 ?? 1: 'D:\ORACLE\ORADATA\ORCL\REDO02.LOG'
ORA-27041: ??????
OSD-04002: N^7(4r?*ND<~
O/S-Error: (OS 2) O5M3UR2;5=V86(5DND<~!#


SQL>; select group#,sequence#,archived,status from v$log;

    GROUP#  SEQUENCE# ARC STATUS
---------- ---------- --- ----------------
         1      47257 NO  INACTIVE
         2      47258 NO  ACTIVE
         3      47259 NO  CURRENT



SQL>; alter database clear unarchived logfile group 2;
alter database clear unarchived logfile group 2
*
ERROR 位于第 1 行:
ORA-01624: ??2?????????1
ORA-00312: ???? 2 ?? 1: 'D:\ORACLE\ORADATA\ORCL\REDO02.LOG'



SQL>; shutdown immediate
ORA-01109: ??????


已经卸载数据库。
ORACLE 例程已经关闭。

在init<sid>;.ora中加入如下参数

_allow_resetlogs_corruption=TRUE

SQL>; startup mount
ORACLE 例程已经启动。

Total System Global Area  545252620 bytes
Fixed Size                    70924 bytes
Variable Size             142057472 bytes
Database Buffers          403046400 bytes
Redo Buffers                  77824 bytes
数据库装载完毕。
SQL>;




SQL>; recover database until cancel;
ORA-00279: ?? 7902963519486 (? 09/26/2005 10:25:41 ??) ???? 1 ????
ORA-00289: ??: D:\ORACLE\ORA81\RDBMS\ARC47258.001
ORA-00280: ?? 7902963519486 ???? 1 ???? # 47258 ???


指定日志: {<RET>;=suggested | filename | AUTO | CANCEL}
CANCEL
ORA-01547: ??: RECOVER ??? OPEN RESETLOGS ???????
ORA-01194: ??1?????????????
ORA-01110: ???? 1: 'D:\ORACLE\ORADATA\ORCL\SYSTEM01.DBF'


ORA-01112: ???????


SQL>;


SQL>; alter database open resetlogs;
alter database open resetlogs
*
ERROR 位于第 1 行:
ORA-00603: ORACLE server session terminated by fatal error
作者: 带走战士    时间: 2005-10-01 21:25
标题: Oracle数据库联机日志文件丢失处理方法(总结)!
好!可惜发布的晚了点,ORACLE重新安装了!!!
作者: cow977    时间: 2005-10-02 14:12
标题: Oracle数据库联机日志文件丢失处理方法(总结)!
好,
作者: 来杯绿茶    时间: 2005-10-05 10:01
标题: Oracle数据库联机日志文件丢失处理方法(总结)!
巴错,收藏.
作者: tianliwei    时间: 2005-10-08 09:20
标题: Oracle数据库联机日志文件丢失处理方法(总结)!
文字说明少了些
作者: hjtpal    时间: 2005-10-09 23:05
标题: Oracle数据库联机日志文件丢失处理方法(总结)!
这么好的贴不顶不行啊
作者: wnoracle    时间: 2005-10-10 10:14
标题: Oracle数据库联机日志文件丢失处理方法(总结)!
好啊
作者: nshark    时间: 2005-10-12 03:36
标题: Oracle数据库联机日志文件丢失处理方法(总结)!
学习中,谢谢楼主!
作者: remen    时间: 2005-10-12 09:46
标题: Oracle数据库联机日志文件丢失处理方法(总结)!
原帖由 "shutter2005" 发表:
下面是我遇到的问题,请教怎么解决不了?

SQL>; connect internal/oracle as sysdba
已连接到空闲例程。
SQL>; startup open
ORACLE 例程已经启动。

Total System Global Area  545252620 bytes
Fixed..........

你在recover database until cancel之后手工指定当前redo看看!
作者: hotmanhh    时间: 2005-10-20 13:24
标题: Oracle数据库联机日志文件丢失处理方法(总结)!
崇拜一把,顶一个。
作者: dragoncxb    时间: 2005-11-01 10:02
标题: 挺好的,支持一下!顶顶!!
希望以后有好的经验总结,能够经常联系,谢谢!
dragoncxb@sohu.com
作者: html    时间: 2005-11-01 10:32
精彩!顶!
作者: cht11cht    时间: 2005-11-01 12:33
不错收了
作者: maping    时间: 2005-11-01 21:45
强!收藏了
作者: 森林王子    时间: 2005-11-16 16:21
原帖由 shutter2005 于 2005-10-1 09:48 发表
下面是我遇到的问题,请教怎么解决不了?

SQL>; connect internal/oracle as sysdba
已连接到空闲例程。
SQL>; startup open
ORACLE 例程已经启动。

Total System Global Area  545252620 bytes
...
ORACLE 例程已经关闭。

在init<sid>;.ora中加入如下参数

_allow_resetlogs_corruption=TRUE

SQL>; startup mount
ORACLE 例程已经启动。



我觉得原因在这里,如果你是oracle 9i,默认启动文件是spfile;这个文件是pfile,修改它后,应该用
startup pfile='........init<sid>.ora。可以这样试一下。我按搂主的方法恢复过一遍,挺好的
作者: fg008    时间: 2005-11-17 08:46
收藏了,谢谢
作者: yumiao007    时间: 2005-11-17 10:18
好,很有用,我修复了一个类似的错误,如果有两个relog被误删除了,只有一个relog存在,是不是使用
recover database until cancel;
alter database open resetlogs;
然后
alter database open ;
就可以恢复。

老大帮回答一下对不对,此外,我对log和relog的概念有点混淆,能否帮助回答一下
作者: vshu    时间: 2005-11-17 10:28
顶,强烈支持
作者: 悠长假期    时间: 2005-11-17 15:52
学习ing,顶一下!
作者: 芳long    时间: 2005-11-18 11:25
标题: 可惜啊!
我前些时候每看到这片文章,让我好费一番波折阿!
现在终于找到了阿!
谢谢!
我灌 !!!!!~~~~~~~~~~
作者: linuxaid    时间: 2005-12-01 10:53
顶顶顶顶顶顶
作者: 微硬    时间: 2005-12-06 16:47
顶啊~~~
作者: zflying2000    时间: 2005-12-11 18:30
不错,偶顶一下!
作者: lixiangyue123    时间: 2005-12-12 11:30
好东西啊
作者: motes    时间: 2005-12-12 11:37
标题: Oracle online redologfile 丢失处理
up

[ 本帖最后由 motes 于 2005-12-15 10:44 编辑 ]
作者: wylon    时间: 2005-12-23 23:27
正在学习中呀,刚好可以补补课呀!支持!
作者: 二锅头    时间: 2005-12-24 08:48
一定是有用的,谢谢

收了
作者: wuyoubin_css    时间: 2006-02-15 13:40
不错,很实用,这个问题实际中很有用,我也想过这个问题,不过都没有你这么详细,
收下了,谢谢!
作者: e_david    时间: 2006-03-13 15:03
很好的文章啊,值得学习,谢谢楼主!
作者: e_david    时间: 2006-03-13 16:16
标题: 一点疑问?!
我在8i中,shutdown后将当前日志删除,startup后,在mount下用
SQL>alter database clear unarchived logfile group number 和
SQL>alter database clear unarchived logfile group number unrecoverable datafile
是可以恢复当前日志,并alter database open成功
作者: y_yuan    时间: 2006-03-14 19:02
谢谢楼主的奉献精神!
作者: 西任    时间: 2006-03-15 11:31
谢谢 收藏了 !!!
作者: dragoncxb    时间: 2006-03-23 18:17
标题: 顶!!强烈的顶一下!!
顶!!强烈的顶一下!!
作者: 0000ps    时间: 2006-06-13 12:21
实在太好了~~~
特别是实验3!!

先去试试实验3, 是不是可以解决RedoLog所在的磁盘损坏,必须换路径的问题.
作者: playboylee    时间: 2006-06-13 13:45
好人
作者: maojm    时间: 2006-06-19 11:09
学习中,谢谢!
作者: scrb    时间: 2006-06-19 11:18
提示: 作者被禁止或删除 内容自动屏蔽
作者: imtj    时间: 2006-06-19 11:21
不错,顶一下!
作者: richard_yao    时间: 2006-06-30 12:07
收藏,顶
作者: exitgogo    时间: 2006-06-30 15:59
老文新读,不错,文章言简意赅,支持!
作者: liz2003    时间: 2006-07-06 18:38
收藏了。
作者: zhoumange    时间: 2006-07-09 11:42
支持。。
作者: ergod    时间: 2007-07-18 12:17
按照上面的方法尝试了,在redo和undo都丢失的情况下,进行恢复(单机)
但是不知道rac什么步骤

顶了
作者: unixbeginer    时间: 2007-07-18 13:33
好文章,以后有时间照作一遍
作者: 花和尚    时间: 2007-07-20 12:50
收了,谢谢楼主!
作者: 小李同志    时间: 2008-03-10 16:40
顶,
作者: 小李同志    时间: 2008-03-10 16:48
求助: 急:        我的日志文件全丢了,然后按照remen的方法做了,数据库可以启动了,但是pl/sql还是进不去报错:   ora-00600:internal error code, argument:[4194],[68],[11],[],[],[],[],[]
作者: starmoon2003    时间: 2008-03-11 08:39
标题: 交流
有一点:第一种方法中,如果没有REDLOG 的备份。你如何处理呢?

无法处理吧。
作者: 小李同志    时间: 2008-03-11 12:32
急!!!
没有备份,有一个日志文件redlog01是非归档模式,当前状态.我直接给它recover了,而且recover前我在init.ora中加入了参数:_allow_resetlogs_corruption=ture ,之后又删掉了.结果就出现了以上的错误,用pl/sql进不去了.

[ 本帖最后由 小李同志 于 2008-3-13 09:48 编辑 ]
作者: wstar    时间: 2008-03-28 10:51
太好了。谢谢整理。
希望高手、实干型多多总结自己的实战资料,共享一下。
有助于新手学习。
谢谢了。
作者: wstar    时间: 2008-03-28 11:02
太好了。谢谢整理。
希望高手、实干型多多总结自己的实战资料,共享一下。
有助于新手学习。
谢谢了。
作者: tqmary    时间: 2008-10-20 11:57
总结的很好,正是我需要的,多谢
作者: ie_e    时间: 2008-10-27 18:19
标题: 回复 #1 remen 的帖子
楼主,你的总结已经被我收藏,相信付出会有回报的
作者: icer_repls    时间: 2011-07-08 18:42
好帖  对我这种入门来说很实用 谢谢
作者: rongshiyuan    时间: 2013-01-17 08:58
hao .... hao ...




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2