目录
https://www.cnblogs.com/xqzt/p/5039588.html
因为数据仓库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
SQL> select GROUP#,SEQUENCE#,BYTES/1024/1024 as BYTES_MB,status from v$log;
status 有几个值分别是:
- UNUSED(还没有使用过);
- CURRENT(正在使用,从redo buffer中写入到redolog中);
- ACTIVE(日志处于活动状态,但不是当前日志。它是崩溃恢复所必需的,正在讲redlog写入archivelog中);
- INACTIVE(非活动状态,实例恢复不再需要日志),
查看日志文件
select * from v$logfile ;
由于ORACLE并没有提供类似RESIZE的参数来重新调整REDO LOG FILE的大小,因此只能先把这个文件删除了,然后再重建。又由于ORACLE要求最少有两组日志文件在用,所以不能直接删除,必须要创建中间过渡的REDO LOG日志组。
1、创建3个新的日志组
SQL> select member from v$logfile; ALTER DATABASE ADD LOGFILE GROUP 4('/data/u01/app/oracle/oradata/orcl/redo04.log')size 1024M; ALTER DATABASE ADD LOGFILE GROUP 5('/data/u01/app/oracle/oradata/orcl/redo05.log')size 1024M; ALTER DATABASE ADD LOGFILE GROUP 6('/data/u01/app/oracle/oradata/orcl/redo06.log')size 1024M;
2、切换当前日志到新的日志组(每执行一次,一个组就会使用,从unused到active、current或inactive转变,通过查看视图v$log的状态字段,同时日之前切换到新的redolog中)
SQL>alter system switch logfile; SQL>alter system switch logfile; SQL>alter system switch logfile;
3、删除旧的日志组
查看日志组的状态看一下哪个是当前组,哪个是inactive状态的。
SQL> select * from v$log;
删除掉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操作,都需要手工删除操作系统中的实体文件。
5、重建日志组1、2、3
ALTER DATABASE ADD LOGFILE GROUP 1('/data/u01/app/oracle/oradata/orcl/redo01.log')size 1024M; ALTER DATABASE ADD LOGFILE GROUP 2('/data/u01/app/oracle/oradata/orcl/redo02.log')size 1024M; ALTER DATABASE ADD LOGFILE GROUP 3('/data/u01/app/oracle/oradata/orcl/redo03.log')size 1024M;
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 backup controlfile to trace resetlogs
文章评论