ITPub博客

首页 > 数据库 > Oracle > Oracle数据库遇到性能问题处理方法

Oracle数据库遇到性能问题处理方法

原创 Oracle 作者:jason_YU3 时间:2014-07-18 16:55:14 0 删除 编辑
项目:
某**Boss项目
问题:
查询报表慢无法验收
分析及处理方法:
1:通过awr发现pga命中率很低 

PGA Cache Hit %

W/A MB Processed

Extra W/A MB Read/Written

74.97

108,656

36,272

解决过程:
查看系统总内存为32G,SGA为22G,PGA只有2G
更改数据内存:
alter system set sga_max_size=18G  scope=spfile;
alter system set sga_target=18G scope=spfile;
alter system set pga_aggregate_target=8G  scope=spfile;
2:通过trace 发现Bug
9772888 (查询报表慢,应该跟它没关,但是发现了问题,顺便解决)WARNING:Could not lower the asynch I/O limit to 160  

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,查看执行计划,发现执行计划没有什么异常。再通过toad for oracle 11 中的优化工具找出等价最优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分钟以下。

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

下一篇: vmstat+iostat参考
请登录后发表评论 登录
全部评论

注册时间:2014-07-17

  • 博文量
    5
  • 访问量
    12053