Xuh*_*aib 8 sql oracle oracle11g
我有两个不同的数据库,一个DEVORADB用于开发,另一个UATORADB用于测试.UATORADB拥有尚未开发的最新数据.我想查询UATORADB数据库中的表DEVORADB.我是以DEVORADB这样的方式写作但没有得到结果:
SELECT * FROM TABLE_NAME@UATDEVORADB.
Run Code Online (Sandbox Code Playgroud)
spe*_*593 11
对于Oracle,
CREATE DATABASE LINK ...
Run Code Online (Sandbox Code Playgroud)
例如
通过创建和测试数据库链接,您可以执行查询(显示的样式)以从远程数据库中检索行.
参考:http://docs.oracle.com/cd/E11882_01/server.112/e41084/statements_5005.htm#SQLRF01205
跟进
注意:在Oracle中,术语"数据库"是指与Oracle"实例"关联的数据文件和日志文件.从第二个"数据库"检索数据意味着您需要与另一个数据库建立第二个连接.Oracle提供了一种称为"数据库链接"的工具.这允许一个数据库实例的会话(连接)连接到另一个数据库实例.(如果没有此工具,客户端将需要创建两个单独的连接,并且需要单独查询这两个数据库.)
如果此问题涉及从同一数据库中的两个单独"模式" 查询,只要用户对第二个模式中的对象具有足够的权限,就可以使用模式的名称限定标识符,例如
SELECT * FROM UATDEVORADB.TABLE_NAME
Run Code Online (Sandbox Code Playgroud)
要访问单独数据库上的数据,可以使用数据库链接...
CREATE DATABASE LINK UADEVORADB
CONNECT TO user
IDENTIFIED BY password
USING 'uadevoradb' ;
Run Code Online (Sandbox Code Playgroud)
(这将需要Oracle服务器上的tnsnames.ora文件或oracle名称服务器中的适当匹配条目,或者可以拼写连接详细信息来代替tnsnames.ora条目,例如:
CREATE DATABASE LINK UADEVORADB
CONNECT TO user IDENTIFIED BY password
USING '(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=uadevorahost1)(PORT=1521))
(CONNECT_DATA=(SERVICE_NAME=uadevoradb.domaindb)))'
Run Code Online (Sandbox Code Playgroud)
如果数据库链接中指定的"user"与远程系统上表的"owner"不同,并且没有引用该表的同义词,则表标识符需要与所有者进行限定...
SELECT * FROM OWNER.TABLE_NAME@UADEVORADB ;
Run Code Online (Sandbox Code Playgroud)