如何在Oracle中压缩XML(CLOB数据)?

时间:2017-09-01 06:56:24

标签: java oracle plsql compression clob

Oracle 11.2.0.4

我尝试通过java类方法href压缩XML(XMLTYPE dbfield): 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:at   “MY_USER.PKG_COMPRESSOR”,第10行ORA-06512:at   “MY_USER.PKG_COMPRESSOR”,第39行ORA-06512:第13行

dr.CONFIG_XML没有空/非空值

正确的脚本工作需要做些什么?

PS这是我第一次尝试在pl sql中使用java类

1 个答案:

答案 0 :(得分:1)

我认为现在压缩XMLTYPE和/或LOB最有用的方法是在表空间级别进行压缩。

创建XMLTYPE或任何LOB的列时,您必须指定LOB_storage_clause。压缩存储此类对象的整个表空间。

另见XMLType_storage

  

在早期版本中,二进制XML数据默认存储在a中   BasicFiles LOB。从Oracle Database 11g第2版开始   (11.2.0.2),如果COMPATIBLE初始化参数是11.2或   更高,您不指定BASICFILE或SECUREFILE,然后指定二进制XML   数据尽可能存储在SecureFiles LOB中。如果是SecureFiles   LOB存储是不可能的,然后二进制XML数据存储在一个   BasicFiles LOB。

SecureFiles提供压缩,重复数据删除和加密。