gv$log视图中的字段含义
inst_id :实例号,仅表示这条记录从哪来的
GROUP# :日志组号,每个日志组一个号,唯一
THREAD# :日志组的实例号,表示这个日志组是哪个实例在使用
bytes:大小
MEMBERS:成员数,在创建时指定文件路径和文件名,会自动识别成员数,是redo的冗余
STATUS:状态,active,inactive,unused,current。只有inactive和unused状态能drop,其中unuesd表示一次没用过
比如我下面这个redo配置
INST_ID GROUP# THREAD# MB MEMBERS STATUS---------- ---------- ---------- ---------- ---------- --------------------------------
1 1 1 500 2 INACTIVE
4 1 1 500 2 INACTIVE
3 1 1 500 2 INACTIVE
2 1 1 500 2 INACTIVE
2 10 1 500 2 ACTIVE
4 10 1 500 2 ACTIVE
3 10 1 500 2 ACTIVE
1 10 1 500 2 ACTIVE
3 11 1 500 2 CURRENT
1 11 1 500 2 CURRENT
2 11 1 500 2 CURRENT
4 11 1 500 2 CURRENT
3 2 2 500 2 CURRENT
2 2 2 500 2 CURRENT
4 2 2 500 2 CURRENT
1 2 2 500 2 CURRENT
3 3 2 500 2 INACTIVE
4 3 2 500 2 INACTIVE
2 3 2 500 2 INACTIVE
1 3 2 500 2 INACTIVE
3 12 2 500 2 ACTIVE
1 12 2 500 2 ACTIVE
2 12 2 500 2 ACTIVE
4 12 2 500 2 ACTIVE
2 5 3 500 2 CURRENT
1 5 3 500 2 CURRENT
3 5 3 500 2 CURRENT
4 5 3 500 2 CURRENT
3 6 3 500 2 ACTIVE
4 6 3 500 2 ACTIVE
2 6 3 500 2 ACTIVE
1 6 3 500 2 ACTIVE
4 9 3 500 2 INACTIVE
3 9 3 500 2 INACTIVE
1 9 3 500 2 INACTIVE
2 9 3 500 2 INACTIVE
4 4 4 500 2 ACTIVE
1 4 4 500 2 ACTIVE
2 4 4 500 2 ACTIVE
3 4 4 500 2 ACTIVE
1 7 4 500 2 CURRENT
3 7 4 500 2 CURRENT
2 7 4 500 2 CURRENT
4 7 4 500 2 CURRENT
1 8 4 500 2 ACTIVE
2 8 4 500 2 ACTIVE
4 8 4 500 2 ACTIVE
3 8 4 500 2 ACTIVE
48 rows selected.
上面内容很多,但还是很好理解的
数据库一共4个实例,每个实例3个日志组,每个组2个成员,每个成员的大小均为500m。所有应该所有3*4=12条记录
每个实例有自己独立的redo来写日志,thread#就是每个实例的一个编号,区分着每个实例上的日志。而Gv$log视图中的INST_ID只是表明该行数据来自哪个实例上的v$log视图,与thread#的意义是不同的。
ora-01567:
SQL> alter database drop logfile group 6;
alter database drop logfile group 6
*
ERROR at line 1:
ORA-01567: dropping log 6 would leave less than 2 log files for instance xscsmp3 (thread 3)
ORA-00312: online log 6 thread 3: '+DATADG/XSCSMP/ONLINELOG/group_6.807.963760065'
ORA-00312: online log 6 thread 3: '+FRADG/XSCSMP/ONLINELOG/group_6.1481.963760065'
虽然redo的状态为inactive,但是仍然无法删除redo,因为每个thread(实例)都至少需要2个日志组,所有必须要先对该thread添加了日志组(日志组大于等于3)并且group 6为inactive的时候才能drop 日志组。
你可以开2个窗口
1个窗口 alter system switch logfile
另一个窗口查询gv$log
select INST_ID,group#,thread#,bytes/1024/1024 mb,members,status from gv$log order by 3,2
查看那个日志组状态是否是inactive