`
womendu
  • 浏览: 1513608 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

DBMS_XPLAN.DISPLAY_CURSOR v$sql bind-data

 
阅读更多

看了白鳝的一片关于v$sql 中bind_data的测试,俺也学习了一下
SQL> select * from v$version where rownum<2;


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

SQL> alter system flush shared_pool;


System altered.


SQL> var v1 varchar2(2);
SQL> exec :v1:='a';


PL/SQL procedure successfully completed.


SQL> select * from test11 where id=:v1;


ID ID1
-- ----------
ID3
---------------------------------------------------------------------------
a 1
11-APR-12 06.34.53.000000 PM




SQL> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(NULL, NULL, 'ADVANCED'));


PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
SQL_ID 9g1kvnud8041t, child number 0
-------------------------------------
select * from test11 where id=:v1


Plan hash value: 1550834917


----------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
----------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | | | 2 (100)| |
|* 1 | TABLE ACCESS FULL| TEST11 | 1 | 29 | 2 (0)| 00:00:01 |


PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
----------------------------------------------------------------------------


Query Block Name / Object Alias (identified by operation id):
-------------------------------------------------------------


1 - SEL$1 / TEST11@SEL$1


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


/*+


PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
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$1")
FULL(@"SEL$1" "TEST11"@"SEL$1")
END_OUTLINE_DATA
*/


Peeked Binds (identified by position):


PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
--------------------------------------


1 - :V1 (VARCHAR2(30), CSID=852): 'a'--------初次绑定的值


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


1 - filter("ID"=:V1)


Column Projection Information (identified by operation id):
-----------------------------------------------------------


PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------


1 - "ID"[VARCHAR2,2], "TEST11"."ID1"[NUMBER,22],
"TEST11"."ID3"[TIMESTAMP,11]


Note
-----
- dynamic sampling used for this statement (level=2)




52 rows selected.


SQL> select dbms_sqltune.extract_binds(bind_data) bind from v$sql WHERE SQL_TEXT LIKE '%FROM TEST11%';


BIND(NAME, POSITION, DUP_POSITION, DATATYPE, DATATYPE_STRING, CHARACTER_SID, PRE
--------------------------------------------------------------------------------
SQL_BIND_SET()


SQL> select dbms_sqltune.extract_binds(bind_data) bind from v$sql WHERE SQL_TEXT LIKE '%from test11%';


BIND(NAME, POSITION, DUP_POSITION, DATATYPE, DATATYPE_STRING, CHARACTER_SID, PRE
--------------------------------------------------------------------------------
SQL_BIND_SET(SQL_BIND(NULL, 1, NULL, 1, 'VARCHAR2(32)', 852, NULL, NULL, 32, '11
-APR-12', 'a', ANYDATA()))


SQL_BIND_SET()
SQL_BIND_SET()


SQL> exec :v1:='aa';


PL/SQL procedure successfully completed.


SQL> select * from test11 where id=:v1;


ID ID1
-- ----------
ID3
---------------------------------------------------------------------------
aa 12
12-APR-01 12.00.00.000000 AM




SQL> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(NULL, NULL, 'ADVANCED'));


PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
SQL_ID gq117a08wfuy0, child number 0
-------------------------------------
select * from test11 where id=:v1


Plan hash value: 1550834917


----------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
----------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | | | 2 (100)| |
|* 1 | TABLE ACCESS FULL| TEST11 | 1 | 29 | 2 (0)| 00:00:01 |


PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
----------------------------------------------------------------------------


Query Block Name / Object Alias (identified by operation id):
-------------------------------------------------------------


1 - SEL$1 / TEST11@SEL$1


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


/*+


PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
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$1")
FULL(@"SEL$1" "TEST11"@"SEL$1")
END_OUTLINE_DATA
*/


Peeked Binds (identified by position):


PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
--------------------------------------


1 - :V1 (VARCHAR2(30), CSID=852): 'aa'------------------最近一次绑定的值


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


1 - filter("ID"=:V1)


Column Projection Information (identified by operation id):
-----------------------------------------------------------


PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------


1 - "ID"[VARCHAR2,2], "TEST11"."ID1"[NUMBER,22],
"TEST11"."ID3"[TIMESTAMP,11]


Note
-----
- dynamic sampling used for this statement (level=2)




52 rows selected.


SQL> select dbms_sqltune.extract_binds(bind_data) bind from v$sql WHERE SQL_TEXT LIKE '%from test11%';


BIND(NAME, POSITION, DUP_POSITION, DATATYPE, DATATYPE_STRING, CHARACTER_SID, PRE
--------------------------------------------------------------------------------
SQL_BIND_SET(SQL_BIND(NULL, 1, NULL, 1, 'VARCHAR2(32)', 852, NULL, NULL, 32, '11
-APR-12', 'a', ANYDATA()))


SQL_BIND_SET()
SQL_BIND_SET(SQL_BIND(NULL, 1, NULL, 1, 'VARCHAR2(32)', 852, NULL, NULL, 32, '11
-APR-12', 'aa', ANYDATA()))


SQL_BIND_SET()

把最近几次的值全列出来
结果是跟白鳝的是不一样的,可能是版本不通造成的

分享到:
评论

相关推荐

    Re-post: DBMS_XPLAN : Display Oracle Execution Plans

    3. `xplan.display_cursor.sql` - 这个文件可能用于显示共享游标(也称为SQL语句的软解析结果)的执行计划,有助于了解当前会话中的SQL性能。 4. `xplan.display.sql` - 这可能是通用的DBMS_XPLAN显示函数的调用...

    DBMS_STATS.GATHER_TABLE_STATS详解.pdf

    ### DBMS_STATS.GATHER_TABLE_STATS详解 #### 一、概述 `DBMS_STATS.GATHER_TABLE_STATS` 是 Oracle 数据库中的一个重要过程,主要用于收集表、列和索引的统计信息,这些统计信息对于优化器选择合适的执行计划至关...

    DBMS_RANDOM.VALUE OR DBMS_RANDOM.STRING

    在Oracle数据库系统中,`DBMS_RANDOM`是一个非常实用的包,它提供了生成随机数和随机字符串的功能。这个包在各种场景下都有广泛的应用,比如在测试数据的生成、模拟随机行为或者创建伪随机数据时。我们将深入探讨`...

    Oracle中使用DBMS_XPLAN处理执行计划详解

    DBMS_XPLAN是Oracle提供的一个用于查看SQL计划,包括执行计划和解释计划的包;在以前查看SQL执行计划的时候,我都是使用set autotrace命令,不过现在看来,DBMS_XPLAN包给出了更加简化的获取和显示计划的方式。 这5...

    DBMS_SQL.rar_dbms_oracle

    DBMS_SQL.BIND_VARIABLE(v_cursor, ':1', v_employee_id); DBMS_SQL.EXECUTE(v_cursor); DBMS_SQL.DESCRIPTION_COLUMNS(v_cursor, v_column_count); -- 处理结果集... WHILE DBMS_SQL.FETCH_ROWS(v_cursor) ...

    使用dbms_stats包手工收集统计信息

    Oracle 数据库中使用 dbms_stats 包手动收集统计信息 在 Oracle 数据库中,dbms_stats 包提供了一种手动收集统计信息的方式,包括基于表、用户和索引的统计信息。通过使用 dbms_stats 包,我们可以手动收集统计信息...

    oracle dbms_lob

    Oracle数据库系统中,`DBMS_LOB`是一个重要的PL/SQL包,专门用于处理大型对象(LOBs,Large Object)。LOBs是Oracle提供的一种数据类型,用于存储大量数据,如文本、图像、音频或视频文件等。这个包包含了各种过程和...

    DBMS_SQL的使用

    dbms_sql.bind_variable(cursor_name, 'no', no); -- 绑定变量 dbms_sql.define_column(cursor_name, 2, v_b); -- 定义列 row_process := dbms_sql.EXECUTE(cursor_name); LOOP IF dbms_sql.fetch_rows...

    [Oracle] dbms_metadata.get_ddl 的使用方法总结

    Oracle数据库中的`dbms_metadata.get_ddl`是一个非常实用的包,它允许开发人员和管理员获取数据库对象的创建语句(DDL),这对于备份和恢复、迁移或者理解对象定义非常有帮助。下面我们将深入探讨`dbms_metadata.get...

    Oracle 18c bug 执行 DBMS_PDB.CHECK_PLUG_COMPATIBILITY报错_ITPUB博客.mhtml

    Oracle 18c bug 执行 DBMS_PDB.CHECK_PLUG_COMPATIBILITY报错_ITPUB博客.mhtml

    怎样禁用及回收java的授权dbms_java

    ### 如何禁用及回收Java的授权:dbms_java 授权管理详解 #### 一、引言 在Oracle数据库环境中,`dbms_java`包提供了一系列功能强大的工具,用于管理和控制Java应用程序的安全性。这对于那些在Oracle环境中部署了...

    oracle_V$SQLAREA_.rar_oracle_oracle V$sqlarea

    2. **执行计划**:`SQL_PLAN` 列提供了SQL语句的执行计划,但通常是以16进制格式存储,需要通过其他方式(如DBMS_XPLAN)进行解码查看。 3. **解析次数**:`PARSING_USER_ID` 和 `PARSING_SCHEMA_ID` 分别记录了SQL...

    动态sql语句动态处理输出列数

    --dbms_sql.bind_variable(l_cursor,':ename',l_ename); --5.执行 l_retval := dbms_sql.execute(l_cursor); --6.取数 --6.1取列名 for i in 1..l_colcnt loop dbms_output.put(l_col_tab(i).col_name); dbms_...

    DBA笔试题.wps

    这篇文档整合了热门的oracle DBA面试问题 一. SQL tuning 类  1:列举几种表连接方式  hash join/merge join/nest loop(cluster ... SQL&gt;SELECT plan_table_output FROM TABLE(DBMS_XPLAN.DISPLAY('PLAN_TABLE'));

    Oracle动态执行SQL四种方式的例子

    使用`DBMS_SQL.OPEN_CURSOR`打开一个游标,然后通过`DBMS_SQL.PARSE`解析SQL语句,并用`DBMS_SQL.BIND_VARIABLE`绑定变量,最后调用`DBMS_SQL.EXECUTE`执行删除操作。 #### 示例2:执行DDL语句 ```sql CREATE OR ...

    dbms_comp_advisor.getratio 预估压缩比例的存储过程脚本

    本文将详细讲解"dbms_comp_advisor.getratio"存储过程,它是Oracle数据库用来预估数据压缩比例的工具,尤其在11gR2版本之前广泛使用。在11gR2之后,Oracle引入了内置的功能来替代这个过程,但理解其工作原理对于理解...

    PostgreSQL_DBMS_for_Windows_922_136133.exe

    支持ArcGIS10.2版本的PostgreSQL_DBMS_for_windows_922,ESRI官方原版资源。

    调整数据库时区版本脚本DBMS_DST_scriptsV1.9.zip

    亲测有效 通过此版本可以把oracle时区版本调整到为最新版本,一般配合时区补丁使用 可以参考...脚本里有说明 先运行upg_tzv_check.sql再运行upg_tzv_apply.sql

    获取SQL语句的执行计划v1

    本文档详细介绍了几种不同的方法来获取SQL语句的执行计划,包括使用autotrace、EXPLAIN PLAN以及DBMS_XPLAN.DISPLAY_CURSOR等。 #### 方法1:使用autotrace查看执行计划 **配置使用autotrace** 为了能够使用...

Global site tag (gtag.js) - Google Analytics