查看有绑定变量的SQL的绑定变量值

更新时间:2019-01-09 13:48:39 点击次数:1369次
设置一个绑定变量,执行SQL,查看执行计划

SQL> var a varchar2(10);
SQL> exec :a:='TAB$';

PL/SQL procedure successfully completed.

SQL> select owner from dba_objects where object_name =:a;

OWNER
------------------------------
SYS

SQL> select * from table(dbms_xplan.display_cursor(null,null,'ALLSTATS'));

PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SQL_ID  dj138p4rmg730, child number 0
-------------------------------------
select owner from dba_objects where object_name =:a

Plan hash value: 300169427

--------------------------------------------------------------------------------------------------------------------------------------
| Id  | Operation                         | Name        | Starts | E-Rows | A-Rows |   A-Time   | Buffers |  OMem |  1Mem |  O/1/M   |
--------------------------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                  |             |      1 |        |      1 |00:00:00.01 |      36 |       |       |          |
|   1 |  VIEW                             | DBA_OBJECTS |      1 |      3 |      1 |00:00:00.01 |      36 |       |       |          |
|   2 |   UNION-ALL                       |             |      1 |        |      1 |00:00:00.01 |      36 |       |       |          |
|*  3 |    FILTER                         |             |      1 |        |      1 |00:00:00.01 |      35 |       |       |          |
|*  4 |     FILTER                        |             |      1 |        |      1 |00:00:00.01 |      35 |       |       |          |
|   5 |      NESTED LOOPS                 |             |      1 |      2 |      1 |00:00:00.01 |      35 |       |       |          |
|*  6 |       HASH JOIN                   |             |      1 |      2 |      1 |00:00:00.01 |      32 |  1393K|  1393K|     1/0/0|
|*  7 |        TABLE ACCESS BY INDEX ROWID| OBJ$        |      1 |      2 |      1 |00:00:00.01 |      30 |       |       |          |
|*  8 |         INDEX SKIP SCAN           | I_OBJ2      |      1 |      2 |      1 |00:00:00.01 |      29 |       |       |          |
|   9 |        INDEX FULL SCAN            | I_USER2     |      1 |     89 |     90 |00:00:00.01 |       2 |       |       |          |
|  10 |       TABLE ACCESS CLUSTER        | USER$       |      1 |      1 |      1 |00:00:00.01 |       3 |       |       |          |
|* 11 |        INDEX UNIQUE SCAN          | I_USER#     |      1 |      1 |      1 |00:00:00.01 |       1 |       |       |          |
|  12 |     NESTED LOOPS                  |             |      0 |      1 |      0 |00:00:00.01 |       0 |       |       |          |
|* 13 |      INDEX SKIP SCAN              | I_USER2     |      0 |      1 |      0 |00:00:00.01 |       0 |       |       |          |
|* 14 |      INDEX RANGE SCAN             | I_OBJ4      |      0 |      1 |      0 |00:00:00.01 |       0 |       |       |          |
|  15 |    NESTED LOOPS                   |             |      1 |      1 |      0 |00:00:00.01 |       1 |       |       |          |
|* 16 |     INDEX SKIP SCAN               | I_LINK1     |      1 |      1 |      0 |00:00:00.01 |       1 |       |       |          |
|  17 |     TABLE ACCESS CLUSTER          | USER$       |      0 |      1 |      0 |00:00:00.01 |       0 |       |       |          |
|* 18 |      INDEX UNIQUE SCAN            | I_USER#     |      0 |      1 |      0 |00:00:00.01 |       0 |       |       |          |
--------------------------------------------------------------------------------------------------------------------------------------

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

   3 - filter((("O"."TYPE#"<>4 AND "O"."TYPE#"<>5 AND "O"."TYPE#"<>7 AND "O"."TYPE#"<>8 AND "O"."TYPE#"<>9 AND
              "O"."TYPE#"<>11 AND "O"."TYPE#"<>12 AND "O"."TYPE#"<>13 AND "O"."TYPE#"<>14 AND "O"."TYPE#"<>22 AND "O"."TYPE#"<>87 AND
              "O"."TYPE#"<>88) OR BITAND("U"."SPARE1",16)=0 OR (INTERNAL_FUNCTION("O"."TYPE#") AND
              ((SYS_CONTEXT('userenv','current_edition_name')='ORA$BASE' AND "U"."TYPE#"<>2) OR ("U"."TYPE#"=2 AND
              "U"."SPARE2"=TO_NUMBER(SYS_CONTEXT('userenv','current_edition_id'))) OR  IS NOT NULL))))
   4 - filter((:A<>'_default_auditing_options_' AND :A<>'_NEXT_OBJECT'))
   6 - access("O"."OWNER#"="U"."USER#")
   7 - filter(BITAND("O"."FLAGS",128)=0)
   8 - access("O"."NAME"=:A AND "O"."LINKNAME" IS NULL)
       filter(("O"."NAME"=:A AND "O"."TYPE#"<>10 AND "O"."NAME"<>'_NEXT_OBJECT' AND "O"."NAME"<>'_default_auditing_options_'
              AND "O"."LINKNAME" IS NULL))
  11 - access("O"."SPARE3"="U"."USER#")
  13 - access("U2"."TYPE#"=2 AND "U2"."SPARE2"=TO_NUMBER(SYS_CONTEXT('userenv','current_edition_id')))
       filter(("U2"."TYPE#"=2 AND "U2"."SPARE2"=TO_NUMBER(SYS_CONTEXT('userenv','current_edition_id'))))
  14 - access("O2"."DATAOBJ#"=:B1 AND "O2"."TYPE#"=88 AND "O2"."OWNER#"="U2"."USER#")
  16 - access("L"."NAME"=:A)
       filter("L"."NAME"=:A)
  18 - access("L"."OWNER#"="U"."USER#")


