重做日志(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重做日志文件对医保系统性能影响分析】 在Oracle数据库系统中,重做日志文件(Redo Log Files)是确保数据安全性和恢复能力的关键组件。它们记录了所有事务对数据库所做的更改,用于在系统崩溃或介质故障后...
Oracle数据库的重做日志(Redo Log)是记录...总之,调整Oracle重做日志大小和结构需要谨慎操作,确保数据的安全性和完整性。在整个过程中,应始终监控数据库的状态,并在必要时进行备份,以防止任何可能的数据丢失。
4. **合理配置重做日志文件**:确保有足够的重做日志文件以及合理的大小,避免频繁切换重做日志文件。 5. **使用高效的存储设备**:选择高性能的存储设备(如SSD)可以显著提高I/O性能。 6. **定期执行维护任务**:...
3. **调整日志文件大小**:如果通过查询`V$SYSSTAT`发现`REDOLOGSPACEREQUEST`的值非零,说明重做日志空间不足,需要增加重做日志缓冲区大小(通过`LOG_BUFFER`参数)或者增大重做日志文件大小。 4. **减少不必要的...
Oracle数据库的日志机制是其高可靠性和数据一致性的重要保障,主要包含重做日志(redo log)和归档日志(archived log),以及撤销日志(undo log)。本文将深入探讨Oracle日志的核心知识点,帮助读者理解其工作原理...
在优化数据库性能方面,可以通过调整SGA的各个组成部分的大小,例如增大共享池、数据块高速缓冲区或重做日志缓冲区的大小来提升性能。同时,还可以使用如DB_CACHE_ADVICE这样的参数收集统计信息,以便更准确地预测和...
Oracle数据库的内存主要由共享池(Shared Pool)、数据缓冲区(Data Buffer Cache)、重做日志缓冲区(Redo Log Buffer)等多个部分组成。这些组件各自承担着不同的功能,并且可以通过调整相应的参数来实现性能优化。 1. ...
- 重做日志文件的大小和数量会影响数据库的恢复速度和并发性能。 - **1.2.4 其他支持文件** - 包括归档日志文件、控制文件备份等,这些文件对于数据库的完整性和灾难恢复非常重要。 **1.3 数据块、区间和段** -...
Oracle例程中的后台进程负责数据库的日常维护,例如DBWn进程负责将数据缓冲区中的更改写入数据文件,LGWR进程将重做日志缓冲区的内容写入重做日志文件,CKPT进程触发检查点来同步数据库状态,SMON和PMON则负责系统的...
其他选项如启动日志写程序的辅助进程、增加重做日志文件的数量、增大重做日志缓冲区大小或增加日志写程序的数量,虽然在某些情况下可能有所帮助,但针对此问题最有效的解决方案还是将重做日志文件分散到多个物理磁盘...
- **Redo Log Buffer**:增大重做日志缓冲区大小,减少物理写操作。 - **Redo Log File Management**:合理配置重做日志文件的数量和大小,避免频繁切换重做日志文件导致的性能损失。 #### 八、优化数据库结构和IO ...
因此,适当增大重做日志文件的大小可以延长检查点之间的间隔时间,减少对数据库性能的影响。 - **设置FAST_START_MTTR_TARGET参数**(选项C)。此参数用于控制自动检查点调整机制,通过该参数可以指定目标恢复时间...
1. 修改LOG_CHECKPOINT_INTERVAL:设置该值大于重做日志文件大小,使检查点操作只在日志切换时进行,减少不必要的I/O操作。 2. 增大SORT_AREA_SIZE:根据系统资源情况调整此值,以优化排序操作。如果发生交换操作,...
4. **log_buffer**:重做日志缓冲区的大小,对频繁写入的日志操作有重要影响。过大可能导致不必要的内存浪费,过小则可能引起频繁的重做日志文件切换。 5. **Java_pool_size**和**large_pool_size**:分别用于配置...
- **重做日志文件 (Redo Log Files):** 重做日志文件记录了所有对数据库所做的更改,用于恢复和事务处理。 - **物理磁盘布局 (Physical Disk Layout):** 物理磁盘布局对于数据库性能至关重要。不同的文件放置方式会...
重做日志缓冲区的大小也需根据事务的频率和大小来调整,确保日志信息能及时写入,避免阻塞其他操作。共享池的大小则影响SQL语句的解析和复用,如果发现解析过多的SQL或频繁的硬解析,可能需要增大共享池。 内存调优...
从以上命令输出可以看出,SGA的总大小为1048576000字节(约1GB),其中固定大小的部分占用1223392字节,可变大小的部分占用847250720字节,数据缓冲区占用了192937984字节,重做日志缓冲区占用了7163904字节。...
例如,SHARED_POOL_SIZE控制共享池区的大小,DB_BLOCK_BUFFER和DB_BLOCK_SIZE决定数据库缓冲区的容量,而LOG_BUFFER则设置重做日志缓冲区的大小。 共享池区是SGA的重要部分,主要包括库高速缓存和字典高速缓存。库...
其中,内存调整重点关注System Global Area (SGA),包括共享池、数据库缓冲区和重做日志缓冲区。共享池存储SQL语句、PL/SQL、过程和数据字典,其大小直接影响SQL解析和执行计划的效率。数据库缓冲区负责缓存数据块以...