在AWR报告中经常看到一个hint /*+ OPAQUE_TRANSFORM */,感到莫名其妙。原因是什么引起的呢?如果在数据库B的AWR中看到这种hint,原因是其他数据库通过DB link访问数据库B,且用的是insert into table_name select * from table_name@dblink_name的方式访问。
SQL> explain plan for insert into test select * from REMOTE_SMALL_TAB@DBLINK_TEST;
已解释。
SQL> select * from table(dbms_xplan.display);
PLAN_TABLE_OUTPUT
-----------------------------------------------------------------------------------------------------
Plan hash value: 1788691278
-----------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | Inst |IN-OUT|
-----------------------------------------------------------------------------------------------------
| 0 | INSERT STATEMENT | | 72229 | 6842K| 186 (1)| 00:00:03 | | |
| 1 | REMOTE | REMOTE_SMALL_TAB | 72229 | 6842K| 186 (1)| 00:00:03 | DBLIN~ | R->S |
-----------------------------------------------------------------------------------------------------
Remote SQL Information (identified by operation id):
----------------------------------------------------
1 - SELECT /*+ OPAQUE_TRANSFORM */ "OWNER","OBJECT_NAME","SUBOBJECT_NAME","OBJECT_ID","DAT
A_OBJECT_ID","OBJECT_TYPE","CREATED","LAST_DDL_TIME","TIMESTAMP","STATUS","TEMPORARY","GENERA
TED","SECONDARY","NAMESPACE","EDITION_NAME" FROM "REMOTE_SMALL_TAB" "REMOTE_SMALL_TAB"
(accessing 'DBLINK_TEST.EYGLE.COM' )
已选择17行。
推荐阅读:
利用Oracle DBLink进行表同步
Oracle DBLink使用
Oracle通过DBLink访问GreenPlum
ORA-01017/ORA-02063 DBLink建立错误问题分析及解决
Oracle 创建DBLink 报错:ORA-01017、ORA-02063
Oracle中dblink创建的两种方式