在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建立的兩種方式