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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle建立dblink報錯:ORA-01017、ORA-02063解決Oracle
- 【YashanDB知識庫】oracle dblink varchar型別查詢報錯記錄Oracle型別
- 關於Oracle的BLOB和CLOBOracle
- Oracle dblink監聽問題Oracle
- 配置Oracle DBlink連線MySQL庫OracleMySql
- oracle dg報錯Oracle
- ORACLE dblink遠端DB表truncat導致本地proc執行報錯ORA-12012&ORA-06550&PLS-00907Oracle
- oracle dblink用法總結和expdp和impdp利用dblink倒入匯出到本地Oracle
- 檢視執行計劃出現ORA-22992錯誤
- Oracle TNS報錯大全Oracle
- 【解決方案】Oracle插入/更新CLOB欄位報ORA-01704:字串文字太長Oracle字串
- Oracle優化案例-select中to_clob對效能的影響(二十一)Oracle優化
- 達夢7異構(DM-Oracle) DBLINKOracle
- oracle 報大小寫錯誤Oracle
- Oracle報錯ORA-27127Oracle
- oracle 19c dg搭建duplicate過程中報錯Oracle
- Oracle19c dblink連結mysql8.0OracleMySql
- Oracle儲存過程中呼叫DBLink同義詞出現錯誤:PLS-00201: 必須宣告識別符號Oracle儲存過程符號
- 封神臺Oracle注入- 報錯注入Oracle
- Oracle DBLink bug引發的故障(Session Hang Memory leak)OracleSession
- Can GoldenGate Replicate An Oracle Table That Contains Only CLOB Column(s)? (Doc ID 971833.1)GoOracleAI
- windows oracle 11201打補丁報錯WindowsOracle
- 靜默安裝oracle時報錯Oracle
- 如何檢視ORACLE的LOB(BLOB和CLOB)物件佔用的大小Oracle物件
- 【SQL】Oracle建立CLOB型別上傳下載讀取檔案SQLOracle型別
- Oracle資料庫連結(DBLink)中如何訪問包含BLOB欄位的資料Oracle資料庫
- [Oracle-> MySQL] Oracle通過dblink連線MySQL--Oracle 19c連線到MySQL 5.7OracleMySql
- Oracle 11.2.0.3.0中執行awrrpt.sql生成awr報告報ora-06502錯誤OracleSQL
- Java 中 CLOB 和字串之間的轉換Java字串
- Oracle dataguard報錯:Error 1017 received logging on to the standbyOracleError
- Oracle DBLink連線數過多的問題(Ora-02020)Oracle
- 建立dblink
- ORACLE RAC中連線ScanIP報錯ORA-12545的問題解決Oracle
- oracle匯入TYPE物件報錯ORA-02304Oracle物件
- Oracle11g生成手動的快照報告報錯Oracle
- sql中select列有自定義函式 dblinkSQL函式
- powerbuildr中如何使用dblink連線的表UI
- [20180416]clob的插入.txt