0

是否可以在具有不同的两个数据库之间传播 AQ 消息NLS_LENGTH_SEMANTICS,即 LOCAL 数据库具有 BYTE( nls_database_parametersview) 和 REMOTE 数据库具有 CHAR( nls_database_parametersview),如果可以,那么如何?我已经尝试将会话NLS_LENGTH_SEMANTICS参数值设置为BYTE然后重新创建远程数据库 AQ OBJECT_TYPE,用 BYTE 覆盖对象类型属性声明并在本地数据库中创建 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
)
4

1 回答 1

0

NLS_LENGTH_SEMANTICS可以在具有不同但只有系统变量有效负载的数据库之间传播,例如sys.xmltypesys.numberobject type但是,如果您使用的是 11.2.0.3 或更低版本的数据库,则不能将它们放入其中。如果你需要对象类型,你可以做这样的事情。传播到远程数据库时,向订阅者添加转换,以便在传播之前将您转换object typesys.xmltype,请注意,您仍然需要指定有效负载为sys.xmltype. 然后在远程数据库中对消息进行出队时,您可以指定转换dbms_aq.message_properties_t type,以转换sys.xmltype为所需的有效负载。

于 2016-12-09T08:41:40.437 回答