看了白鳝的一片关于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()
把最近几次的值全列出来
结果是跟白鳝的是不一样的,可能是版本不通造成的
分享到:
相关推荐
3. `xplan.display_cursor.sql` - 这个文件可能用于显示共享游标(也称为SQL语句的软解析结果)的执行计划,有助于了解当前会话中的SQL性能。 4. `xplan.display.sql` - 这可能是通用的DBMS_XPLAN显示函数的调用...
### DBMS_STATS.GATHER_TABLE_STATS详解 #### 一、概述 `DBMS_STATS.GATHER_TABLE_STATS` 是 Oracle 数据库中的一个重要过程,主要用于收集表、列和索引的统计信息,这些统计信息对于优化器选择合适的执行计划至关...
在Oracle数据库系统中,`DBMS_RANDOM`是一个非常实用的包,它提供了生成随机数和随机字符串的功能。这个包在各种场景下都有广泛的应用,比如在测试数据的生成、模拟随机行为或者创建伪随机数据时。我们将深入探讨`...
DBMS_XPLAN是Oracle提供的一个用于查看SQL计划,包括执行计划和解释计划的包;在以前查看SQL执行计划的时候,我都是使用set autotrace命令,不过现在看来,DBMS_XPLAN包给出了更加简化的获取和显示计划的方式。 这5...
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) ...
Oracle 数据库中使用 dbms_stats 包手动收集统计信息 在 Oracle 数据库中,dbms_stats 包提供了一种手动收集统计信息的方式,包括基于表、用户和索引的统计信息。通过使用 dbms_stats 包,我们可以手动收集统计信息...
Oracle数据库系统中,`DBMS_LOB`是一个重要的PL/SQL包,专门用于处理大型对象(LOBs,Large Object)。LOBs是Oracle提供的一种数据类型,用于存储大量数据,如文本、图像、音频或视频文件等。这个包包含了各种过程和...
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...
### 如何禁用及回收Java的授权:dbms_java 授权管理详解 #### 一、引言 在Oracle数据库环境中,`dbms_java`包提供了一系列功能强大的工具,用于管理和控制Java应用程序的安全性。这对于那些在Oracle环境中部署了...
Oracle数据库中的`dbms_metadata.get_ddl`是一个非常实用的包,它允许开发人员和管理员获取数据库对象的创建语句(DDL),这对于备份和恢复、迁移或者理解对象定义非常有帮助。下面我们将深入探讨`dbms_metadata.get...
Oracle 18c bug 执行 DBMS_PDB.CHECK_PLUG_COMPATIBILITY报错_ITPUB博客.mhtml
2. **执行计划**:`SQL_PLAN` 列提供了SQL语句的执行计划,但通常是以16进制格式存储,需要通过其他方式(如DBMS_XPLAN)进行解码查看。 3. **解析次数**:`PARSING_USER_ID` 和 `PARSING_SCHEMA_ID` 分别记录了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_...
这篇文档整合了热门的oracle DBA面试问题 一. SQL tuning 类 1:列举几种表连接方式 hash join/merge join/nest loop(cluster ... SQL>SELECT plan_table_output FROM TABLE(DBMS_XPLAN.DISPLAY('PLAN_TABLE'));
使用`DBMS_SQL.OPEN_CURSOR`打开一个游标,然后通过`DBMS_SQL.PARSE`解析SQL语句,并用`DBMS_SQL.BIND_VARIABLE`绑定变量,最后调用`DBMS_SQL.EXECUTE`执行删除操作。 #### 示例2:执行DDL语句 ```sql CREATE OR ...
本文将详细讲解"dbms_comp_advisor.getratio"存储过程,它是Oracle数据库用来预估数据压缩比例的工具,尤其在11gR2版本之前广泛使用。在11gR2之后,Oracle引入了内置的功能来替代这个过程,但理解其工作原理对于理解...
支持ArcGIS10.2版本的PostgreSQL_DBMS_for_windows_922,ESRI官方原版资源。
亲测有效 通过此版本可以把oracle时区版本调整到为最新版本,一般配合时区补丁使用 可以参考...脚本里有说明 先运行upg_tzv_check.sql再运行upg_tzv_apply.sql
本文档详细介绍了几种不同的方法来获取SQL语句的执行计划,包括使用autotrace、EXPLAIN PLAN以及DBMS_XPLAN.DISPLAY_CURSOR等。 #### 方法1:使用autotrace查看执行计划 **配置使用autotrace** 为了能够使用...