调整联机重做日志大小(change redo log size)
Oracle 联机日志加上Oracle归档日志记录了整个数据库完整的变更信息。是Oracle体系结构中的重要组成部分。因此联机日志的规划也相当重要。但随着业务的增加或当前联机日志文件的大小成为数据库瓶颈之一时,不得不调整联机日志的大小。本文演示了如何调整联机日志的大小。 有关联机日志、归档日志规划,设置等其参考: Oracle 联机重做日志文件(ONLINE LOG FILE) Oracle 归档日志
1、演示环境
sys@CNBO1> select * from v$version where rownum<2;
BANNER
----------------------------------------------------------------
Oracle Database 10g Release 10.2.0.3.0 - 64bit Production
sys@CNBO1> archive log list;
Database log mode Archive Mode -->已处于归档模式
Automatic archival Enabled
Archive destination /u02/database/CNBO1/archive/
Oldest online log sequence 4881
Next log sequence to archive 4884
Current log sequence 4884
2、日志使用情况
sys@CNBO1> @log_stat
GROUP# MEMBER SEQUENCE# SIZE_MB STATUS
---------- --------------------------------------------- ---------- ---------- -------
1 /u02/database/CNBO1/redolog/log1aCNBO1.log 4881 20 ACTIVE
1 /u02/database/CNBO1/redolog/log1bCNBO1.log 4881 20 ACTIVE
2 /u02/database/CNBO1/redolog/log2aCNBO1.log 4882 20 ACTIVE
2 /u02/database/CNBO1/redolog/log2bCNBO1.log 4882 20 ACTIVE
3 /u02/database/CNBO1/redolog/log3aCNBO1.log 4883 20 ACTIVE
3 /u02/database/CNBO1/redolog/log3bCNBO1.log 4883 20 ACTIVE
4 /u02/database/CNBO1/redolog/log4aCNBO1.log 4884 20 ACTIVE
4 /u02/database/CNBO1/redolog/log4bCNBO1.log 4884 20 CURRENT
8 rows selected.
sys@CNBO1> select group#,archived,status from v$log;
GROUP# ARC STATUS
---------- --- ----------------
1 YES ACTIVE
2 YES ACTIVE
3 YES ACTIVE
4 NO CURRENT
3、调整联机日志大小
sys@CNBO1> alter system archive log all; -->归档所有日志文件
alter system archive log all
*
ERROR at line 1:
ORA-00271: there are no logs that need archiving -->提示没有日志需要进行归档
sys@CNBO1> alter database drop logfile group 1; -->由于group1 处于active状态,不可删除
alter database drop logfile group 1
*
ERROR at line 1: -->下面提示crash recovery会用到
ORA-01624: log 1 needed for crash recovery of instance CNBO1 (thread 1)
ORA-00312: online log 1 thread 1: '/u02/database/CNBO1/redolog/log1aCNBO1.log'
ORA-00312: online log 1 thread 1: '/u02/database/CNBO1/redolog/log1bCNBO1.log'
sys@CNBO1> alter system switch logfile; -->切换日志
System altered.
sys@CNBO1> select group#,archived,status from v$log; -->此时状态已发生变化
GROUP# ARC STATUS
---------- --- ----------------
1 NO CURRENT
2 YES INACTIVE
3 YES INACTIVE
4 YES ACTIVE
sys@CNBO1> alter database drop logfile group 2; -->删除第2个日志组
Database altered.
sys@CNBO1> ho ls /u02/database/CNBO1/redolog/log2* -->可以看到,物理文件并没有被删除
/u02/database/CNBO1/redolog/log2aCNBO1.log /u02/database/CNBO1/redolog/log2bCNBO1.log
sys@CNBO1> alter database add logfile group 2 ('/u02/database/CNBO1/redolog/log2aCNBO1.log',
2 '/u02/database/CNBO1/redolog/log2bCNBO1.log') size 100m reuse; -->添加日志组,并使用新的size
Database altered.
sys@CNBO1> alter database drop logfile group 3;
Database altered.
sys@CNBO1> alter database add logfile group 3 ('/u02/database/CNBO1/redolog/log3aCNBO1.log',
2 '/u02/database/CNBO1/redolog/log3bCNBO1.log') size 100m reuse;
Database altered.
sys@CNBO1> select group#,archived,status from v$log; -->新增的日志组为unused状态,
-->不考虑组号顺序,切换日志时会优先切换到unused日志组
GROUP# ARC STATUS
---------- --- ----------------
1 NO CURRENT
2 YES UNUSED
3 YES UNUSED
4 YES ACTIVE
sys@CNBO1> alter system switch logfile;
System altered.
-->切换日志的时候需要将被删除的日志切换为INACTIVE,再实施删除添加动作。
-->按照上面的方法逐个删除并添加日志文件,后面的演示省略。
-->下面是所有日志修改大小完毕之后的结果
--> Author : Robinson
--> Blog : http://blog.csdn.net/robinson_0612
sys@CNBO1> @log_stat
GROUP# MEMBER SEQUENCE# SIZE_MB STATUS
---------- --------------------------------------------- ---------- ---------- -------
1 /u02/database/CNBO1/redolog/log1aCNBO1.log 4893 100 CURRENT
1 /u02/database/CNBO1/redolog/log1bCNBO1.log 4893 100 CURRENT
2 /u02/database/CNBO1/redolog/log2aCNBO1.log 4890 100 INACTIVE
2 /u02/database/CNBO1/redolog/log2bCNBO1.log 4890 100 INACTIVE
3 /u02/database/CNBO1/redolog/log3aCNBO1.log 4891 100 INACTIVE
3 /u02/database/CNBO1/redolog/log3bCNBO1.log 4891 100 INACTIVE
4 /u02/database/CNBO1/redolog/log4aCNBO1.log 0 100 UNUSED
4 /u02/database/CNBO1/redolog/log4bCNBO1.log 0 100 UNUSED
8 rows selected.
4、小结 a、本文演示了基于归档模式下如何调整日志文件的大小,同样适用于非归档模式 b、归档模式下确保所有日志已经归档(规模模式下通常都已被归档),再进行日志文件大小的调整 c、注意日志文件的几种状态的变化,active与current状态时是不能够被删除的 d、active与current状态时,日志中存在着大量的活动事务,在crash recovery时会根据当时状态前滚或回滚 e、切换日志(alter system switch logfile)是的日志文件状态发生变化,其原因是触发了checkpoint进程
补充:关于当前日志处于active状态的情形@20130816 ACTIVE: Log is active but is not the current log. It is needed for crash recovery. --->crash recovery时会用到 It may be in use for block recovery. It may or may not be archived. 有时候切换了N多次archivelog,仍然不能得到inactive状态,对于此,可以强制执行检查点进程,然后删除日志组,添加日志组,赋予新的大小。 alter sysetm checkpoint; --强制检查点进程,用于同步日志文件中未写出的到数据文件的scn
- Python3插入排序
- Python3冒泡排序
- Python Selenium设计模式-POM
- 【Python学习笔记之一】Python关键字及其总结
- 前后端分离了,然后呢?
- 【Python学习笔记之二】浅谈Python的yield用法
- LINUX中常用操作命令
- Java异常抛出及try,catch应用实例
- GitHub实战系列~2.把本地项目提交到github中 2015-12-10
- 前20名Python机器学习开源项目
- 接口测试 | 24 requests + unittest集成你的接口测试
- [快学Python3]数据结构与算法-二分查找
- 基于Excel参数化你的Selenium2测试
- 【LeetCode】关关刷题日记24-Leetcode 121. Best Time to Buy and Sell Stock
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法