|
|

楼主 |
发表于 2013/8/19 10:48:13
|
显示全部楼层
本帖最后由 rain311 于 2013/8/19 10:49 编辑
开篇:日常运维性能相关问题个人处理经验
本次积极参与活动,可是真动手发现还是不太适应论坛发帖(嘿嘿,都是潜水、收藏的多),从ERP100再次开始培养这个新习惯吧{:soso_e112:}。最早Blog习惯也还是在ERP100这里培养的,感觉Blog很好。闲话不多说,开始讲讲转为甲方时,第一个关注问题就是日常运维性能问题,尤其一些CUX客制,需要快刀斩乱麻,没有时间系统培训学习的。
1. Form界面功能性能,少看Form源代码
第一:找到Form执行对应DB Session ID
在Form界面使用个性化,查看消息返回“=(SELECT t.sid FROM v$mystat t where rownum = 1)”,获得后不用个性化存盘。之后输入条件执行查询。
第二:根据SID获得执行SQL和执行计划
SELECT s.sid,s.prev_sql_addr,s.sql_address,s.sql_id FROM v$session s WHERE s.sid = (&sid_parm);
--执行SQL
SELECT sql_text,sql_id FROM v$sqltext_with_newlines t WHERE t.address = &sql_addr_parm ORDER BY t.piece;
--执行SQL的执行计划
select * from table(sys.dbms_xplan.display_cursor('&sql_id_parm'));
第三:SQL具体优化,这部分仁者见仁智者见智了
个人进阶案例:
指定SQL执行的sql_profiles,PROD环境的执行计划引数据变化某时会突然变化,对比TEST环境可以将高效的执行计划导入。N久之前做过一次,只能暂时先贴个人执行过的代码和资料了,自己都看不懂了,呵呵。
SELECT * FROM V$sql WHERE sql_ID = '0zba05qhjtsnf';
SELECT PLAN_TABLE_OUTPUT
FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR('3jmgrutbz6hrw', 0, 'all'));
select name,category,signature,sql_text,created,status,force_matching from dba_sql_profiles;
SELECT * FROM v$sql_plan WHERE sql_id = '97ssvk2rn24sm' AND CHILD_NUMBER = 0 AND other_XML IS NOT NULL;
exec DBMS_SQLTUNE.CREATE_STGTAB_SQLPROF(table_name=>'cux_test_t',schema_name=>'apps');
exec DBMS_SQLTUNE.PACK_STGTAB_SQLPROF (staging_table_name =>'cux_test_t',profile_name=>'cux_test');
exp apps/apppass tables=cux_test_t
imp apps/apppass tables=cux_test_t
EXEC DBMS_SQLTUNE.UNPACK_STGTAB_SQLPROF(replace => TRUE,staging_table_name => 'cux_test_t');
SELECT * FROM apps.cux_test_t;
--SELECT * FROM dba_hist_sql_plan WHERE sql_id = '0zba05qhjtsnf';
|
|