您无法轻松地通过所有数据库链接访问所有列;您可以通过查询远程数据库上的 ALL_TAB_COLUMNS 来获取通过一个数据库链接可访问的所有列
select * from all_tab_columns@<remote_server>
<remote_server>
在您的示例中将在哪里ffgh
。
如果您想为当前模式中的所有数据库链接获取相同的信息,则必须手动枚举它们并将结果联合起来:
select * from all_tab_columns@dblink1
union all
select * from all_tab_columns@dblink2
或者,动态地做一些事情。
正如贾斯汀所说,如果您添加数据来自哪个数据库会更清楚;您可以通过在查询中编写它来做到这一点:
select 'dblink1' as dblink, a.* from all_tab_columns@dblink1 a
union all
select 'dblink2', a.* from all_tab_columns@dblink2 a
或者通过使用 Oracle 内置工作,例如GLOBAL_NAME表(还有更多方法):
select db1g.global_name, db1a.*
from all_tab_columns@dblink1 db1a
cross join global_name@dblink1 db1g
union all
select db2g.global_name, db2a.*
from all_tab_columns@dblink2 db2a
cross join global_name@dblink2 db2g