可以通过 DBLink 出列吗?
我正在尝试从另一台服务器上的队列中出队。 我无法使用传播将其发送到需要数据的服务器。 如果我在出队选项中的队列名称中放置 dblink,则会出现错误。
Error at line 9
ORA-25200: invalid value prim_queues.prim_trade_q@prim_dbln, QUEUE_NAME should be [SCHEMA.]NAME
ORA-06512: at "SYS.DBMS_AQ", line 619
ORA-06512: at "PSINET_AQ.AQ_INBOUND_TRADES_PKG", line 20
ORA-06512: at line 10
所以我猜这是不可能的。
相反,我会将 DEQUEUE 放入服务器上带有队列的包中,然后通过链接调用该包。
这是正确的吗?
编辑:
Igor 提到使用动态 SQL,但我将一个包放在带有队列的服务器上。 这也是在同一侧解析的。 那么问题就变成出队的对象仅存在于该队列的服务器上。 即使我们的另一侧有一个相同的。
I'm trying to dequeue from a queue on another server. I can't use propagation to get it to the server that needs the data. If I put a dblink in the name of the queue in the dequeue options I get an error.
Error at line 9
ORA-25200: invalid value prim_queues.prim_trade_q@prim_dbln, QUEUE_NAME should be [SCHEMA.]NAME
ORA-06512: at "SYS.DBMS_AQ", line 619
ORA-06512: at "PSINET_AQ.AQ_INBOUND_TRADES_PKG", line 20
ORA-06512: at line 10
So I'm guessing that's not possible.
Instead I'll put the DEQUEUE in a package on the server WITH the queue and just call that package across the link.
Is this right?
EDIT:
Igor mentions using dynamic SQL but I put a package on the server with the queue. That too is parsed on the same side. The problem then becomes the dequeued object exists only on that queue's server. Even if we have an identical one on the opposite side.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以使用 DB Link 为动态 SQL(或匿名 PL/SQL 块)调用 DBMS_SQL 的远程版本,这意味着语句在远程数据库中解析,但作为“本地”语句。
开始 dbms_sql.parse@dblink(...); 结尾;
You can use a DB Link to call the remote version of DBMS_SQL for dynamic SQL (or anonymous PL/SQL block), which means the statement is parsed at the remote database but as a 'local' statement.
begin dbms_sql.parse@dblink(...); end;