2017-09-01 150 views
1

的Oracle 11.2.0.4如何在Oracle中壓縮XML(CLOB數據)?

我想通過java類的方法來壓縮XML(XMLTYPE dbfield)HREF這裏: LOB compression

全班同學被成功編譯。

SELECT OBJECT_NAME, 
     OBJECT_TYPE 
    FROM DBA_OBJECTS 
    WHERE OBJECT_NAME LIKE '%LobCompress%' 
    ORDER BY 1; 
------------------- 

OBJECT_NAME OBJECT_TYPE 
LobCompressor JAVA CLASS 
LobCompressor JAVA SOURCE 

但在調用此方法時,將出現在RT錯誤:

DECLARE 
dr MY_USER.ORDER_CONFIG%ROWTYPE; 
bZipped BLOB; 
... 
SELECT * INTO dr 
      FROM MY_USER.ORDER_CONFIG oc 
      WHERE oc.ORDER_NO = '3751017'; 


bZipped := MY_USER.PKG_COMPRESSOR.CLOB_COMPRESS(dr.CONFIG_XML); 

ORA-29540:類LobCompressor不存在ORA-06512:在 「MY_USER.PKG_COMPRESSOR」,第10行ORA -06512:在 「MY_USER.PKG_COMPRESSOR」,第39行ORA-06512:在第13行

dr.CONFIG_XML具有不爲空/不爲空值

我需要爲正確的腳本工作做些什麼?這是我第一次,我想使用java類在PL SQL

+0

您的用戶是否有LobCompres類的特權。在'all_dba_objects'中檢查這個類。 在plsql中添加java發佈的代碼的一部分。 'PKG_COMPRESSOR.CLOB_COMPRESS'。或者按照@Wernfried Domscheit的建議 –

回答

1

PS我覺得時下壓縮XMLTYPE最有用的方法和/或LOB是要在表空間級壓縮。

當您創建XMLTYPE或任何LOB的列時,您必須指定LOB_storage_clause。壓縮存儲這些對象的整個表空間。

XMLType_storage參見:

在早期版本中,二進制XML數據被默認存儲在 BasicFiles LOB。從Oracle數據庫11g第2版 (11.2.0.2)開始,如果COMPATIBLE初始化參數的值高出11.2或 ,並且未指定BASICFILE或SECUREFILE,則儘可能將二進制XML 數據存儲在SecureFiles LOB中。如果SecureFiles LOB存儲不可行,則二進制XML數據存儲在 BasicFiles LOB中。

SecureFiles提供壓縮,重複數據刪除和加密。