重做日志(redo log)是由LGWR来进行控制的。Oracle对于DML操作数据的时候,并不会马上去修改数据块,而是产出redo记录,并记录到联机的redo log里,当redo Log用满,或者启动全局checkpoint,也或者alter system switch logfile; 这时都会切换redo log group,(如果redo log状态为current,是当前redo log,如果是inactive就是已经有DBWN写入数据块,Inactive还没有写入)redo log进行切换时,有一定的消耗,或者有时由于redo log过小而造成一定的错误,这时,我们都需要将redo log调整变大。
我们可以采取以下步骤来达到目的
1. 检查logfile组状态
SQL> select a.status, b.member, a.THREAD#, a.GROUP# from v$log a, v$logfile b where a.GROUP#=b.GROUP#;
STATUS MEMBER THREAD# GROUP#
—————- ————————————————————- ———- ———-
CURRENT /opt/oracle/oradata/ocrl/redo01.log 1 1
INACTIVE /opt/oracle/oradata/ocrl/redo02.log 1 2
INACTIVE /opt/oracle/oradata/ocrl/redo03.log 1 3
2. 将inactive的redo.log删除,inactive的redo.log已经写入数据块。
SQL> alter database drop logfile ‘/opt/oracle/oradata/ocrl/redo03.log’; 或者直接用
SQL> alter database drop logfile group 3;
3. 添加上面被drop掉的redo log group
SQL> alter database add logfile group 3 (’/opt/oracle/oradata/ocrl/redo03.log’) size 120M reuse;
4. 循环2,3把所有的inactive的redo log文件都resize掉
5. 对于current和active的redo log文件,需要先把redo log做到inactive状态,在前言部分就已经提到了,current表示是当前正在记录的redo log文件,对待这样的我们需要
SQL>alter system switch logfile; 切换日志文件,不过由于redo log的重做日志不会马上触发DBWR写数据库,所以这个redo log的状态由current变成active状态,我们看查看
SQL> select a.status, a.THREAD#, a.GROUP# from v$log a;
STATUS THREAD# GROUP#
—————- ———- ———-
CURRENT 1 1
INACTIVE 1 2
UNUSED 1 3
SQL>alter system switch logfile;
SQL> select a.status, a.THREAD#, a.GROUP# from v$log a;
STATUS THREAD# GROUP#
—————- ———- ———-
ACTIVE 1 1
CURRENT 1 2
UNUSED 1 3
(注意 group 3是我新加入的redo log group,还没有被使用,状态是UNUSED)
5. 对于active状态的,表示这里的脏数据还没有写入写入数据库,手工加个全局检查点,督促CKPT马上唤醒DBWR写入脏数据
SQL>alter system checkpoint;
查看v$log
STATUS THREAD# GROUP#
—————- ———- ———-
INACTIVE 1 1
CURRENT 1 2
UNUSED 1 3
在使用2,3步把group 1也重建。
6. 依照4,5把所有active的redo log做掉
到此,所有的redo log都已经全面改变大小,任务完成。
这里要注意两点
1. 单纯加redo log group单个文件的大小没有作用,同一个group里,文件大小都是一致的。
2. 如果是归档模式的话,确保已经自动归档,如果手动归档的话,需要在alter system switch logfile锁死的时候,用alter system log current 来手动归档。或者通过alter system archive log start打开自动归档。否则的话,当redo log group切换完整个groups的时候,会一直等待状态(******).
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/inthirties/archive/2009/05/30/4225566.aspx
分享到:
相关推荐
oracle重做日志原理
重做日志教程,希望与大家一些学习进步重做日志文件(REDO LOGFILE)又被称为事务日志文件(TRANSACTION LOGFILE)。它对ORACLE数据库来说是至关重要的。ORACLE中每执行一条更新 操作时,都会引起数据库的变化,因此...
Oracle 在线重做 日志文件 详解 解决日志损坏或太大等问题
Oracle重做日志机制
oracle重做日志文件管理.pptx
Oracle重做日志机制分析.pdf
Oracle重做日志文件管理技巧.pdf
也许你还是个新人,需要查看大量网上资源或参考手册,才知道如何下手分析 ORACLE的重做日志 redo log 或归档日志。 鉴于以上的种种不便,在下对LOGMNER程序包,进行了封装,方便大量使用ORACLE 强大的日志分析工具...
重做日志文件是Oracle数据库中一种非常重要的日志文件,也是其一个很有特色的功能。重做日志文件会纪录对于数据库的任何操作,如利用DML语句或者DDL语句对数据进行更改,或者数据库管理员对数据库结构进行更改,都会...
本文是oracle移动重做日志文件的详细教程 对初学者来说很实用
Oracle重做日志文件对医保系统性能影响分析.pdf
Oracle数据库重做日志优化设计研究.pdf
Oracle DG下修改redo log和standby redo log日志大小.txt
Oracle数据库重做日志文件的分析及其应用.pdf
基于非归档模式的Oracle数据库重做日志恢复方法.pdf
Oracle数据库非归档模式重做日志恢复方法.pdf