删除online日志测试及ORA-600 [4194]错误的处理(五)

2015-07-16 12:07:50 · 作者: · 浏览: 4
em archive log current;


System altered.


ZLM@ora10g> select group#,thread#,status,archived from v$log;


? ? GROUP#? ? THREAD# STATUS? ? ? ARC
---------- ---------- ---------------- ---
?1? ? 1 ACTIVE? ? ? YES
?2? ? 1 INACTIVE? ? ? YES
?3? ? 1 CURRENT? ? ? NO


--正常关闭数据库
ZLM@ora10g> shutdown immediate
ORA-01031: insufficient privileges
ZLM@ora10g> conn / as sysdba
Connected.
SYS@ora10g> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SYS@ora10g>?
?
--OS上删除current的在线日志文件redo03.log
[oracle@ora10g ~]$ cd /u01/app/oracle/oradata/ora10g
[oracle@ora10g ora10g]$ ls -l
total 1461348
-rw-r----- 1 oracle oinstall? 7520256 Jun 24 11:03 control01.ctl
-rw-r----- 1 oracle oinstall? 7520256 Jun 24 11:03 control02.ctl
-rw-r----- 1 oracle oinstall? 7520256 Jun 24 11:03 control03.ctl
-rw-r----- 1 oracle oinstall 104865792 Jun 24 11:03 example01.dbf
-rw-r----- 1 oracle oinstall? ? 172032 Nov 29? 2014 indx01.dbf
-rw-r----- 1 oracle oinstall? 52429312 Jun 24 11:02 redo01.log
-rw-r----- 1 oracle oinstall? 52429312 Jun 24 10:49 redo02.log
-rw-r----- 1 oracle oinstall? 52429312 Jun 24 11:03 redo03.log
-rw-r----- 1 oracle oinstall 283123712 Jun 24 11:03 sysaux01.dbf
-rw-r----- 1 oracle oinstall 587210752 Jun 24 11:03 system01.dbf
-rw-r----- 1 oracle oinstall? 52436992 Jun 23 16:17 temp01.dbf
-rw-r----- 1 oracle oinstall 173023232 Jun 24 11:03 undotbs01.dbf
-rw-r----- 1 oracle oinstall? 41951232 Jun 24 11:03 users01.dbf
-rw-r----- 1 oracle oinstall 100671488 Jun 24 11:03 zlm01.dbf
[oracle@ora10g ora10g]$ rm -f redo03.log
[oracle@ora10g ora10g]$ ls -l redo*
-rw-r----- 1 oracle oinstall 52429312 Jun 24 11:02 redo01.log
-rw-r----- 1 oracle oinstall 52429312 Jun 24 10:49 redo02.log
[oracle@ora10g ora10g]$?
?
--启动数据库
SYS@ora10g> startup
ORACLE instance started.


Total System Global Area? 524288000 bytes
Fixed Size? ? 1220384 bytes
Variable Size? 322961632 bytes
Database Buffers? 197132288 bytes
Redo Buffers? ? 2973696 bytes
Database mounted.
ORA-00313: open failed for members of log group 3 of thread 1
ORA-00312: online log 3 thread 1: '/u01/app/oracle/oradata/ora10g/redo03.log'


由于启动数据库会检查所有的文件,读取到在线日志文件redo03.log时,就报错了,因为已经被删除


--还原数据库
SYS@ora10g> recover database until cancel;
Media recovery complete.
SYS@ora10g> alter database open;
alter database open
*
ERROR at line 1:
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open


由于之前是正常关闭数据库,在线日志的内容已经写到归档日志文件,利用归档日志进行还原,而还原后的数据库,必须用resetlogs方式来OPEN数据库


SYS@ora10g> alter database open resetlogs;


Database altered.


SYS@ora10g> conn zlm/zlm
Connected.
ZLM@ora10g> select count(*) from t1;


? COUNT(*)
----------
20


ZLM@ora10g>
?
只要是正常关闭数据库的,并且开启了归档,那么即便是删除了current的在线日志,也是可以将数据库重新打开的,并且不会丢失数据(由归档来保证)


测试3:非正常关闭数据库,并删除当前在线日志文件


--添加测试数据后,abort方式关闭数据库
ZLM@ora10g> select group#,thread#,status,archived from v$log;


? ? GROUP#? ? THREAD# STATUS? ? ? ARC
---------- ---------- ---------------- ---
?1? ? 1 CURRENT? ? ? NO
?2? ? 1 UNUSED? ? ? YES
?3? ? 1 INACTIVE? ? ? YES


ZLM@ora10g> insert into t1 select * from dba_objects where rownum<11;


10 rows created.


ZLM@ora10g> select count(*) from t1;


? COUNT(*)
----------
30


ZLM@ora10g> alter system archive log current;


System altered.


ZLM@ora10g> select group#,thread#,status,archived from v$log;


? ? GROUP#? ? THREAD# STATUS? ? ? ARC
---------- ---------- ---------------- ---
?1? ? 1 ACTIVE? ? ? YES
?2? ? 1 CURRENT? ? ? NO
?3? ? 1 INACTIVE? ? ? YES


ZLM@ora10g> shutdown abort
ORA-01031: insufficient privileges
ZLM@ora10g