Oracle DBLink中CLOB報錯ORA-22992
DBLink 中,對於普通欄位按常規方法查詢即可,但是對於 CLOB 欄位的處理相對比較麻煩, CLOB 為大欄位,通常 VARCHAR 最大隻支援到 4000 字元。在按常規方法查詢時會有以下結果:
SELECT MODE_CODE,TRANSFORM_CHANGE_CONTENT from TABLE@ ,其中 “TRANSFORM_CHANGE_CONTENT” 為 CLOB 欄位,會報 “ORA-22992: cannot use LOB locators selected from remote tables” 的錯誤。
常規的處理方法有以下兩種:
1.
採用臨時表方式實現對
LOB
欄位的選取:
建立一個臨時表
“create global temporary table TMP_TB(
MODE_CODE VARCHAR2(16),
TRANSFORM_CHANGE_CONTENT CLOB
)on commit delete rows;”
,
再執行
“INSERT INTO TMP_TB SELECT MODE_CODE,TRANSFORM_CHANGE_CONTENT from TABLE@ DBLINK;”
後,臨時表中就將對應的資料選取過來了,最後再透過執行
“SELECT * from TMP_TB;”
,即可檢視到結構。
2.
採用將
CLOB
轉換為
VARCHAR
的方式實現:
首先需要用到函式
“dbms_lob.substr( clob_column, for_how_many_bytes, from_which_byte );”
透過建立如下檢視:
CREATE OR REPLACE VIEW DBLINK_V AS
SELECT MODE_CODE, dbms_lob.substr(TRANSFORM_CHANGE_CONTENT,4000,1) TRANSFORM_CHANGE_CONTENT
FROM TABLE
透過執行
“SELECT MODE_CODE,TRANSFORM_CHANGE_CONTENT from DBLINK_V @DBLINK;”
,即可實現檢視到結果
結論,方法 1 中也可以使用普通表,但使用的臨時表效率要高於普通表,這裡不做過多討論;方法 2 中建立檢視的效率要遠高於方法 1 ,時間上看方法 1 大於方法 2 的幾倍左右。
注:本文是多年前留存的,忘記是哪轉載或者測試的了,如有侵權請聯絡我刪除。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26964624/viewspace-2564405/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 表存在Clob、Blob欄位,dblink報錯的解決辦法
- Oracle中Clob型別處理解析Oracle型別
- 【YashanDB知識庫】oracle dblink varchar型別查詢報錯記錄Oracle型別
- oracle DBLink oracleOracle
- ORACLE DBLINKOracle
- Oracle private dblink和pubic dblinkOracle
- Oracle 中LONG RAW BLOB CLOB型別介紹Oracle型別
- linux oracle 建立informix dblink 錯誤解決LinuxOracleORM
- oracle DBLink sqlserverOracleSQLServer
- oracle之DBLINKOracle
- Oracle建立dblink報錯:ORA-01017、ORA-02063解決Oracle
- Oracle Blob 轉換為ClobOracle
- Oracle dblink詳解Oracle
- Oracle建立dblink MySQLOracleMySql
- Oracle dblink介紹Oracle
- oracle dblink問題Oracle
- oracle dg報錯Oracle
- oracle emctl 報錯Oracle
- oracle 8.1.7.4建立dblink出現ora-03113錯誤Oracle
- PLSQL中慎用CLOB型別SQL型別
- Oracle Clob的一致讀Oracle
- java jdbc存取oracle clob型別JavaJDBCOracle型別
- 關於Oracle的BLOB和CLOBOracle
- 檢視執行計劃出現ORA-22992錯誤
- Oracle dblink詳解(轉)Oracle
- 【PL/SQL】oracle建立dblinkSQLOracle
- Oracle TNS報錯大全Oracle
- 連線oracle報錯Oracle
- Oracle dblink比較兩個庫中的表欄位Oracle
- oracle clob欄位去除html標籤OracleHTML
- Oracle 10g Logminer clob bugOracle 10g
- 水煮oracle34----oracle dblink詳解Oracle
- oracle 19c dg搭建duplicate過程中報錯Oracle
- Oracle dblink監聽問題Oracle
- sql中呼叫dblink引發ORA-01017錯誤SQL
- 刪除 Dblink 報錯 ORA-02024: database link not foundDatabase
- oracle 報大小寫錯誤Oracle
- Oracle 10.2.0.5 opatch報錯Oracle