[20121026]11g下访问v$sql_shared_memory.txt

简介: [20121026]11g下访问v$sql_shared_memory.txt参考链接:http://jonathanlewis.wordpress.com/2012/02/27/geek-stuff-3/select * from v$version w...
[20121026]11g下访问v$sql_shared_memory.txt

参考链接:
http://jonathanlewis.wordpress.com/2012/02/27/geek-stuff-3/

select * from v$version where rownum

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production

SQL> select * from v$sql_shared_memory;
no rows selected

SQL> column view_definition format a100
SQL> select * from V$FIXED_VIEW_DEFINITION where view_name='GV$SQL_SHARED_MEMORY'

VIEW_NAME                      VIEW_DEFINITION
------------------------------ ----------------------------------------------------------------------------------------------------
GV$SQL_SHARED_MEMORY           select /*+use_nl(h,c)*/ c.inst_id,kglnaobj,kglfnobj, kglnahsh, kglobt03, kglobhd6, rtrim(substr(ksmc
                               hcom, 1, instr(ksmchcom, ':', 1, 1) - 1)), ltrim(substr(ksmchcom,              -(length(ksmchcom) -
                               (instr(ksmchcom, ':', 1, 1))),               (length(ksmchcom) - (instr(ksmchcom, ':', 1, 1)) + 1)))
                               , ksmchcom, ksmchptr, ksmchsiz, ksmchcls, ksmchtyp, ksmchpar from x$kglcursor c, x$ksmhp h where ksm
                               chds = kglobhd6 and kglhdadr != kglhdpar

查看执行计划:
SQL> select * from v$sql_shared_memory;
no rows selected

SQL> @dpc

PLAN_TABLE_OUTPUT
-------------------------------------------------------------------
SQL_ID  7q80kq23v3nd1, child number 0
-------------------------------------
select * from v$sql_shared_memory
Plan hash value: 2632394999
---------------------------------------------------------------
| Id  | Operation         | Name        | E-Rows | Cost (%CPU)|
---------------------------------------------------------------
|   0 | SELECT STATEMENT  |             |        |     1 (100)|
|   1 |  NESTED LOOPS     |             |      1 |     0   (0)|
|   2 |   FIXED TABLE FULL| X$KSMHP     |      1 |            |
|*  3 |   FIXED TABLE FULL| X$KGLCURSOR |      1 |     0   (0)|
---------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
   3 - filter(("C"."INST_ID"=USERENV('INSTANCE') AND
              "KGLHDADR""KGLHDPAR" AND "KSMCHDS"="KGLOBHD6"))

--而11g下,先扫描X$KSMHP ,然后在扫描X$KGLCURSOR ,然后选择nested loop.
执行如下:

SQL> select * from X$KSMHP;
no rows selected
--自然先访问X$KSMHP会没有结果.加入提示leading(c,h),这样先扫描x$kglcursor.如下:

SELECT /*+ leading(c,h) use_nl(c,h)*/
       c.inst_id, kglnaobj, kglfnobj, kglnahsh, kglobt03, kglobhd6,
       RTRIM (SUBSTR (ksmchcom, 1, INSTR (ksmchcom, ':', 1, 1) - 1)),
       LTRIM (SUBSTR (ksmchcom,
                      - (LENGTH (ksmchcom) - (INSTR (ksmchcom, ':', 1, 1))),
                      (LENGTH (ksmchcom) - (INSTR (ksmchcom, ':', 1, 1)) + 1
                      )
                     )
             ),
       ksmchcom, ksmchptr, ksmchsiz, ksmchcls, ksmchtyp, ksmchpar
  FROM x$kglcursor c, x$ksmhp h
 WHERE ksmchds = kglobhd6 AND kglhdadr != kglhdpar;

--有结果.看看执行计划:
SQL> @ dpc 378frj3u3phsc

