首页 > 数据库 > Oracle > Oracle 性能优化-expdp备份速度优化02
Oracle 性能优化 -expdp 备份速度优化 02
环境:
OS:Windows Server 2012
DB:Oracle 11.2.0.1.0
服务器:DELL R730
问题:
早上巡检,发现其中一个系统数据库 备份 耗时7 个多小时,之前都是 4 个小时左右,突然多了三个小时时间。
问题分析:
收集数据库备份时间段的AWR 报告。
发现在数据库备份期间,有一个SQL 执行了 2001 次,平均单次耗时 12 秒,争抢了大量资源,导致备份时间延长。


耗时SQL 如下
SELECT "T0"."FID"
FROM "CT_JCZ_INTERFACELOG" "T0"
WHERE ( "T0"."FNUMBER" = : 1 AND "T0"."FCONTROLUNITID" = : 2 )
AND ROWNUM <= 1
查看SQL 执行计划
select * from table ( dbms_xplan.display_cursor ( '5gnuqq0kwqtaq' ));

select * from table ( dbms_xplan.display_awr ( '5gnuqq0kwqtaq' ));

查看SQL 绑定变量信息:
select * from dba_hist_sqlbind where sql_id = '5gnuqq0kwqtaq' ;
将绑定信息带入SQL执行,耗时11.591秒:
SELECT "T0"."FID"
FROM "CT_JCZ_INTERFACELOG" "T0"
WHERE ( "T0"."FNUMBER" = '2018-12-24-inteLog-0000661807' AND
"T0"."FCONTROLUNITID" = 'ocIAAAAAQmjM567U' )
AND ROWNUM <= 1

查看执行计划

问题很明显,大表没有合适的索引,并且谓词条件选择性很高,适合创建索引。
select count (*) from CT_JCZ_INTERFACELOG ; ---966435
---1
select count (*)
from "CT_JCZ_INTERFACELOG" "T0"
WHERE ( "T0"."FNUMBER" = '2018-12-24-inteLog-0000661807' AND
"T0"."FCONTROLUNITID" = 'ocIAAAAAQmjM567U' )
创建索引
create index I_CT_JCZ_INTERFACELOG_001 on CT_JCZ_INTERFACELOG ( FNUMBER );
时间缩短到0.062秒
SELECT "T0"."FID"
FROM "CT_JCZ_INTERFACELOG" "T0"
WHERE ( "T0"."FNUMBER" = '2018-12-24-inteLog-0000661807' AND
"T0"."FCONTROLUNITID" = 'ocIAAAAAQmjM567U' )
AND ROWNUM <= 1

查看执行计划

第二天查看备份耗时恢复正常

欢迎关注我的微信公众号"IT小Chen",共同学习,共同成长!!!

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29785807/viewspace-2675519/ ,如需转载,请注明出处,否则将追究法律责任。