os:RHES 4.6
db:10.2.0.4.0
参考文章
http://blog.csdn.net/rulev5/article/details/7164548
查询redo日志的轮换情况
rac环境下使用如下语句(实例1,如果查询其他实例修改a.thread#=1这里就好了):
select b.recid,
to_char(b.first_time, 'dd-mon-yy hh24:mi:ss') start_time,
a.recid,
to_char(a.first_time, 'dd-mon-yy hh24:mi:ss') end_time,
round(((a.first_time - b.first_time) * 25) * 60, 2) minutes
from v$log_history a, v$log_history b
where a.recid = b.recid + 1 and a.thread#=b.thread# and a.thread#=1
order by a.first_time desc;
查询结果(截取一部分切换较频繁的时段)
RECID START_TIME RECID END_TIME MINUTES
---------- ----------------------- ---------- ----------------------- ----------
185765 07-3月 -12 19:42:20 185766 07-3月 -12 19:42:26 .1
185764 07-3月 -12 19:42:14 185765 07-3月 -12 19:42:20 .1
185761 07-3月 -12 19:42:07 185762 07-3月 -12 19:42:11 .07
185760 07-3月 -12 19:42:02 185761 07-3月 -12 19:42:07 .09
185757 07-3月 -12 19:41:51 185758 07-3月 -12 19:41:57 .1
185756 07-3月 -12 19:41:48 185757 07-3月 -12 19:41:51 .05
185753 07-3月 -12 19:41:40 185754 07-3月 -12 19:41:46 .1
185752 07-3月 -12 19:41:35 185753 07-3月 -12 19:41:40 .09
185751 07-3月 -12 19:41:29 185752 07-3月 -12 19:41:35 .1
185748 07-3月 -12 19:41:22 185749 07-3月 -12 19:41:25 .05
185747 07-3月 -12 19:41:16 185748 07-3月 -12 19:41:22 .1
185744 07-3月 -12 19:41:05 185745 07-3月 -12 19:41:11 .1
185743 07-3月 -12 19:41:02 185744 07-3月 -12 19:41:05 .05
185740 07-3月 -12 19:40:53 185741 07-3月 -12 19:40:59 .1
185739 07-3月 -12 19:40:47 185740 07-3月 -12 19:40:53 .1
185736 07-3月 -12 19:40:39 185737 07-3月 -12 19:40:42 .05
185735 07-3月 -12 19:40:36 185736 07-3月 -12 19:40:39 .05
185734 07-3月 -12 19:40:31 185735 07-3月 -12 19:40:36 .09
185731 07-3月 -12 19:40:20 185732 07-3月 -12 19:40:25 .09
185730 07-3月 -12 19:40:13 185731 07-3月 -12 19:40:20 .12
185727 07-3月 -12 19:40:05 185728 07-3月 -12 19:40:10 .09
185726 07-3月 -12 19:40:00 185727 07-3月 -12 19:40:05 .09
185725 07-3月 -12 19:39:53 185726 07-3月 -12 19:40:00 .12
185722 07-3月 -12 19:39:49 185723 07-3月 -12 19:39:51 .03
185721 07-3月 -12 19:39:44 185722 07-3月 -12 19:39:49 .09
185718 07-3月 -12 19:39:34 185719 07-3月 -12 19:39:39 .09
185717 07-3月 -12 19:39:31 185718 07-3月 -12 19:39:34 .05
185714 07-3月 -12 19:39:24 185715 07-3月 -12 19:39:29 .09
185713 07-3月 -12 19:39:19 185714 07-3月 -12 19:39:24 .09
185710 07-3月 -12 19:39:09 185711 07-3月 -12 19:39:13 .07
185709 07-3月 -12 19:39:06 185710 07-3月 -12 19:39:09 .05
这个时间段内平均不到每分钟就有1次切换,redo log切换太过频繁。
检查当前日志组
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------------
1 1 90065 52428800 1 YES ACTIVE 9.7016E+12 07-3月 -12
2 1 90066 52428800 1 NO CURRENT 9.7016E+12 07-3月 -12
3 2 95453 52428800 1 YES INACTIVE 9.7016E+12 07-3月 -12
4 2 95455 52428800 1 YES ACTIVE 9.7016E+12 07-3月 -12
5 2 95452 104857600 1 YES INACTIVE 9.7016E+12 07-3月 -12
6 2 95456 104857600 1 NO CURRENT 9.7016E+12 07-3月 -12
7 2 95454 104857600 1 YES ACTIVE 9.7016E+12 07-3月 -12
8 1 90063 104857600 1 YES INACTIVE 9.7016E+12 07-3月 -12
9 1 90064 104857600 1 YES ACTIVE 9.7016E+12 07-3月 -12
10 1 90062 104857600 1 YES INACTIVE 9.7016E+12 07-3月 -12
一共有10个日志组,每个组1个成员,4个50M和6个100M。
按照平均每0.5分钟(高峰期,其实看到的切换时间更短,我暂取0.5分这个值)切换一次50M的redo log,
平均一分钟会写入100M(50/0.5)的redo,如果要半小时切换一次redo log就要求redo log大小为30×100M=3000M约3G。
这个rodo文件太大了,先增加到500M即平均5分钟切换一次,运行观察一段时间,新增加8个redo组每组两个成员各500M被删除原有的日志组。
查看当前日志文件位置
SQL> select * from v$logfile;
GROUP# STATUS TYPE MEMBER IS_
---------- ------- ------- ----------------------------------------------------------------
2 ONLINE +DATA01/zjcsc/onlinelog/group_2.262.729380855 NO
1 ONLINE +DATA01/zjcsc/onlinelog/group_1.261.729380855 NO
3 ONLINE +DATA01/zjcsc/onlinelog/group_3.265.729380935 NO
4 ONLINE +DATA01/zjcsc/onlinelog/group_4.266.729380935 NO
5 ONLINE +DATA01/zjcsc/onlinelog/group_5.315.729393001 NO
6 ONLINE +DATA01/zjcsc/onlinelog/group_6.316.729393021 NO
7 ONLINE +DATA01/zjcsc/onlinelog/group_7.317.729393041 NO
8 ONLINE +DATA01/zjcsc/onlinelog/group_8.318.729393053 NO
9 ONLINE +DATA01/zjcsc/onlinelog/group_9.319.729393091 NO
10 ONLINE +DATA01/zjcsc/onlinelog/group_10.320.729393109 NO
10 rows selected.
保险起见先测试了下:
在asm里指定文件名创建redo日志组
SQL> alter database add logfile thread 1 group 11 ('+DATA01/zjcsc/onlinelog/group_11a')size 50M;
Database altered.
SQL> select name,state,type,total_mb,free_mb,usable_file_mb,offline_disks from v$asm_diskgroup;
NAME STATE TYPE TOTAL_MB FREE_MB USABLE_FILE_MB OFFLINE_DISKS
------------------------------ ----------- ------ ---------- ---------- -------------- -------------
DATA01 CONNECTED EXTERN 1126400 106255 106255 0
删除该组后发现,asm的空间并未释放,因为创建时候指定文件名后再删除时不会删除该文件,会保留在asm里。
SQL> alter database drop logfile group 11;
Database altered.
SQL> select name,state,type,total_mb,free_mb,usable_file_mb,offline_disks from v$asm_diskgroup;
NAME STATE TYPE TOTAL_MB FREE_MB USABLE_FILE_MB OFFLINE_DISKS
------------------------------ ----------- ------ ---------- ---------- -------------- -------------
DATA01 CONNECTED EXTERN 1126400 106255 106255 0
这是asm特性造成的,所有不建议自己指定文件名。
还是得用OMF的方式来添加redo日志组,要怎么做呢?
这样做就好了:
添加日志组group11,里面有一个成员
ALTER DATABASE ADD LOGFILE THREAD 1 GROUP 11 ('+DATA01') SIZE 50M;
添加一个成员在日志组group11里
ALTER DATABASE ADD LOGFILE MEMBER '+DATA01' TO GROUP 11;
删除这个日志组的一个成员
查找到该成员的文件名后删除
ALTER DATABASE DROP LOGFILE MEMBER '+DATA01/zjcsc/onlinelog/group_11.390.777314119';
删除整个日志组
alter database drop logfile group 11;
添加日志组group11,里面有两个成员
ALTER DATABASE ADD LOGFILE THREAD 1 GROUP 11 ('+DATA01', '+DATA01') SIZE 50M;
删除整个日志组
alter database drop logfile group 11;
正式操作:
准备:
检查asm空间大小
SQL> select name,state,type,total_mb,free_mb,usable_file_mb,offline_disks from v$asm_diskgroup;
NAME STATE TYPE TOTAL_MB FREE_MB USABLE_FILE_MB OFFLINE_DISKS
------------------------------ ----------- ------ ---------- ---------- -------------- -------------
DATA01 CONNECTED EXTERN 1126400 106255 106255 0
1、添加日志组group11,两个成员,给实例1.
SQL> ALTER DATABASE ADD LOGFILE THREAD 1 GROUP 11 ('+DATA01', '+DATA01') SIZE 500M;
Database altered.
2、添加日志组group12,两个成员,给实例2.
SQL> ALTER DATABASE ADD LOGFILE THREAD 2 GROUP 12 ('+DATA01', '+DATA01') SIZE 500M;
Database altered.
####################################################################
##这里强调一下,THREAD 2和THREAD 1是指这个日志组要指定给那个实例,##
##1,2为实例号,RAC环境下必须为每个日志组指定他们的实例。 ##
####################################################################
3、检查日志情况
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------------
1 1 90388 52428800 1 YES INACTIVE 9.7016E+12 08-3月 -12
2 1 90389 52428800 1 YES INACTIVE 9.7016E+12 08-3月 -12
3 2 95683 52428800 1 YES INACTIVE 9.7016E+12 08-3月 -12
4 2 95685 52428800 1 NO CURRENT 9.7016E+12 08-3月 -12
5 2 95682 104857600 1 YES INACTIVE 9.7016E+12 08-3月 -12
6 2 95681 104857600 1 YES INACTIVE 9.7016E+12 08-3月 -12
7 2 95684 104857600 1 YES ACTIVE 9.7016E+12 08-3月 -12
8 1 90386 104857600 1 YES INACTIVE 9.7016E+12 08-3月 -12
9 1 90387 104857600 1 YES INACTIVE 9.7016E+12 08-3月 -12
10 1 90390 104857600 1 NO CURRENT 9.7016E+12 08-3月 -12
11 1 0 524288000 2 YES UNUSED 0
12 2 0 524288000 2 YES UNUSED 0
4、删除日志组group1和group3(按照实例分别删除)
SQL> alter database drop logfile group 1;
Database altered.
SQL> alter database drop logfile group 3;
Database altered.
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------------
2 1 90389 52428800 1 YES INACTIVE 9.7016E+12 08-3月 -12
4 2 95685 52428800 1 YES ACTIVE 9.7016E+12 08-3月 -12
5 2 95682 104857600 1 YES INACTIVE 9.7016E+12 08-3月 -12
6 2 95681 104857600 1 YES INACTIVE 9.7016E+12 08-3月 -12
7 2 95684 104857600 1 YES ACTIVE 9.7016E+12 08-3月 -12
8 1 90386 104857600 1 YES INACTIVE 9.7016E+12 08-3月 -12
9 1 90387 104857600 1 YES INACTIVE 9.7016E+12 08-3月 -12
10 1 90390 104857600 1 YES ACTIVE 9.7016E+12 08-3月 -12
11 1 90391 524288000 2 NO CURRENT 9.7016E+12 08-3月 -12
12 2 95686 524288000 2 NO CURRENT 9.7016E+12 08-3月 -12
5、重建日志组group1,两个成员,给实例1.
SQL> ALTER DATABASE ADD LOGFILE THREAD 1 GROUP 1 ('+DATA01', '+DATA01') SIZE 500M;
Database altered.
6、重建日志组group3,两个成员,给实例2.
SQL> ALTER DATABASE ADD LOGFILE THREAD 2 GROUP 3 ('+DATA01', '+DATA01') SIZE 500M;
Database altered.
7、检查日志情况
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------------
1 1 0 524288000 2 YES UNUSED 0
2 1 90389 52428800 1 YES INACTIVE 9.7016E+12 08-3月 -12
3 2 0 524288000 2 YES UNUSED 0
4 2 95685 52428800 1 YES INACTIVE 9.7016E+12 08-3月 -12
5 2 95682 104857600 1 YES INACTIVE 9.7016E+12 08-3月 -12
6 2 95681 104857600 1 YES INACTIVE 9.7016E+12 08-3月 -12
7 2 95684 104857600 1 YES INACTIVE 9.7016E+12 08-3月 -12
8 1 90386 104857600 1 YES INACTIVE 9.7016E+12 08-3月 -12
9 1 90387 104857600 1 YES INACTIVE 9.7016E+12 08-3月 -12
10 1 90390 104857600 1 YES ACTIVE 9.7016E+12 08-3月 -12
11 1 90391 524288000 2 NO CURRENT 9.7016E+12 08-3月 -12
12 2 95686 524288000 2 NO CURRENT 9.7016E+12 08-3月 -12
8、删除日志组group2和group4.
SQL> alter database drop logfile group 2;
Database altered.
SQL> alter database drop logfile group 4;
Database altered.
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------------
1 1 0 524288000 2 YES UNUSED 0
3 2 0 524288000 2 YES UNUSED 0
5 2 95682 104857600 1 YES INACTIVE 9.7016E+12 08-3月 -12
6 2 95681 104857600 1 YES INACTIVE 9.7016E+12 08-3月 -12
7 2 95684 104857600 1 YES INACTIVE 9.7016E+12 08-3月 -12
8 1 90386 104857600 1 YES INACTIVE 9.7016E+12 08-3月 -12
9 1 90387 104857600 1 YES INACTIVE 9.7016E+12 08-3月 -12
10 1 90390 104857600 1 YES INACTIVE 9.7016E+12 08-3月 -12
11 1 90391 524288000 2 NO CURRENT 9.7016E+12 08-3月 -12
12 2 95686 524288000 2 NO CURRENT 9.7016E+12 08-3月 -12
9、重建日志组group2,两个成员,给实例1.
SQL> ALTER DATABASE ADD LOGFILE THREAD 1 GROUP 2 ('+DATA01', '+DATA01') SIZE 500M;
Database altered.
10、重建日志组group4,两个成员,给实例2
SQL> ALTER DATABASE ADD LOGFILE THREAD 2 GROUP 4 ('+DATA01', '+DATA01') SIZE 500M;
Database altered.
11、检查日志状态
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------------
1 1 0 524288000 2 YES UNUSED 0
2 1 0 524288000 2 YES UNUSED 0
3 2 0 524288000 2 YES UNUSED 0
4 2 0 524288000 2 YES UNUSED 0
5 2 95682 104857600 1 YES INACTIVE 9.7016E+12 08-3月 -12
6 2 95681 104857600 1 YES INACTIVE 9.7016E+12 08-3月 -12
7 2 95684 104857600 1 YES INACTIVE 9.7016E+12 08-3月 -12
8 1 90386 104857600 1 YES INACTIVE 9.7016E+12 08-3月 -12
9 1 90387 104857600 1 YES INACTIVE 9.7016E+12 08-3月 -12
10 1 90390 104857600 1 YES INACTIVE 9.7016E+12 08-3月 -12
11 1 90391 524288000 2 NO CURRENT 9.7016E+12 08-3月 -12
12 2 95686 524288000 2 NO CURRENT 9.7016E+12 08-3月 -12
12 rows selected.
12、删除日志组5,6,7,8,9,10
SQL> alter database drop logfile group 5;
Database altered.
.
.
.
其他内容省略
SQL> alter database drop logfile group 10;
Database altered.
8 rows selected.
13、重建日志组5,7,6,8
SQL> ALTER DATABASE ADD LOGFILE THREAD 1 GROUP 5 ('+DATA01', '+DATA01') SIZE 500M;
Database altered.
SQL> ALTER DATABASE ADD LOGFILE THREAD 2 GROUP 7 ('+DATA01', '+DATA01') SIZE 500M;
Database altered.
SQL> ALTER DATABASE ADD LOGFILE THREAD 1 GROUP 6 ('+DATA01', '+DATA01') SIZE 500M;
Database altered.
SQL> ALTER DATABASE ADD LOGFILE THREAD 2 GROUP 8 ('+DATA01', '+DATA01') SIZE 500M;
Database altered.
14、查询日志状态
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------------
1 1 0 524288000 2 YES UNUSED 0
2 1 0 524288000 2 YES UNUSED 0
3 2 0 524288000 2 YES UNUSED 0
4 2 0 524288000 2 YES UNUSED 0
5 1 0 524288000 2 YES UNUSED 0
6 1 0 524288000 2 YES UNUSED 0
7 2 0 524288000 2 YES UNUSED 0
8 2 0 524288000 2 YES UNUSED 0
11 1 90391 524288000 2 NO CURRENT 9.7016E+12 08-3月 -12
12 2 95686 524288000 2 NO CURRENT 9.7016E+12 08-3月 -12
15、日志切换
分别登录两个实例执行一下操作:
切换redo日志到下一个日志组
SQL> alter system switch logfile;
System altered.
更新检查点,讲redo log的内容写入数据文件,归档redo log。
SQL> alter system checkpoint;
System altered.
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------------
1 1 90392 524288000 2 YES ACTIVE 9.7016E+12 08-3月 -12
2 1 90393 524288000 2 NO CURRENT 9.7016E+12 08-3月 -12
3 2 95687 524288000 2 NO CURRENT 9.7016E+12 08-3月 -12
4 2 0 524288000 2 YES UNUSED 0
5 1 0 524288000 2 YES UNUSED 0
6 1 0 524288000 2 YES UNUSED 0
7 2 0 524288000 2 YES UNUSED 0
8 2 0 524288000 2 YES UNUSED 0
11 1 90391 524288000 2 YES INACTIVE 9.7016E+12 08-3月 -12
12 2 95686 524288000 2 YES INACTIVE 9.7016E+12 08-3月 -12
10 rows selected.
ok日志切换正常,检查点正常。
16、删除日志组group11和group12
SQL> alter database drop logfile group 11;
Database altered.
SQL> alter database drop logfile group 12;
Database altered.
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------------
1 1 90392 524288000 2 YES ACTIVE 9.7016E+12 08-3月 -12
2 1 90393 524288000 2 NO CURRENT 9.7016E+12 08-3月 -12
3 2 95687 524288000 2 NO CURRENT 9.7016E+12 08-3月 -12
4 2 0 524288000 2 YES UNUSED 0
5 1 0 524288000 2 YES UNUSED 0
6 1 0 524288000 2 YES UNUSED 0
7 2 0 524288000 2 YES UNUSED 0
8 2 0 524288000 2 YES UNUSED 0
8 rows selected.
17、至此完成redo日志组的重建工作,每个实例各有4个日志组,每组2个成员,各500M。
检查日志文件情况:
SQL> select * from v$logfile;
GROUP# STATUS TYPE MEMBER IS_
---------- ------- ------- ---------------------------------------------------------------------------------------------------- ---
2 ONLINE +DATA01/zjcsc/onlinelog/group_2.266.777378229 NO
1 ONLINE +DATA01/zjcsc/onlinelog/group_1.265.777377921 NO
1 ONLINE +DATA01/zjcsc/onlinelog/group_1.261.777377921 NO
2 ONLINE +DATA01/zjcsc/onlinelog/group_2.262.777378231 NO
5 ONLINE +DATA01/zjcsc/onlinelog/group_5.318.777378469 NO
5 ONLINE +DATA01/zjcsc/onlinelog/group_5.317.777378471 NO
7 ONLINE +DATA01/zjcsc/onlinelog/group_7.316.777378499 NO
7 ONLINE +DATA01/zjcsc/onlinelog/group_7.315.777378501 NO
6 ONLINE +DATA01/zjcsc/onlinelog/group_6.320.777378983 NO
6 ONLINE +DATA01/zjcsc/onlinelog/group_6.319.777378983 NO
3 ONLINE +DATA01/zjcsc/onlinelog/group_3.394.777377939 NO
3 ONLINE +DATA01/zjcsc/onlinelog/group_3.395.777377941 NO
4 ONLINE +DATA01/zjcsc/onlinelog/group_4.396.777378245 NO
4 ONLINE +DATA01/zjcsc/onlinelog/group_4.397.777378247 NO
8 ONLINE +DATA01/zjcsc/onlinelog/group_8.398.777378995 NO
8 ONLINE +DATA01/zjcsc/onlinelog/group_8.399.777378997 NO
检查下asm使用情况,使用了8个G,减掉原有的的800M,共使用了7226M的asm空间
SQL> select name,state,type,total_mb,free_mb,usable_file_mb,offline_disks from v$asm_diskgroup;
NAME STATE TYPE TOTAL_MB FREE_MB USABLE_FILE_MB OFFLINE_DISKS
------------------------------ ----------- ------ ---------- ---------- -------------- -------------
DATA01 CONNECTED EXTERN 1126400 99029 99029 0
注意:在删除日志组的时候务必保持当前每个实例必须有2个日志组存在,这样才能完成正常的切换。
后续:
注意观察相同时段内的日志切换情况。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/20575781/viewspace-718047/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/20575781/viewspace-718047/