• Oracle更改redo log的大小


    因为数据仓库ETL过程中,某个mapping的执行时间超过了一个小时,

    select event,count(*) fromv$session_wait  group by event order bycount(*)  desc

    发现日志切换占用了大量的时间,估尝试增大redo log的大小。

    (1) redo log的大小可以影响  DBWR 和 checkpoint ;

    (2)larger redo log files provide better performance. Undersized logfiles increase checkpoint activity and reduce performance.

         大的log file可以提供更好的性能,小的logfile 会增加checkpoint 和降低性能;

    (3)A rough guide is to switch log files at most once every 20 minutes.(推荐日志切换的时间不要超多20分钟).

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

    select * from v$log ;

    d16503a21e2d

    status 有几个值分别是:

    1. UNUSED(还没有使用过);
    2. CURRENT(正在使用);
    3. ACTIVE(Log isactive but is not the current log. It is needed for crash recovery);
    4. INACTIVE(Log is nolonger needed for instance recovery),

    查看日志文件

    select * from v$logfile ;

    ef11a11c4ee4

    由于ORACLE并没有提供类似RESIZE的参数来重新调整REDO LOG FILE的大小,因此只能先把这个文件删除了,然后再重建。又由于ORACLE要求最少有两组日志文件在用,所以不能直接删除,必须要创建中间过渡的REDO LOG日志组。

    1、创建3个新的日志组

    ALTER DATABASE ADD LOGFILE GROUP 4('/usr/oracle/app/oradata/orcl/redo04a.log','/usr/oracle/app/oradata/orcl/redo04b.log') SIZE 2048M;
    
    ALTER DATABASE ADD LOGFILE GROUP 5('/usr/oracle/app/oradata/orcl/redo05a.log','/usr/oracle/app/oradata/orcl/redo05b.log') SIZE 2048M;
    
    ALTER DATABASE ADD LOGFILE GROUP 6('/usr/oracle/app/oradata/orcl/redo06a.log','/usr/oracle/app/oradata/orcl/redo06b.log')  SIZE 2048M;

    2、切换当前日志到新的日志组

    alter system switch logfile;
    
    alter system switch logfile;
    
    alter system switch logfile;

      3、删除旧的日志组

    查看日志组的状态看一下哪个是当前组,哪个是inactive状态的。

    SQL> select * from v$log;

    2b8fac56a81f

    删除掉inactive的那个组。如果状态为current和active 在删除的时候会报错

    alter database drop logfile group 1;
    
    alter database drop logfile group 2;
    
    alter database drop logfile group 3;

    4、操作系统下删除原日志组1、2、3中的文件

    注意:每一步删除drop操作,都需要手工删除操作系统中的实体文件。

    1e0962d8e01b

    5、重建日志组1、2、3

    ALTER DATABASE ADD LOGFILE GROUP 1('/usr/oracle/app/oradata/orcl/redo01a.log','/usr/oracle/app/oradata/orcl/redo01b.log')SIZE 2048M;
    
     ALTER DATABASE ADD LOGFILE GROUP 2('/usr/oracle/app/oradata/orcl/redo02a.log','/usr/oracle/app/oradata/orcl/redo02b.log')SIZE 2048M;
    
     ALTER DATABASE ADD LOGFILE GROUP 3('/usr/oracle/app/oradata/orcl/redo03a.log','/usr/oracle/app/oradata/orcl/redo03b.log')SIZE 2048M;

    6、切换日志组

    alter system switch logfile; 
    
    alter system switch logfile; 
    
    alter system switch logfile;

    7、删除中间过渡用的日志组4、5、6

    alter database drop logfile group 4; 
    
    alter database drop logfile group 5; 
    
    alter database drop logfile group 6;

    8、到操作系统下删除原日志组4、5、6中的文件

    9、备份当前的最新的控制文件

    SQL> alter database backupcontrolfile to trace resetlogs
  • 相关阅读:
    老男孩python学习_day004知识点
    老男孩python学习_day003作业
    老男孩python学习_day003知识点
    老男孩python学习_day002知识点
    老男孩python学习_day001知识点
    老男孩python学习_day002作业
    老男孩python学习_day001作业
    Struts2+Spring4+Hibernate4整合超详细教程
    解决 Ubuntu15.04 登陆界面无限循环 的问题
    jsp之间url传值出现中文乱码
  • 原文地址:https://www.cnblogs.com/xqzt/p/5039588.html
Copyright © 2020-2023  润新知