这是由于每天22:00数据库进行rman备份,导致数据库的IO读频繁,从而导致CPU大量的等待。IO、CPU过量等待导致整个服务器的负载比较
环境:
数据库: AIX5.3下的64位Oracle 10.2.0.1.0
TSM5.4:Windows 2003
带库:IBM3100
1、 数据库的alert_SID.log
Mon Jan 11 20:05:38 2010
Control autobackup written to SBT_TAPE device
comment 'API Version 2.0,MMS Version5.4.1.0',
media '439'
handle 'c-3524587154-20100111-05'
Mon Jan 11 22:12:32 2010
WARNING: inbound connection timed out (ORA-3136)
Mon Jan 11 22:12:33 2010
WARNING: inbound connection timed out (ORA-3136)
2、 AIX系统出现的错误:
> errpt |more
IDENTIFIER TIMESTAMP T C RESOURCE_NAME DESCRIPTION
3D32B80D 0121222410 P S topsvcs NIM thread blocked
3D32B80D 0121222410 P S topsvcs NIM thread blocked
查看详细信息:
> errpt -aj 3D32B80D |more
3D32B80D错误主要是由于整个系统的负载很高,从而导致HA的心跳不能正常通讯造成的。
具体原因:
这是由于每天22:00数据库进行rman备份,导致数据库的IO读频繁,从而导致CPU大量的等待。IO、CPU过量等待导致整个服务器的负载比较高。数据库服务器在备份时间段内负载比较高,,导致数据库用户在60秒内不能连接上数据库,出现连接超时情况(timeout)。
从而出现上面aler_SID.log日志中的ORA-3136的错误。
Oracle10g数据库用RMAN备份到带库时出现的问题。可以用Oracle的metalink帐户查看Note 311068.1
根据Note 311068.1的建议,对数据库进行测试、磁盘到磁盘的备份、磁盘到带库的备份、只读磁盘的备份。最后发现在备份时读取系统的数据文件的数据量太高(有些磁盘IO繁忙达到100%),在备份时用rman现在读取磁盘的速度解决该问题。
调整脚本为:
run{
allocate channel t1 type 'sbt_tape' parms 'ENV=(TDPO_OPTFILE=/usr/tivoli/tsm/client/oracle/bin64/tdpo.opt)' RATE20M;
allocate channel t2 type 'sbt_tape' parms 'ENV=(TDPO_OPTFILE=/usr/tivoli/tsm/client/oracle/bin64/tdpo.opt)' RATE20M;
BACKUP INCREMENTAL LEVEL 1 CUMULATIVE FILESPERSET 10
FORMAT 'incr_%T_%s_%p' DATABASE;
sql 'alter system archive log current';
BACKUP FILESPERSET 10 MAXSETSIZE10G
FORMAT 'arch_%T_%s_%p'
SKIP INACCESSIBLE
ARCHIVELOG ALL DELETE INPUT;
release channel t1;
release channel t2;
}