PLAN_TABLE_OUTPUT
-------------------------------------
SQL_ID  378frj3u3phsc, child number 0
-------------------------------------
SELECT /*+ leading(c,h) use_nl(c,h)*/        c.inst_id, kglnaobj,
kglfnobj, kglnahsh, kglobt03, kglobhd6,        RTRIM (SUBSTR (ksmchcom,
1, INSTR (ksmchcom, ':', 1, 1) - 1)),        LTRIM (SUBSTR (ksmchcom,
                    - (LENGTH (ksmchcom) - (INSTR (ksmchcom, ':', 1,
1))),                       (LENGTH (ksmchcom) - (INSTR (ksmchcom, ':',
1, 1)) + 1                       )                      )
),        ksmchcom, ksmchptr, ksmchsiz, ksmchcls, ksmchtyp, ksmchpar
FROM x$kglcursor c, x$ksmhp h  WHERE ksmchds = kglobhd6 AND kglhdadr !=
kglhdpar

Plan hash value: 1141239260

--------------------------------------------------------------------------
| Id  | Operation                | Name            | E-Rows | Cost (%CPU)|
--------------------------------------------------------------------------
|   0 | SELECT STATEMENT         |                 |        |     1 (100)|
|   1 |  NESTED LOOPS            |                 |      1 |     0   (0)|
|*  2 |   FIXED TABLE FULL       | X$KGLCURSOR     |     99 |     0   (0)|
|*  3 |   FIXED TABLE FIXED INDEX| X$KSMHP (ind:1) |      1 |     0   (0)|
--------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
   2 - filter("KGLHDADR""KGLHDPAR")
   3 - filter("KSMCHDS"="KGLOBHD6")

--可以发现改变执行计划,访问X$KSMHP的操作是FIXED TABLE FIXED INDEX,与上面的不同.
--知道这些,要11g下有结果输出,可以加入提示:
1.建立自己视图,加入需要的提示.
2.执行时加入提示,显示计划时加入advanced 或者outline.

select * from v$sql_shared_memory;
select * from table(dbms_xplan.display_cursor(NVL('&1',NULL),NULL,'ALLSTATS LAST PEEKED_BINDS cost advanced'));

PLAN_TABLE_OUTPUT
------------------------------------------------------------------
SQL_ID  7q80kq23v3nd1, child number 0
-------------------------------------
select * from v$sql_shared_memory

Plan hash value: 2632394999

---------------------------------------------------------------
| Id  | Operation         | Name        | E-Rows | Cost (%CPU)|
---------------------------------------------------------------
|   0 | SELECT STATEMENT  |             |        |     1 (100)|
|   1 |  NESTED LOOPS     |             |      1 |     0   (0)|
|   2 |   FIXED TABLE FULL| X$KSMHP     |      1 |            |
|*  3 |   FIXED TABLE FULL| X$KGLCURSOR |      1 |     0   (0)|
---------------------------------------------------------------

Outline Data
-------------

  /*+
      BEGIN_OUTLINE_DATA
      IGNORE_OPTIM_EMBEDDED_HINTS
      OPTIMIZER_FEATURES_ENABLE('11.2.0.1')
      DB_VERSION('11.2.0.1')
      ALL_ROWS
      OUTLINE_LEAF(@"SEL$88122447")
      MERGE(@"SEL$641071AC")
      OUTLINE(@"SEL$1")
      OUTLINE(@"SEL$641071AC")
      MERGE(@"SEL$07BDC5B4")
      OUTLINE(@"SEL$2")
      OUTLINE(@"SEL$07BDC5B4")
      MERGE(@"SEL$4")
      OUTLINE(@"SEL$3")
      OUTLINE(@"SEL$4")
      FULL(@"SEL$88122447" "H"@"SEL$4")
      FULL(@"SEL$88122447" "C"@"SEL$4")
      LEADING(@"SEL$88122447" "H"@"SEL$4" "C"@"SEL$4")
      USE_NL(@"SEL$88122447" "C"@"SEL$4")
      END_OUTLINE_DATA
  */

Predicate Information (identified by operation id):
---------------------------------------------------

   3 - filter(("C"."INST_ID"=USERENV('INSTANCE') AND
              "KGLHDADR""KGLHDPAR" AND "KSMCHDS"="KGLOBHD6"))

Note