52 rows selected.

SQL> 

 

查看绑定变量值,并查看执行计划

SQL> select * from table(dbms_xplan.display_cursor('dj138p4rmg730',format=>'PEEKED_BINDS'));

PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SQL_ID  dj138p4rmg730, child number 0
-------------------------------------
select owner from dba_objects where object_name =:a

Plan hash value: 300169427

-------------------------------------------------------------------------------------------------
| Id  | Operation                         | Name        | Rows  | Bytes | Cost (%CPU)| Time     |
-------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                  |             |       |       |    33 (100)|          |
|   1 |  VIEW                             | DBA_OBJECTS |     3 |   249 |    33   (0)| 00:00:01 |
|   2 |   UNION-ALL                       |             |       |       |            |          |
|*  3 |    FILTER                         |             |       |       |            |          |
|*  4 |     FILTER                        |             |       |       |            |          |
|   5 |      NESTED LOOPS                 |             |     2 |   248 |    32   (0)| 00:00:01 |
|*  6 |       HASH JOIN                   |             |     2 |   212 |    30   (0)| 00:00:01 |
|*  7 |        TABLE ACCESS BY INDEX ROWID| OBJ$        |     2 |   168 |    29   (0)| 00:00:01 |
|*  8 |         INDEX SKIP SCAN           | I_OBJ2      |     2 |       |    27   (0)| 00:00:01 |
|   9 |        INDEX FULL SCAN            | I_USER2     |    89 |  1958 |     1   (0)| 00:00:01 |
|  10 |       TABLE ACCESS CLUSTER        | USER$       |     1 |    18 |     1   (0)| 00:00:01 |
|* 11 |        INDEX UNIQUE SCAN          | I_USER#     |     1 |       |     0   (0)|          |
|  12 |     NESTED LOOPS                  |             |     1 |    29 |     2   (0)| 00:00:01 |
|* 13 |      INDEX SKIP SCAN              | I_USER2     |     1 |    20 |     1   (0)| 00:00:01 |
|* 14 |      INDEX RANGE SCAN             | I_OBJ4      |     1 |     9 |     1   (0)| 00:00:01 |
|  15 |    NESTED LOOPS                   |             |     1 |    97 |     1   (0)| 00:00:01 |
|* 16 |     INDEX SKIP SCAN               | I_LINK1     |     1 |    79 |     1   (0)| 00:00:01 |
|  17 |     TABLE ACCESS CLUSTER          | USER$       |     1 |    18 |     0   (0)|          |
|* 18 |      INDEX UNIQUE SCAN            | I_USER#     |     1 |       |     0   (0)|          |
-------------------------------------------------------------------------------------------------

Peeked Binds (identified by position):
--------------------------------------

   1 - :A (VARCHAR2(30), CSID=852): 'TAB$'

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

   3 - filter((("O"."TYPE#"<>4 AND "O"."TYPE#"<>5 AND "O"."TYPE#"<>7 AND "O"."TYPE#"<>8
              AND "O"."TYPE#"<>9 AND "O"."TYPE#"<>11 AND "O"."TYPE#"<>12 AND "O"."TYPE#"<>13 AND
              "O"."TYPE#"<>14 AND "O"."TYPE#"<>22 AND "O"."TYPE#"<>87 AND "O"."TYPE#"<>88) OR
              BITAND("U"."SPARE1",16)=0 OR (INTERNAL_FUNCTION("O"."TYPE#") AND
              ((SYS_CONTEXT('userenv','current_edition_name')='ORA$BASE' AND "U"."TYPE#"<>2) OR
              ("U"."TYPE#"=2 AND "U"."SPARE2"=TO_NUMBER(SYS_CONTEXT('userenv','current_edition_id')))
              OR  IS NOT NULL))))
   4 - filter((:A<>'_default_auditing_options_' AND :A<>'_NEXT_OBJECT'))
   6 - access("O"."OWNER#"="U"."USER#")
   7 - filter(BITAND("O"."FLAGS",128)=0)
   8 - access("O"."NAME"=:A AND "O"."LINKNAME" IS NULL)
       filter(("O"."NAME"=:A AND "O"."TYPE#"<>10 AND "O"."NAME"<>'_NEXT_OBJECT' AND
              "O"."NAME"<>'_default_auditing_options_' AND "O"."LINKNAME" IS NULL))
  11 - access("O"."SPARE3"="U"."USER#")
  13 - access("U2"."TYPE#"=2 AND "U2"."SPARE2"=TO_NUMBER(SYS_CONTEXT('userenv','current_e
              dition_id')))
       filter(("U2"."TYPE#"=2 AND "U2"."SPARE2"=TO_NUMBER(SYS_CONTEXT('userenv','current_
              edition_id'))))
  14 - access("O2"."DATAOBJ#"=:B1 AND "O2"."TYPE#"=88 AND "O2"."OWNER#"="U2"."USER#")
  16 - access("L"."NAME"=:A)
       filter("L"."NAME"=:A)
  18 - access("L"."OWNER#"="U"."USER#")


61 rows selected.

SQL> 

本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是一个个人学习交流的平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽,造成漏登,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

回到顶部
嘿,我来帮您!