联机日志文件损坏后的数据恢复

本文介绍了当Oracle数据库中联机日志文件损坏或丢失时的两种恢复方法:一是删除并重建日志文件组;二是使用ALTER DATABASE CLEAR LOGFILE GROUP命令进行恢复。通过具体SQL操作步骤展示了如何执行这两种恢复方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

联机日志文件损坏后的数据恢复,
1、非当前的联机日志文件损坏或丢失后的恢复
SQL> select * from v$log;
    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ----------
         1          1         11  104857600          1 NO  INACTIVE                685884 27-7月 -06
         2          1         12  104857600          1 NO  INACTIVE                730114 27-7月 -06
         3          1         13  104857600          1 NO  CURRENT                 881907 28-7月 -06
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
删除D:\ORACLE\ORADATA\DB01\REDO01.LOG后启动数据库
SQL> startup
ORACLE 例程已经启动。
Total System Global Area  139533192 bytes
Fixed Size                   453512 bytes
Variable Size             113246208 bytes
Database Buffers           25165824 bytes
Redo Buffers                 667648 bytes
数据库装载完毕。
ORA-00313: 无法打开日志组 1 (线程 1) 的成员
ORA-00312: 联机日志 1 线程 1: 'D:\ORACLE\ORADATA\DB01\REDO01.LOG'
错误提示日志组1坏掉了!
SQL> select status from v$instance;
STATUS
------------
MOUNTED
此时有两种方法可以恢复日志,
方法一:把这个日志组删除,重新建一个新的;
SQL> alter database drop logfile group 1;
数据库已更改。
SQL> alter database add logfile group 1
  2  ('d:\oracle\oradata\db01\redo01.log') size 100M;
数据库已更改。
SQL> alter database open;
数据库已更改。
SQL> select * from v$log;
    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ----------
         1          1          0  104857600          1 YES UNUSED                       0
         2          1         12  104857600          1 NO  INACTIVE                730114 27-7月 -06
         3          1         13  104857600          1 NO  CURRENT                 881907 28-7月 -06
方法二:用alter database clear logfile group xx来恢复
关闭数据库,删除D:\ORACLE\ORADATA\DB01\REDO02.LOG
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area  139533192 bytes
Fixed Size                   453512 bytes
Variable Size             113246208 bytes
Database Buffers           25165824 bytes
Redo Buffers                 667648 bytes
数据库装载完毕。
ORA-00313: 无法打开日志组 2 (线程 1) 的成员
ORA-00312: 联机日志 2 线程 1: 'D:\ORACLE\ORADATA\DB01\REDO02.LOG'

SQL> alter database clear logfile group 2;
数据库已更改。
SQL> select * from v$log;
    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ----------
         1          1          0  104857600          1 NO  CLEARING_CURRENT        956570 28-7月 -06
         2          1          0  104857600          1 NO  UNUSED                       0 27-7月 -06
         3          1         13  104857600          1 NO  INACTIVE                881907 28-7月 -06
SQL> alter database open;
数据库已更改。
SQL> select * from v$log;
    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ----------
         1          1          0  104857600          1 NO  CLEARING                956570 28-7月 -06
         2          1         15  104857600          1 NO  CURRENT                 957431 28-7月 -06
         3          1         13  104857600          1 NO  INACTIVE                881907 28-7月 -06
SQL>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值