0

使用 SQL*Plus 查询多个数据库的方法是什么?

在 MySQL 中,可以这样做:

create table WK_LINK_JOINT_IDEOREQ AS
select k.constraint_name cn, k.table_name tl, l.column_name lc
     , k.referenced_table_name tg, k.column_name cg, l.referenced_table_name td
     , l.referenced_column_name cd
  from information_schema.KEY_COLUMN_USAGE k

这只是一个示例,并不完整:但正如您所见,我们正在开发两个数据库,INFORMATION_SCHEMA 和另一个。

我想用 SQL*Plus 做这样的事情,但问题是当我们使用 SQL*Plus 连接时,我们指定了数据库 (SID),这意味着其他数据库不可访问。

有没有办法做到这一点?

4

1 回答 1

1

Oracle对 DATABASE 的解释与 MySQL 不同。在 Oracle 中,我们在同一个数据库中有多个用户或模式。

因此,如果您真正想要的是从不同的模式访问对象,那么只需让该模式授予您权限即可。然后,您可以在 SQL 中引用表(或其他)。

用户 JOE 授予您在他的桌子上选择

SQL>  conn JOE/SOAP
SQL>  grant select on my_table to ABC;

然后,您可以对其运行查询:

SQL>  conn ABC/DEF
SQL>  select * from joe.my_table;

在您的示例中,您使用了 INFORMATION_SCHEMA。Oracle 的等价物是数据字典,一个巨大的视图库。 了解更多。

默认情况下,大多数人都授予公共访问权限。因此,您可以从 USER_TABLES、USER_CONSTRAINTS 和 USER_CONS_COLUMNS 中进行选择以重新创建该查询(假设我已正确理解它)。

于 2013-06-26T14:46:37.963 回答