Chinaunix首页 | 论坛 | 博客
  • 博客访问: 844432
  • 博文数量: 105
  • 博客积分: 636
  • 博客等级: 中士
  • 技术积分: 1704
  • 用 户 组: 普通用户
  • 注册时间: 2012-08-11 10:57
文章分类

全部博文(105)

文章存档

2017年(4)

2016年(9)

2015年(18)

2014年(16)

2013年(34)

2012年(24)

分类: Oracle

2013-02-21 14:37:06

一直想更改我们生产的redo log的大小,今天更新了,中间还是有一些可圈可点的东西 拿出来和大家分享一下

1.通关查看联机文档 (1) redo log的大小可以影响  DBWR 和 checkpoint ;(2)larger redo log files provide better performance. Undersized log files increase checkpoint activity and reduce performance.(大的log file可以提供更好的性能,小的log file 会增加checkpoint 和降低性能);(3)A rough guide is to switch log files at most once every 20 minutes.(推荐日志切换的时间不要超多20分钟).以上三句话是我从11g的联机帮助文档上摘抄下来的,感觉第二句和第三节好像是有些矛盾。我个人感觉redo log大点是有好处的,会减少日志切换的次数和总的等待时间、我也看了一下我的系统的alert日志 切换频率是有些高了在5-10分钟。具体在一个什么范畴,我也说不好 。在网上找了找 众说不一。通过看我的awr报告 log file switch 等待时间还比较靠前 而且产生的redo信息也比较多。所以我决定先把redo改大些然后在观察。具体的操作如下:

2.操作部分

    select * from v$log  查看日志的组数

    select * from v$logfile 查看日志文件

   通过查看 我有三组redolog 1/2/3每组两个成员 状态都正常 大小50m

现在开始操作更改

(1)先创建两日志组(其实在这可以不用创建或是只建一组就可以)

        alter database add logfile group 4 ('/oracle/oradata/redo04.log') size 100m;

        alter database add logfile group 5 ('/oracle/oradata/redo05.log') size 100m;

(2)select * from v$log 看一下status这个字段 ,这个字段有必要说一下。status 有几个值 分别是:UNUSED(还没有使用过);CURRENT(正在使用);ACTIVE(Log is active but is not the current log. It is needed for crash recovery) ;INACTIVE(Log is no longer needed for instance recovery),我理解active和inactive的区别是active 状态下,日志在实例恢复中还是要用的,而inactive已经不是实例恢复所必须的。

   查看日志组的状态看一下哪个是当前组,哪个是inactive状态的。删除掉inactive的那个组。如果状态为current和active 在删除的时候会报错

    错误提示如下:

           1)ERROR at line 1:
           ORA-01623: log 2 is current log for instance dbstat (thread 1) - cannot drop
          ORA-00312: online log 2 thread 1: '/data1/dbstat/redo2.log'

         2)ERROR at line 1:
         ORA-01624: log 2 needed for crash recovery of instance dbstat (thread 1)
           ORA-00312: online log 2 thread 1: '/data1/dbstat/redo2.log'

    删除日志组的语句为:alter database drop logfile group 2

(3)重新创建日志组,并设置大小

        因为执行alter database drop logfile group 2 这个语句是不会把os上的物理文件删除的,所以我执行的语句如下:

          alter database add logfile group 2 ('/oracle/oradata/redo02_01.log') size 200m reuse

         执行成功后,在看一下v$log 里面重新出现了group2 状态为unused 大小变成了200m,在v$logfile只有一个group 2文件,

         因为我每组有两成员,这是我需要给group 2再增加一个文件

           alter database add logfile member '/backup/redo/redo02_02.log' to group 2

         这是报错了,错误原因是我os的文件没有删除,删除后重新执行上语句就ok了。

                在看一下v$logfile 已经有了新加的日志组成员文件,可是问题又来了,status 显示INVALID。我又看了一下联机文档 v$logfile status值如:(1)null 空值为正常

              (2)deleted 删除不在使用的(3)invalid 文件不能访问(4)stale 文件内容不完整。又在网上查了一下,网上说新增成员后是显示invalid 等日志切换到这一组后就会正常了,我做了多个alter system switch logfile;在看就正常了。

          我查看了一下alter database 语句 alter database add logfile member '/backup/redo/redo02_02.log' to group 2 可以改为

                      alter database add logfile member '/backup/redo/redo02_02.log'  reuse to group 2 这样就不用物理删除文件了

 

 (4)以上依次类推就可以调整1、2、3组的redo log的大小。

         调整完成后,在删除掉步骤一种增加的那2组日志组 就可以了!查看v$log 和v$logfile 都没有问题 redo log 调整到此结束,然后就是看调整后的测试。

       

 


 

阅读(13358) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~