`

SQL Access Advisor的使用

 
阅读更多

环境:

OS:Red Hat Linux As 5

DB:10.2.0.4

SQL Access Advisor是伴随着10G出现的一个优化工具,提供对表分区,物化视图,索引,物化视图日志优化建议.下边通过对单个SQL的执行,查看Oracle给出的建议.

1.建表并生成测试数据

SQL> connect scott/scott
Connected.
SQL> drop table tb_test;
SQL> create table tb_test(id number not null,name varchar2(30));
Table created.
SQL> create index idx_tb_test on tb_test(id);
Index created.
SQL> declare
begin
  for i in 1 .. 100000 loop
    insert into tb_test values (i, 'test');
    commit;
  end loop;
end;

2.分析表

connect / as sysdba

begin
  dbms_stats.gather_table_stats(ownname => 'SCOTT', tabname => 'TB_TEST',cascade => true);
end;


3.使用dbms_advisor.quick_tune生成优化建议

connect / as sysdba

declare
  l_task_name VARCHAR2(255);
  l_sql_stmt  VARCHAR2(4000);
begin
  l_sql_stmt  := 'select /*+ full(t) */ * from scott.tb_test t where t.id = :1';
  l_task_name := 'MY_FULL_ACCESS_TEST';
  DBMS_ADVISOR.QUICK_TUNE(DBMS_ADVISOR.SQLACCESS_ADVISOR,
                          l_task_name,
                          l_sql_stmt);
  exception when others then dbms_output.put_line(sqlerrm);                    
end;

我们这里造一个走全表扫描的索引,很明显走索引才是正确的,这里的目的主要是看oracle会给出什么样的建议.

 

4.查看优化建议

SQL> set serveroutput on;
SQL> set long 999999999;
SQL> begin
       show_recm('MY_FULL_ACCESS_TEST');
     end;

=========================================
Task_name = MY_FULL_ACCESS_TEST
Action ID: 1
Command : RETAIN INDEX
Attr1 (name)      : "SCOTT"."IDX_TB_TEST_N1"
Attr2 (tablespace):
Attr3             : "SCOTT"."TB_TEST"
Attr4             : BTREE
Attr5             :
----------------------------------------
=========END RECOMMENDATIONS============

PL/SQL procedure successfully completed.

从以上输出可以看出oracle给出的建议是走索引.

show_recm过程如下:

CREATE OR REPLACE PROCEDURE show_recm (in_task_name IN VARCHAR2) IS
CURSOR curs IS
  SELECT DISTINCT action_id, command, attr1, attr2, attr3, attr4
  FROM dba_advisor_actions
  WHERE task_name = in_task_name
  ORDER BY action_id;
  v_action        number;
  v_command     VARCHAR2(32);
  v_attr1       VARCHAR2(4000);
  v_attr2       VARCHAR2(4000);
  v_attr3       VARCHAR2(4000);
  v_attr4       VARCHAR2(4000);
  v_attr5       VARCHAR2(4000);
BEGIN
  OPEN curs;
  DBMS_OUTPUT.PUT_LINE('=========================================');
  DBMS_OUTPUT.PUT_LINE('Task_name = ' || in_task_name);
  LOOP
     FETCH curs INTO
       v_action, v_command, v_attr1, v_attr2, v_attr3, v_attr4 ;
   EXIT when curs%NOTFOUND;
   DBMS_OUTPUT.PUT_LINE('Action ID: ' || v_action);
   DBMS_OUTPUT.PUT_LINE('Command : ' || v_command);
   DBMS_OUTPUT.PUT_LINE('Attr1 (name)      : ' || SUBSTR(v_attr1,1,30));
   DBMS_OUTPUT.PUT_LINE('Attr2 (tablespace): ' || SUBSTR(v_attr2,1,30));
   DBMS_OUTPUT.PUT_LINE('Attr3             : ' || SUBSTR(v_attr3,1,30));
   DBMS_OUTPUT.PUT_LINE('Attr4             : ' || v_attr4);
   DBMS_OUTPUT.PUT_LINE('Attr5             : ' || v_attr5);
   DBMS_OUTPUT.PUT_LINE('----------------------------------------');
   END LOOP;
   CLOSE curs;
   DBMS_OUTPUT.PUT_LINE('=========END RECOMMENDATIONS============');
END show_recm;

-- The End --

 

参考至:http://blog.chinaunix.net/uid-77311-id-3233477.html

如有错误,欢迎指正

邮箱:czmcj@163.com

分享到:
评论

相关推荐

    自我管理数据库-自动的sql调优

    Oracle 11G的自动SQL调优功能,如SQL Tuning Advisor和SQL Access Advisor,提供了综合、自动且经济高效的解决方案,可以显著减少调整时间,降低管理成本。 **手动SQL调优的挑战** 手动调整SQL面临多方面的挑战。...

    自我管理数据库自动的sql调优.pptx

    此PPTX文件主要探讨了Oracle公司的自我管理数据库中自动SQL调优的功能,包括SQL Tuning Advisor和SQL Access Advisor。这两个工具为数据库管理员(DBA)提供了集成、自动和经济高效的SQL调整解决方案,显著减少了手动...

    SQL调优

    在【自我管理数据库-自动的SQL调优.ppt】中,主要探讨了Oracle 10g中的自动SQL调优工具,如SQL Tuning Advisor和SQL Access Advisor。 **手动调整的挑战** 手动SQL调优通常需要数据库管理员(DBA)具备SQL优化、...

    产品管理总管数据库可管理性.pptx

    这个话题涉及到Oracle公司的自我管理数据库解决方案,特别是SQL Tuning Advisor和SQL Access Advisor。 SQL Tuning Advisor是Oracle 10g引入的一种自动化工具,它的目标是减少SQL调整的时间和成本,最高可达80%的...

    某公司产品管理总管数据库可管理性.pptx

    综上所述,自动SQL调整通过SQL Tuning Advisor和SQL Access Advisor等工具,显著减轻了DBA的工作负担,提高了数据库管理的效率和性能。通过自动统计数据分析和SQL配置文件的使用,数据库能够更好地适应不断变化的SQL...

    产品管理总管数据库可管理性(1).pptx

    《产品管理总管数据库可管理性》的讨论主要集中在数据库的自我管理和SQL调整上,...通过使用SQL Tuning Advisor和SQL Access Advisor等工具,数据库管理员可以更有效地监控和优化SQL负载,确保系统的稳定性和高效运行。

    Db10g SQL Tuning Vol-I

    通过使用 SQL Access Advisor 分析查询模式和数据分布情况,确定了创建复合索引的最佳方案,从而大幅减少了查询时间。 #### 案例三:使用 SQL Tuning Advisor 自动优化 在一个复杂的应用系统中,由于频繁修改 SQL ...

    Oracle_Database_10g_SQL_Tuning

    创建SQL Profile的方法包括使用`DBMS_SQLTUNE`包或通过SQL Access Advisor。 #### 5. SQL Access Advisor SQL Access Advisor是Oracle 10g提供的一种工具,用于建议如何改进SQL语句的性能。它可以识别出性能不佳的...

    Less13_Performance_TB3.pdf

    - **课程目标**:本课程旨在帮助学员掌握如何利用Oracle Enterprise Manager监控数据库性能、使用SQL Tuning Advisor优化SQL语句、利用SQL Access Advisor改进数据访问策略、启用自动共享内存管理(ASSM)、使用...

    《收获,不止SQL优化》一书的代码

    10. **数据库调优工具与策略**:如SQL Tuning Advisor、Database Replay、SQL Access Advisor等工具的使用。 通过书中提供的代码示例,读者可以亲手操作,体验各种优化技巧的实际效果。这些代码可能包括各种性能...

    ORACLE10gSqlTunning.pdf

    - **SQL模式分析**:SQL Tuning Advisor支持,Access Advisor不支持。 - **STA* (Statistics Advisor)**:SQL Tuning Advisor支持。 - **Access Path: Materialized View Logs**:SQL Tuning Advisor支持。 #### 八...

    Oracle 12C SQL Tuning for Developers

    12. **SQL Access Advisor**:此工具可以帮助优化访问路径选择,提供关于何时使用索引、表分区和并行执行的建议。 通过学习"D79995GC10_sg1.pdf"、"D79995GC10_sg2.pdf"和"D79995GC10_ag.pdf"中的Student Guide和...

    Oracle 19C SQL调优指南 中文版 DBA优化利器

    - **SQL Access Advisor和SQL Tuning Advisor**:使用这些工具自动建议优化策略。 8. **并发控制与锁** - **理解事务与锁定机制**:避免死锁和资源争抢,提高多用户并发性能。 9. **性能优化最佳实践** - **...

    产品管理总管数据库可管理性培训课件.ppt

    SQL Tuning Advisor专注于优化SQL执行计划,而SQL Access Advisor则帮助优化数据访问路径。 自动SQL调整通过一系列步骤进行,包括增加丢失的索引、修改SQL结构、创建SQL配置文件、分析SQL结构、访问路径和统计数据...

    OracleSQL_调优方法论.ppt

    此外,Oracle还提供了自动SQL调优机制,如SQL Tuning Advisor和SQL Access Advisor,它们能自动执行上述的调优步骤,帮助管理员快速定位问题并提出优化建议。 总结来说,Oracle SQL调优是一个涉及多个层面的系统...

    Oracle_Database_10g_SQL_Tuning_Workshop

    SQL Access Advisor是Oracle 10g的一个自动化工具,它可以分析查询工作负载,推荐索引、分区策略或物化视图等,以改善整体SQL性能。通过这个工具,数据库管理员可以获取到具体的SQL调优建议,从而针对性地进行优化。...

Global site tag (gtag.js) - Google Analytics