很多情况都会产生同一sql多版本的问题:
可以通过v$sql_shared_cursor中的列查看不一样的原因。
通过 10053查看更具体的参数。
MOS 296377.1 上有 version_rpt 是一个分析version_count高的利器
下面试下版本高:
SQL> alter system flush shared_pool;
System altered.
SQL> select count(*) from t;
COUNT(*)
----------
2
SQL> select sql_id from v$sql where sql_text ='select count(*) from t';
SQL_ID
-------------
cyzznbykb509s
SQL> select version_count from v$sqlarea where sql_id='cyzznbykb509s';
VERSION_COUNT
-------------
1
SQL> alter session set optimizer_mode=first_rows;
Session altered.
SQL> select count(*) from t;
COUNT(*)
----------
2
SQL> select version_count from v$sqlarea where sql_id='cyzznbykb509s';
VERSION_COUNT
-------------
2
SQL> alter session set sql_trace=true;
Session altered.
SQL> select count(*) from t;
COUNT(*)
----------
2
SQL> select version_count from v$sqlarea where sql_id='cyzznbykb509s';
VERSION_COUNT
-------------
3
SQL> show parameter pga_a
NAME_COL_PLUS_SHOW_PARAM
------------------------------------------------------------------------------
TYPE
-----------
VALUE_COL_PLUS_SHOW_PARAM
------------------------------------------------------------------------------
pga_aggregate_target
big integer
110M
SQL> alter system set pga_aggregate_target=100m;
System altered.
SQL> select count(*) from t;
COUNT(*)
----------
2
SQL> select version_count from v$sqlarea where sql_id='cyzznbykb509s';
VERSION_COUNT
-------------
4
by song
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/25099483/viewspace-772355/
,如需转载,请注明出处,否则将追究法律责任。