ITPub博客

首页 > 数据库 > Oracle > DBMS_XPLAN的不同数据源调用的不同方法

DBMS_XPLAN的不同数据源调用的不同方法

Oracle 作者:xypincle 时间:2017-03-24 21:38:39 0 删除 编辑

  1. 方法                    使用                    数据源
  2. display                 explain                计划表
  3. display_cursor          real plan              库缓存中的游标缓存
  4. display_awr             history                awr仓库基表wrh$sql_play
  5. display_sqlset          sql tuning set         sql set视图
  6. 一.dbms_xplan.display
  7. display函数返回存储在计划表中的执行计划,返回值为集合dbms_xplan_type_table实例。
  8. 注意:使用前把sqlplus的linesize参数的值调整到至少120.
  9. 语法:
  10. select * from table(dbms_xplan.display('table_name','statement_id','format','filter_preds')) ;
  11. 参数:
  12. 1.table_name 指定计划表的名字,默认为plan_table
  13. 2.statement_id 指定sql的语句的名字,当sql语句explain plan执行时,此参数是可选的。默认为null,在使用默认值的情况下,
  14. 将显示最近插入计划表中的执行变化(如果没有指定filter_preds的参数)
  15. 3.format 指定输出内容,除了基本的basic,typical,serial,all和advanced,为了更好地控制,还有一些额外的修饰符可以添加在后面(alias,bytes等)
  16.     format参数的取值有:
  17.         3.1.basic        仅显示很少的信息,基本上只包含操作和操作的对象;
  18.         3.2.typical        显示大部分相关对象,基本上包含了除别名,提纲和字段投影外的所有对象
  19.         3.3.serial        和typical类似,只是并行操作没有显示出来
  20.         3.4.all            显示除了提纲外的所有信息
  21.         3.5.advanced    显示所有信息
  22. 4.filter_preds 指定在查询计划表时添加的一个约束,约束的内容是基于计划表中某个字段一个寻常的sql谓词(比如statement_id='xxx'),默认值是null。
  23. 如果使用默认值,将显示最近一条插入到计划表中的执行计划。

  24. 修饰符:
  25. 1.alias        控制包含查询块名和对象别名部分的显示
  26. 2.bytes        控制执行计划表中字段bytes的显示
  27. 3.cost        控制执行计划表中字段cost的显示
  28. 4.note        控制包含注意信息(note)部分的显示
  29. 5.outline    控制包含提纲(outline)部分的显示
  30. 6.parallel    控制并行处理信息的显示,尤其是执行计划表中字段TQ、IN-OUT、PQ Distrib的显示
  31. 7.partition    控制分区信息的显示,尤其是执行计划表中字段pstart和pstop的显示
  32. 8.peeked_binds    控制包含被窥视的绑定变量部分的显示,既然sql语句explain plan的当前实现不执行绑定变量窥视,这部分内容就不会显示
  33. 9.predicate        控制包含谓词filter和access部分的显示
  34. 10.projection    控制包含字段投影信息部分的显示
  35. 11.remote        控制远程执行的sql语句的显示
  36. 12.rows            控制执行计划表中字段rows的显示
  37. 举例如下:
  38. SQL> explain plan for select count(*) from t1 ;
  39. SQL> select * from table(dbms_xplan.display(null,null,'basic')) ;

  40. 二、dbms_xplan.display_cursor
  41. 显示存储在库缓存中的执行计划。
  42. 语法:
  43. select * from table(dbms_xplan.display_cursor('sql_id',cursor_child_no,'format')) ;
  44. 参数:
  45. 1.sql_id    指定被返回执行计划的sql语句的父游标,默认值是null,如果使用了默认值,当前会话的最后一条sql语句的执行计划将被返回
  46. 2.cursor_child_no    指定父游标下子游标的序号,即指定被返回执行计划的sql语句的子游标,默认值是0。如果设定为null,sql_id所指父游标下所有子游标的执行计划都被返回
  47. 3.format    指定要显示哪些信息,默认值为typical,可用参数和display相同,此外,如果执行统计打开(参数statistics_level为all或sql语句使用了提示gather_plan_statistics),则可以显示更多的信息
  48.     foramt参数的修饰符
  49.     3.1 allstats    这是iostats+memstats的快捷方式
  50.     3.2 iostats        控制i/o统计的显示
  51.     3.3 last        显示所有执行计算过的统计,如果指定了这个值,只显示最后一次执行的统计信息
  52.     3.4 memstats    控制pga相关统计的显示
  53.     3.5 runstats_last    和iostats last相同,只能用于10gR1
  54.     3.6 runstats_tot    和iostats相同,只能用于10gR1
  55. 举例如下:
  56. SQL> select count(*) from t1 ;
  57. SQL> select sql_id,address,hash_value,plan_hash_value,child_number from v$sql where sql_text like 'select count(*) from t1%' and sql_text not like '%v$sql%';
  58. SQL> select * from table(dbms_xplan.display_cursor('b73dhvfrh3ada',0,'advanced+allstats')) ;

  59. 三、dbms_xplan.display_awr
  60. display_awr函数返回存储在awr中的执行计划,从10g起可用,返回值是集合dbms_xplan_type_table的一个实例
  61. 语法:
  62. select * from table(dbms_xplan.display_awr('sql_id',plan_hash_value,db_id,'format')) ;
  63. 参数:
  64. 1.sql_id    指定被返回执行计划的sql语句的父游标,无默认值
  65. 2.plan_hash_value    指定被返回执行计划的sql语句的哈希值,默认值为null。如果使用了默认值,与sql_id参数指定的父游标相关的所有执行计划都会返回
  66. 3.db_id        指定被返回执行计划的sql语句所在的数据库,默认值为null,如果使用了默认值,则数据库为当前库
  67. 4.format    指定要显示那些信息,和display函数中的format有相同的函数,默认值为typical

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

下一篇: RMAN命令大全
请登录后发表评论 登录
全部评论

注册时间:2013-05-11

  • 博文量
    208
  • 访问量
    212338