是否有可能在具有不同NLS_LENGTH_SEMANTICS的两个数据库之间传播AQ消息,即本地数据库具有字节(nls_database_parameters视图)和远程数据库具有CHAR(nls_database_parameters视图),如果是,那么如何传播?我已经尝试过将会话NLS_LENGTH_SEMANTICS参数值设置为BYTE,然后重新创建远程数据库AQ OBJECT_TYPE,用字节重写对象类型属性声明,在本地数据库中创建OID类型,并在传播中使用转换,但是它没有成功,仍然是
"ORA-25215: user_data类型和队列类型不匹配“
在传播时。
这是我在AQ表中使用的对象类型:
create or replace type obj_sepa_msg as object
(
client varchar2(50),
cartridge varchar2(20),
iban varchar2(34),
file_name varchar2(4000),
data clob
)发布于 2016-12-09 08:41:40
可以在具有不同NLS_LENGTH_SEMANTICS的数据库之间传播,但只有系统变量的有效载荷,如sys.xmltype或sys.number。但是,如果使用的是11.2.0.3或更低版本的数据库,则不能将它们放入object type中。如果您需要对象类型,您可以这样做。当传播到远程数据库时,将转换添加到订阅服务器,以便在传播之前将object type转换为sys.xmltype,请注意,仍然需要指定有效负载为sys.xmltype。然后,在远程数据库中查询消息时,可以在dbms_aq.message_properties_t type中指定转换,将sys.xmltype转换为所需的有效负载。
https://stackoverflow.com/questions/39252825
复制相似问题