我有三个数据库 M,O,S 。
M 有两个DBLINK到 O 和 S 。
我可以选择 O 连接到 M ,如下所示:
SELECT * FROM TBL1@O_DBLINK;
并在连接到 M 时选择 S ,如下所示:
SELECT * FROM TBL2@S_DBLINK;
但是当我尝试在单个脚本中从两个DBLINK中选择时:
DECLARE
a number;
b number;
BEGIN
SELECT colA into a FROM TBL1@O_DBLINK;
SELECT colB into b FROM TBL2@S_DBLINK;
END;
它返回以下错误:
ORA-04052: error occurred when looking up remote object S.TBLB@S_DBLINK
ORA-00604: error occurred at recursive SQL level 1
ORA-16000: database open for read-only access
非常奇怪的是,当我更改选择顺序时,后者总是返回错误:
DECLARE
a number;
b number;
BEGIN
SELECT colB into b FROM TBL2@S_DBLINK;
SELECT colA into a FROM TBL1@O_DBLINK;
END;
ORA-04052: error occurred when looking up remote object O.TBLA@O_DBLINK
ORA-00604: error occurred at recursive SQL level 1
ORA-16000: database open for read-only access
答案 0 :(得分:0)
请尝试这种方法,
在数据库M中创建table1,并在剩余的数据库O和S中创建同一个表(table1)的SYNONYM。
现在你可以做所有的操作了。
例如:
create table table1 (col1); -- database M
create public synonym table1 for table1; -- database O & S
然后现在您可以使用DB_Link访问该表,并且数据也会反映到所有数据库。
的链接