--从outline date中取出如下
      LEADING(@"SEL$88122447" "H"@"SEL$4" "C"@"SEL$4")
      USE_NL(@"SEL$88122447" "C"@"SEL$4")

修改执行语句如下:

select  /*+      LEADING(@"SEL$88122447"  "C"@"SEL$4" "H"@"SEL$4")  USE_NL(@"SEL$88122447" "H"@"SEL$4" */ * from v$sql_shared_memory;

--这样就有输出了,另外我是以scott用户执行,如果sys用户执行.@"SEL$88122447"要修改@sel$5c160134. 方法一样,查看执行计划加入outline或者advanced.

select  /*+      LEADING(@sel$5c160134  "C"@"SEL$3" "H"@"SEL$3")  USE_NL(@sel$5c160134 "H"@"SEL$3" */ * from v$sql_shared_memory;

目录
相关文章
|
21天前
|
SQL 关系型数据库 MySQL
Linux系统部署Yearning SQL审核平台结合内网穿透实现公网访问
Linux系统部署Yearning SQL审核平台结合内网穿透实现公网访问
|
3月前
|
SQL 安全 关系型数据库
接上篇文章,在测试宝塔 WAF 的未授权访问漏洞时无意间还发现了一个 SQL 注入漏洞
接上篇文章,在测试宝塔 WAF 的未授权访问漏洞时无意间还发现了一个 SQL 注入漏洞,品相还不错,可执行任意 SQL 语句。 总之,吃了一惊,一个防 SQL 注入的工具居然也有 SQL 注入漏洞。 请看这段代码
429 1
|
4月前
|
SQL 数据挖掘 数据处理
「SQL面试题库」 No_95 每次访问的交易次数
「SQL面试题库」 No_95 每次访问的交易次数
|
7月前
|
SQL 分布式计算 Java
如何在 hive udf 中访问配置数据-踩坑记录,方案汇总与对比-udf中可以写sql吗?
如何在 hive udf 中访问配置数据-踩坑记录,方案汇总与对比-udf中可以写sql吗?
|
SQL 应用服务中间件 nginx
nginx禁止外网访问登录页面,SQL 注入、XSS 攻击配置
nginx禁止外网访问登录页面,SQL 注入、XSS 攻击配置
584 0
|
SQL 运维 Oracle
使用NineData访问SQL Server数据库
NineData 对SQL Server 数据库的源访问和管理,主要有这几个功能:简洁、清晰的导航树,SQL智能不全、SQL 执行历史的追踪等功能。另外,NineData除了可以支持以GUI的方式访问和管理SQL Server之外,NineData还支持 SQL Server 到SQL Server的数据迁移/同步/复制/对比,以及对SQL Server 的物理、逻辑备份等功能。
368 0
使用NineData访问SQL Server数据库
|
存储 SQL 数据采集
通过定时SQL提取阿里云API网关访问日志指标
阿里云API网关服务提供API托管服务,提供了强大的适配和集成能力,可以将各种不同的业务系统API实现统一管理。API网关同时支持将API访问日志一键存储到日志服务,通过日志服务强大的查询分析能力,用户可以针对访问日志自定义计算多种指标,监测服务运行情况。继而通过定时SQL将结果指标直接存储到时序库,直接查询API网关指标,而且可以通过较低成本长期存储指标数据。 下面我们一步步从头开始,学习如何利用日志服务监测API网关及其代理的服务。
|
SQL 存储 弹性计算
RDS SQL Server 通过链接服务器访问公网的解决方案
RDS SQL Server 开放了 Linked Server功能,但是默认只能在RDS之间,或者同VPC 下的ECS 自建SQL Server,实现Linkded Server 功能。本文将介绍,利用VPC SNAT 功能,实现RDS Linked Server 访问公网数据库的能力。
RDS SQL Server 通过链接服务器访问公网的解决方案
【每日SQL打卡】​​​​​​​​​​​​​​​DAY 27丨每次访问的交易次数【难度困难-提前放出来】​
【每日SQL打卡】​​​​​​​​​​​​​​​DAY 27丨每次访问的交易次数【难度困难-提前放出来】​