Oracle重做日志文件
一.简介
二.获取重做日志的信息
1. 获得数据库中有多少个重做日志组,每个组中有多少个成员、日志大小及状态。
SELECT GROUP#,SEQUENCE#,MEMBERS,BYTES,STATUS,ARCHIVED FROM V$LOG;
状态列(status)所显示常用状态的含义:
-
inactive :表示实例恢复已不再需要这组联机重做日志组了。 -
active :表示该组是活动的但不是当前组,实例恢复时需要这组日志。 -
current :表示该组日志是当前组,该联机重做日志组是活动的。 -
unused :表示该日志组从未写过,是重做日志刚刚添加到状态。
2. 获得数据库中每个重做日志组的成员所在目录、文件名及状态。
状态列(status)所显示常用状态的含义:
-
空白:表示该文正在使用。 -
stale :表示该文件中的内容是不完全的。 -
invalid :表示该文件是不可以被访问的。 -
deleted :表示该文件已不在有用了。
三.日志切换
执行命令ALTER SYSTEM SWITCH LOGFILE 后,在写日志组变为1:
但在线重做日志不可以直接RESIZE,需要通过如下方式:
1)添加新的日志文件组,定义它的大小
SYS@TEST15>alter database add logfile group 4 ('/data/oradata/orcl/data/redo04.log') size 500M reuse;
Database altered.
2)持续切换日志,一直到Group 1的status=inactive,且archived=yes(如果为归档的话),如下所示:
SYS@TEST15>ALTER SYSTEM SWITCH LOGFILE;
SYS@TEST15>alter system checkpoint;
SYS@TEST15>select group#,sequence#,bytes/1024/1024 "BYTES(M)",members,archived,status from v$log where group#=1;
GROUP# SEQUENCE# BYTES(M) MEMBERS ARC STATUS
---------- ---------- ---------- ---------- --- ----------------
1 214 100 2 YES INACTIVE
3)删除Group 1
SYS@TEST15>alter database drop logfile group 1;
Database altered.
这样,我们就完成了用更大的Group 4取代原有的Group 1,至于Group 2, Group 3以此类推。
最后,还要记得到操作系统上把日志文件删除。