资深Oracle数据库专家 OCM认证大师 10年数据库相关服务及开发经验 各类数据库相关方案的编写,管理及实施 数据中心数据库日常运维、大型项目割接、性能优化等方面有丰富的实战经验 客户包括: 电信,银行,保险,航空,国网,汽车,烟草等 想要一起学习探讨数据安全技术的请加qq群 256041954
全部博文(163)
分类: Oracle
2016-03-21 12:10:56
PGA Cache Hit % |
W/A MB Processed |
Extra W/A MB Read/Written |
74.97 |
108,656 |
36,272 |
for SQL direct I/O. It is set to -1
解决过程:
(1):下载patch 9772888
(2):解压补丁:进入9772888目录 执行$ORACLE_HOME/OPatch/opatch apply
$ORACLE_HOME/OPatch/opatch lsinventory detail (查看命令)
3:在应用端查询报表,通过jboss后台抓取相应sql或使用sql语句抓取后台sql,查看执行计划,发现执行计划没有什么异常。再通过 中的优化工具找出等价最优sql语句,之后让开发更新程序。
4:再通过Oracle本身自带的SQL Tuning Advisor 自动优化一下相应sql
具体步骤:
(1):进入Boss系统应用用户
DECLARE
task_name VARCHAR2(200);
my_sqltext CLOB;
user_name VARCHAR2(30);
sql_text VARCHAR2(5000);
description VARCHAR2(200);
my_task_name VARCHAR2(200);
BEGIN
my_sqltext :='sql语句';
my_task_name := DBMS_SQLTUNE.CREATE_TUNING_TASK(
sql_text => my_sqltext,
user_name => 'SMS3',
scope => 'COMPREHENSIVE',
time_limit => 600,
task_name => 'test_sql_tuning_task1',
description => 'Task to tune a query');
DBMS_SQLTUNE.EXECUTE_TUNING_TASK(task_name => 'test_sql_tuning_task1');
END;
/
(2):通过select task_name,ADVISOR_NAME,STATUS from user_advisor_tasks; 查看是否执行完成,如果status是EXECUTING,则表示任务正在执行,如果为completed,则任务已执行完成。
(3):查看语句优化建议
set long 999999
set LONGCHUNKSIZE 999999
set serveroutput on size 999999
set linesize 200
select dbms_sqltune.report_tuning_task('test_sql_tuning_task1') from dual;
DBMS_SQLTUNE.REPORT_TUNING_TASK('TEST_SQL_TUNING_TASK1')
(4):根据建议,优化语句。
(5):删除任务
exec dbms_sqltune.drop_tuning_task('TEST_SQL_TUNING_TASK1');
5:将优化后的sql提供给开发,打完补丁,更新到Boss应用系统后,查询时间从之前的15-20分钟,提高到1分钟以下。