ITPub博客

首页 > Linux操作系统 > Linux操作系统 > REDO日志管理

REDO日志管理

原创 Linux操作系统 作者:andyann 时间:2011-04-06 17:47:55 0 删除 编辑

REDO日志管理

序:ORACLE 11g中 redo日志默认为3个日志组,一个日志组对应一个redo文件默认大小为50M。

但是在OLTP数据中,因为insert,update,delete语句等产生大量的redo,使redo切换比较频繁,

当3个redo文件切换循环下来,触发的checkpoint没有完成,要切换的redo日志文件状态为ACTIVE,

alert.log文件提示Checkpoint not complete,以及Thread 1 cannot allocate new log, sequence 46591等信息。

由于dbw0写比较慢,不可避免要遭遇此尴尬,为了避免此种情况发生需加大redo日志文件的大小

1 切换日志

ALTER SYSTEM SWITCH LOGFILE; 切换

ALTER SYSTEM CHECKPOINT; 触发检查点

2 新建日志组

ALTER DATABASE ADD LOGFILE GROUP 1 ('/Oracle/dbdata/lnd/redo01_01.log','/Oracle/dbdata/lnd/redo01_02.log') SIZE 200M ;

3 删除日志组

alter database drop logfile group 1;

alter database drop logfile group 2;

rm -rf /Oracle/dbdata/lnd/redo01.log

rm -rf /Oracle/dbdata/lnd/redo02.log

思路:

一般我们做日志扩充的思路如下:

新建日志组(临时)-> 切换到临时日志组 -> 删除原来日志组以及日志文件 ->

新建日志组以及数据文件 -> 切换到新建日志组 -> 删除临时用日志组以及日志文件

 

备:redo切换频率查询。

select b.SEQUENCE#, b.FIRST_TIME,
       a.SEQUENCE#, a.FIRST_TIME,
       round(((a.FIRST_TIME-b.FIRST_TIME)*24)*60,2)
from v$log_history a, v$log_history b
where a.SEQUENCE# = b.SEQUENCE#+1
and b.THREAD#=1
order by a.SEQUENCE# desc;

select sequence#,first_time,nexttime,round(((first_time-nexttime)*24)*60,2) diff
from (
select sequence#,first_time, lag(first_time) over(order by sequence#) nexttime
from v$log_history
where thread#=1
) order by sequence# desc;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24070945/viewspace-691797/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2011-03-24

  • 博文量
    25
  • 访问量
    90773