|
|
发表于 2013/7/24 14:49:23
|
显示全部楼层
回帖奖励 +100 点努力值
2. 分析性能问题
创建会计科目请求需要耗时几天才能完成,大大超出财务人员的期望。经过对系统的分析发现如下两条SQL执行时间过长(SQL语句过长、略去):
SQL ID: 6cxgkz9f963ta Plan Hash: 334136990
call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 1 0.00 0.00 0 0 0 0
Execute 2 2064.18 2065.18 4491 79036767 43617 4012
Fetch 0 0.00 0.00 0 0 0 0
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 3 2064.19 2065.18 4491 79036767 43617 4012
SQL ID: 77td7u9chv2gc Plan Hash: 710066116
call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 0 0.00 0.00 0 0 0 0
Execute 2 0.00 0.00 0 0 0 0
Fetch 2 1716.36 1717.19 2303 77615187 0 0
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 4 1716.36 1717.19 2303 77615187 0 0
可以看出,上述两SQL每次执行时间都在15分钟以上,原因为SQL的执行计划不正确。因为系统每天晚上执行收集统计信息的计划请求,所以可以排除统计信息不正确的可能,应为EBS系统的BUG。
查看SQL的执行计划发现,问题集中在XLA_AE_HEADERS_N4这个索引上。这个索引基于XLA_AE_HEADERS表的APPLICATION_ID,REQUEST_ID两列创建。APPLICATION_ID为XLA_AE_HEADERS表的分区键,不应将其作为索引的前缀。正确的执行计划应选择XLA_AE_HEADERS_U1索引。
3. 解决性能问题
将XLA_AE_HEADERS_N4索引重建,SQL如下:
DROP INDEX XLA.XLA_AE_HEADERS_N4;
CREATE INDEX XLA.XLA_AE_HEADERS_N4 ON XLA.XLA_AE_HEADERS(REQUEST_ID) TABLESPACE APPS_TS_TX_IDX LOCAL;
同时替换文件xlajelns.pkb中的SQL提示,改善执行计划:
/*+ Leading(LGT,XDL) use_nl(lgt xdl aeh ael)*/替换为/*+ Leading(LGT,XDL) use_nl(lgt xdl aeh ael) index(aeh,XLA_AE_HEADERS_U1)*/。
/*+ leading(lgt) use_nl(xdl,ael,aeh) */替换为/*+ leading(lgt) use_nl(xdl,ael,aeh) index(aeh,XLA_AE_HEADERS_U1)*/。
/*+ index(xdl XLA_DISTRIBUTION_LINKS_N3) */替换为/*+index(aeh XLA_AE_HEADERS_N3) index(xdl XLA_DISTRIBUTION_LINKS_N3) */。
重新执行xlajelns.pkb以更新package。
|
评分
-
查看全部评分
|