【问题标题】:Query more than one database?查询多个数据库?
【发布时间】:2013-06-23 17:07:36
【问题描述】:

使用 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),这意味着其他数据库无法访问。

有办法吗?

【问题讨论】:

标签: database oracle sqlplus


【解决方案1】:

Oracle 有a different interpretation of DATABASE from 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 的等价物是数据字典,一个巨大的视图库。 Find out more.

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-13
    相关资源
    最近更新 更多