[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;

目录
相关文章
|
SQL 关系型数据库 MySQL
Linux系统部署Yearning SQL审核平台结合内网穿透实现公网访问
Linux系统部署Yearning SQL审核平台结合内网穿透实现公网访问
190 0
|
SQL 安全 关系型数据库
接上篇文章,在测试宝塔 WAF 的未授权访问漏洞时无意间还发现了一个 SQL 注入漏洞
接上篇文章,在测试宝塔 WAF 的未授权访问漏洞时无意间还发现了一个 SQL 注入漏洞,品相还不错,可执行任意 SQL 语句。 总之,吃了一惊,一个防 SQL 注入的工具居然也有 SQL 注入漏洞。 请看这段代码
706 108
|
10月前
|
SQL Oracle 数据库
使用访问指导(SQL Access Advisor)优化数据库业务负载
本文介绍了Oracle的SQL访问指导(SQL Access Advisor)的应用场景及其使用方法。访问指导通过分析给定的工作负载,提供索引、物化视图和分区等方面的优化建议,帮助DBA提升数据库性能。具体步骤包括创建访问指导任务、创建工作负载、连接工作负载至访问指导、设置任务参数、运行访问指导、查看和应用优化建议。访问指导不仅针对单条SQL语句,还能综合考虑多条SQL语句的优化效果,为DBA提供全面的决策支持。
236 11
|
12月前
|
SQL 关系型数据库 BI
使用 Webshell 访问 SQL Server 主机并利用 SSRS
使用 Webshell 访问 SQL Server 主机并利用 SSRS
|
网络协议 NoSQL 网络安全
【Azure 应用服务】由Web App“无法连接数据库”而逐步分析到解析内网地址的办法(SQL和Redis开启private endpoint,只能通过内网访问,无法从公网访问的情况下)
【Azure 应用服务】由Web App“无法连接数据库”而逐步分析到解析内网地址的办法(SQL和Redis开启private endpoint,只能通过内网访问,无法从公网访问的情况下)
195 0
|
SQL 机器学习/深度学习 开发工具
【机器学习 Azure Machine Learning】Azure Machine Learning 访问SQL Server 无法写入问题 (使用微软Python AML Core SDK)
【机器学习 Azure Machine Learning】Azure Machine Learning 访问SQL Server 无法写入问题 (使用微软Python AML Core SDK)
105 0
|
SQL 数据库 Windows
【应用服务 App Service】当使用EntityFrameWorkCore访问Sql Server数据库时,在Azure App Service会出现Cannot create a DbSet for ** because this type is not included in the model for the context的错误
【应用服务 App Service】当使用EntityFrameWorkCore访问Sql Server数据库时,在Azure App Service会出现Cannot create a DbSet for ** because this type is not included in the model for the context的错误
172 0
|
SQL 数据库 C语言
【sqlite的C语言访问接口】执行SQL语句的接口------sqlite3_exec回调函数的使用
【sqlite的C语言访问接口】执行SQL语句的接口------sqlite3_exec回调函数的使用
|
SQL 安全 数据库连接
sql如何访问网络数据库
访问网络数据库(通常指的是不在本地计算机上而是在网络上的数据库服务器)的SQL操作,其实与访问本地数据库在SQL语句的编写上并没有太大差异。主要的区别在于连接的设置和配置,以及如何确保网络连接的安全性
|
SQL 存储 安全
SQL接口如何保护数据库免受未经授权的访问?
【5月更文挑战第21天】SQL接口如何保护数据库免受未经授权的访问?
217 3

热门文章

最新文章