Oracle数据库级drop redolog并不危险
有些DBA害怕在生产库上做REDO LOG的删除操作,因为担心把状态为ACTIVE和ACITVE的redolog group给删除造成数据库事故。
实际上,如果从数据库级删除状态为CURRENT和ACTIVE的redo log,是删除不掉的,所以从数据库级删除redo log时大可以放心。
但是要注意,如果在Unix/Linux平台操作系统层直接删除(rm),Oracle是无法做检查的,如果在操作系统级直接删除了状态为CURRENT或ACTIVE的redo log则真的会酿成事故,要非常小心。
下面来在ORACLE数据库级做个删除状态为CURRENT和ACTIVE的REDOLOG测试:
1、 查看redo log的状态
SQL>select group#,thread#,archived,status from v$log;
GROUP# | THREAD# | ARCHIVED | STATUS |
1 | 1 | NO | INACTIVE |
2 | 1 | NO | ACTIVE |
3 | 1 | NO | CURRENT |
4 | 1 | NO | ACTIVE |
以上GROUP 3状态为CURRENT,GROUP2/GROUP4是active,现在我们来对状态为CURRENT和ACTIVE的redolog group分别做删除测试
2、 删除状态为CURRENT的group# 3
SQL> alter database drop logfile group3;
alter database drop logfile group 3
*
ERROR at line 1:
ORA-01623: log 3 is current log forinstance litest (thread 1) - cannot drop
ORA-00312: online log 3 thread 1:'/dba/oracle/oradata/litest/redo03.log'
3、删除状态为ACTIVE的group#2
SQL> alter database drop logfile group2;
alter database drop logfile group 2
*
ERROR at line 1:
ORA-01624: log 2 needed for crash recoveryof instance litest (thread 1)
ORA-00312: online log 2 thread 1:'/dba/oracle/oradata/litest/redo02.log'
4、小结
(1)当删除状态为CURRENT的redolog group时,会提示为当前log,不能删除
(2)当删除状态为ACTIVE的redolog group时,会提示实例恢复需要该log,不能删除
推荐阅读:
相关推荐
运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算。以上实例中 7、5 和 12 是操作数。关系运算符用于计算结果是否为 true 或者 false。逻辑运算符用于测定变量或值之间的逻辑。