What is OPAQUE_TRANSFORM Hint and how to Control it [ID 780503.1]

zhouwf0726發表於2019-06-14
What is OPAQUE_TRANSFORM. Hint and how to Control it [ID 780503.1]

  修改時間 12-SEP-2010     型別 HOWTO     狀態 PUBLISHED  

In this Document
  Goal
  Solution
  References


Applies to:

Oracle Server - Enterprise Edition - Version: 10.2.0.3 and later   [Release: 10.2 and later ]
Information in this document applies to any platform.
Oracle Server Enterprise Edition - Version: 10.2.0.3

Goal

What is OPAQUE_TRANSFORM. usage :

The OPAQUE_TRANSFORM. hint is to help with the transformation of datatype when certain type of operations are done within the database.  For example object types .
It is also used for a insert-as-remote-select operation on a remote database 

 

Example : insert into emp (select * from emp@rep102b)   ;

call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        1      0.00       0.50          0          0          0           0
Execute      1      0.00       0.51          0          1         44          12
Fetch        0      0.00       0.00          0          0          0           0
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total        2      0.00       1.01          0          1         44          12

Misses in library cache during parse: 0
Optimizer mode: ALL_ROWS
Parsing user id: 57  (SCOTT)

Rows     Row Source Operation
-------  ---------------------------------------------------
     12  REMOTE  EMP (cr=0 pr=0 pw=0 time=508808 us)


Rows     Execution Plan
-------  ---------------------------------------------------
      0  INSERT STATEMENT   MODE: ALL_ROWS
     12   REMOTE OF 'EMP' (REMOTE) [REP102B]
             SELECT /*+ OPAQUE_TRANSFORM. */ "EMPNO","ENAME","JOB","MGR",
               "HIREDATE","SAL","COMM","DEPTNO" FROM "EMP" "EMP"


Note :  This hint should not interfere with the query optimizer plan.

Solution

The below event can be set on the client (local) in order to turn the opaque_transform. hint on and off..
- To switch on :

alter session set events '22825 trace name context off' ;

- To switch off :

1) alter session set events '22825 trace name context forever, level 1' ;

2)  or using the following hint : /*+ NO_QUERY_TRANSFORMATION */ 
3)  using  RULE hint.

 

-Note that if local site is 11g and remote is  11g server, this opens 2 sessions
   on the remote database and OPAQUE_TRANSFORM. hint gives DX LOCK deadlock.

- If  the local is 10g client and remote is 11g server, this opens 1 session on
   the remote and no DX deadlock.

References

BUG:5565178 - ORA-07445 [EVAOPN2()+220] ON SELECT WITH HINT
BUG:7417255 - /*+ OPAQUE_TRANSFORM. */ HINT BEING REWRITTEN INTO QUERY AND CAUSING SLOWNESS

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/756652/viewspace-710962/,如需轉載,請註明出處,否則將追究法律責任。

相關文章