Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 查询多个数据库?_Database_Oracle_Sqlplus - Fatal编程技术网

Database 查询多个数据库?

Database 查询多个数据库?,database,oracle,sqlplus,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_

使用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
这只是一个示例,它并不完整:但正如您所看到的,我们正在处理两个数据库,信息模式和另一个数据库

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

有没有办法做到这一点?

Oracle有。在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;
在您的示例中,您使用了信息模式。与此类似的Oracle是数据字典,一个庞大的视图库


默认情况下,它们中的大多数都被授予公共访问权限。因此,您可以从USER_表、USER_约束和USER_CONS_列中进行选择,以重新创建该查询(假设我理解正确)。

ma be helpfull约瑟夫的建议是正确的-数据库链接是Oracle为跨数据库查询提供的机制。