理解SharedPool2(五)

2015-02-02 13:30:23 · 作者: · 浏览: 118
y what defects are potential to hit:

Reason Code Bug Description Confirmed Affected Versions Fixed Support Article
BIND_MISMATCH Bug:5705795 MANY CHILD CURSORS CREATED FOR HIGH WORKLOAD IN 10.2.0.3 10.2.0.3

10.2.0.4

11.1.0.7

Note:416727.1
PQ_SLAVE_MISMATCH Bug:6981690 Cursor not shared when running PX query on mounted RAC system

10.2.0.3

10.2.0.4

11.1.0.7

10.2.0.4.4 (PSU)

10.2.0.5

11.1.0.7.1 (PSU)

11.2.0.1

Note:760777.1
AUTH_CHECK_MISMATCH and LANGUAGE_MISMATCH Bug:7648406 CHILD CURSOR IS NOT SHARED IF SET NLS_LENGTH_SEMANTICS=CHAR.

10.2.0.3

10.2.0.4

11.1.0.7

10.2.0.5

11.1.0.7.4 (PSU)

11.2.0.1

Note:783120.1
USER_BIND_PEEK_MISMATCH Bug:8981059 High Version Count (due to USER_BIND_PEEK_MISMATCH) with bind peeking

10.2.0.4

11.1.0.7

11.2.0.1

11.2.0.1.2 (PSU)

11.2.0.2

12.1

Note:968930.1
AUTH_CHECK_MISMATCH and INSUFF_PRIVS_REM Unpublished Bug:8922013 ORA-00600: INTERNAL ERROR CODE, ARGUMENTS: [17059], [0X93953434]

10.2.0.4

10.2.0.5

? Note:973149.1
PX_MISMATCH

Unpublished

Bug:9226905

STPA - ORA-00600: INTERNAL ERROR CODE, ARGUMENTS: [KKFDPAPRM]

11.1.0.7

11.2.0.1

11.2.0.2 Note:1340558.1
BIND_MISMATCH Bug:9689310 SPORADIC BUNCHES OF ORA-600 [17059]

10.2.0.4

10.2.0.5

11.1.0.7

11.2.0.1

11.1.0.7.7 (PSU)

11.2.0.2

12.1

Note:9689310.8
INST_DRTLD_MISMATCH Bug:10151017 MERGE STATEMENT NOT BEING SHARED UNDER SPECIFIC CIRCUMSTANCES

11.1.0.7

11.2.0.1

11.2.0.2

11.2.0.2.1 (PSU)

11.2.0.3

12.1

Note:1365227.1
AUTH_CHECK_MISMATCH Bug:12320556 HIGH VERSION COUNTS OCCUR DUE TO AUTH_CHECK_MISMATCH, INSUFF_PRIVS_REM=Y

11.1.0.7

11.2.0.2

12.1 Note:12320556.8

Data Blocks包含SQL语句、执行计划、执行文本等信息,Oracle通过地址指向存储这些信息的Heap和Chunk.Heap 6存储着SQL的执行计划.从Oracle 10.2.0.4开始,可以用dbms_shared_pool.purge包清理出处在Heap 6中的执行计划.
dbms_shared_pool.purge用法: 首先我们在SCOTT和TOM用户都创建T表 scott@PROD>desc t
Name Null? Type
----------------------------------------------------- -------- ------------------------------------
OBJ_ID NUMBER
OBJ_NAME VARCHAR2(128)
OWNER VARCHAR2(29)
tom@PROD>desc t
Name Null? Type
----------------------------------------------------- -------- ------------------------------------
NAME VARCHAR2(10)
ID NUMBER

两个用户都执行查询'select * from t’
sys@PROD>select address,hash_value,executions,parse_calls,child_number,child_address from v$sql where sql_text like 'select * from t';

ADDRESS HASH_VALUE EXECUTIONS PARSE_CALLS CHILD_NUMBER CHILD_AD
-------- ---------- ---------- ----------- ------------ --------
4E251A00 1134051363 2 2 0 4E251924
4E251A00 1134051363 2 2 1 4E1033B0
使用dbms_shared_pool.purge包前先开启event 5614566

SQL> alter session set events '5614566 trace name context forever';
sys@PROD>exec dbms_shared_pool.purge('4E251A00,1134051363','C');

PL/SQL procedure successfully completed.

sys@PROD>select address,hash_value,executions,parse_calls,child_number,child_address from v$sql where sql_text like 'select * from t';

no rows selected
我们还可以对语句中的对象做个ddl操作也会把该执行计划踢出共享池.由于DDL语句,ORACLE认为该执行计划已废弃