数据库联机日志文件丢失的恢复方法
数据库联机日志文件丢失的处理方法本文介绍联机日志文件全部丢失的四种处理方法、部分丢失的两种处理方法.
oracle里的联机日志文件 循环记录了数据库所有的事物.它的大小、个数和存储的位置对数据库性能和恢复也是有重要影响的.
本文的测试环境为 WINXP+oracle 9.2.0.1
oracle 安装在d:\oracle中联机日志文件在d:\oracle\oradata\stu01\下.
日志文件分成三组(4,5,6),每个两个日志文件分别是redo01a.log、 redo04b.log、 redo05a.log、 redo05b.log、 redo06a.log、 redo06b.log.
归档方式:unarchive
备份方式:非归档下的冷备份,包括联机日志文件
测试方法:先用一个用户scott建立一个表test
create table test as select * from scott.dept;
insert into test values(20,'jjjj','hefei');
commit;
备注:由于联机日志文件又分成当前活动的和非当前活动的,为了充分模拟,每次删除的时候把三个日志文件组都删除. 数据库联机日志文件丢失的处理方法
本文介绍联机日志文件全部丢失的四种处理方法、部分丢失的两种处理方法.
oracle里的联机日志文件 循环记录了数据库所有的事物.它的大小、个数和存储的位置对数据库性能和恢复也是有重要影响的.
本文的测试环境为 WINXP+oracle 9.2.0.1
oracle 安装在d:\oracle中联机日志文件在d:\oracle\oradata\stu01\下.
日志文件分成三组(4,5,6),每个两个日志文件分别是redo01a.log、 redo04b.log、 redo05a.log、 redo05b.log、 redo06a.log、 redo06b.log.
归档方式:unarchive
备份方式:非归档下的冷备份,包括联机日志文件
测试方法:先用一个用户scott建立一个表test
create table test as select * from scott.dept;
insert into test values(20,'jjjj','hefei');
commit;
备注:由于联机日志文件又分成当前活动的和非当前活动的,为了充分模拟,每次删除的时候把三个日志文件组都删除.
方法一:用命令清空日志文件组
(1)create table test as select * from scott.dept;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
(2)增加条记录
insert into test values(20,'jjjj','hefei');
并且提交
commit;
(3)shutdown
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
(4)SQL> host xcopy d:\oracle\oradata\stu01\*.log d:\oracle\oradata\
改写 D:\oracle\oradata\REDO04A.LOG (Yes/No/All)?a
D:\oracle\oradata\stu01\REDO04A.LOG
D:\oracle\oradata\stu01\REDO04B.LOG
D:\oracle\oradata\stu01\REDO06A.LOG
D:\oracle\oradata\stu01\REDO06B.LOG
D:\oracle\oradata\stu01\REDO05A.LOG
D:\oracle\oradata\stu01\REDO05B.LOG
复制了 6 个文件
(5)在操作系统中删除全部的日志文件.
SQL> host del d:\oracle\oradata\stu01\*.log
SQL> host dir d:\oracle\oradata\stu01\*.log
驱动器 D 中的卷是 应用程序
卷的序列号是 6367-00C0
d:\oracle\oradata\stu01 的目录
找不到文件
(6)重新启动数据库
sql>conn sys as sysdba
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
ORA-00313: 无法打开日志组 4 (线程 1) 的成员
ORA-00312: 联机日志 4 线程 1: 'D:\ORACLE\ORADATA\STU01\REDO04A.LOG'
ORA-00312: 联机日志 4 线程 1: 'D:\ORACLE\ORADATA\STU01\REDO04B.LOG'
########################################################################
说明:现在日志文件丢失了,数据库启动不了,并且丢失的文件组是group 4.
########################################################################
(7) 现在恢复数据库 输入命令行:
SQL> alter database clear unarchived logfile group 4 unrecoverable datafile;
alter database clear unarchived logfile group 4 unrecoverable datafile
*
ERROR 位于第 1 行:
ORA-00313: 无法打开日志组 4 (线程 1) 的成员
ORA-00312: 联机日志 4 线程 1: 'D:\ORACLE\ORADATA\STU01\REDO04B.LOG'
ORA-27041: 无法打开文件
OSD-04002: 无法打开文件
O/S-Error: (OS 2) 系统找不到指定的文件。
ORA-00312: 联机日志 4 线程 1: 'D:\ORACLE\ORADATA\STU01\REDO04A.LOG'
ORA-27041: 无法打开文件
OSD-04002: 无法打开文件
O/S-Error: (OS 2) 系统找不到指定的文件。
说明:数据库恢复失败,因为group 4时当前的日志文件组
(8)如果我们恢复group 5和group 6时是可以的//注意这里是重构联机日志文件
SQL> alter database clear unarchived logfile group 5 unrecoverable datafile;
数据库已更改。
SQL> alter database clear unarchived logfile group 6 unrecoverable datafile;
数据库已更改。
在查看d:\oracle\oradata\stu01\下的文件看看能恢复吗
SQL> host dir d:\oracle\oradata\stu01\*.log
驱动器 D 中的卷是 应用程序
卷的序列号是 6367-00C0
d:\oracle\oradata\stu01 的目录
2006-05-03 21:25 20,972,032 REDO05A.LOG
2006-05-03 21:25 20,972,032 REDO05B.LOG
2006-05-03 21:27 20,972,032 REDO06A.LOG
2006-05-03 21:27 20,972,032 REDO06B.LOG
4 个文件 83,888,128 字节
0 个目录 364,437,504 可用字节
我们发现group5 和group6 是恢复了 但是group 4是没恢复成功
(9)我们现在打开数据库
SQL> alter database open;
alter database open
*
ERROR 位于第 1 行:
ORA-03113: 通信通道的文件结束
说明:因为group 4 我们没恢复成功 所以数据库打不开
(10)那现在只有把d:\oracle\oradata\redo01a.log 和redo04b.log copy 回d:\oracle\oradata\stu01\下
(11)SQL> conn sys as sysdba
请输入口令:
已连接到空闲例程。
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
数据库已经打开。
(12)
SQL> select * from scott.test;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
20 jjjj hefei
#################################################################################
特别注意在步骤(7)中不是当前活动的联机日志可以恢复成功,如果是联机活动日志就没办法恢复了
#################################################################################
7) 现在恢复数据库 输入命令行:
SQL> alter database clear unarchived logfile group 4 unreco
页:
[1]