查询多个数据库?

时间:2013-06-26 13:57:01

标签: database oracle sqlplus

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

有办法吗?

1 个答案:

答案 0 :(得分: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中选择重新创建该查询(假设我已正确理解它)。