sql - 来自另一个ORACLE数据库的查询表

标签 sql oracle oracle11g

我有两个不同的数据库,一个是我用于开发的DEVORADB,另一个是测试人员用于测试的UATORADBUATORADB具有最新数据,尚无开发中。我想从UATORADB中的DEVORADB数据库查询表。我以这种方式用DEVORADB编写,但没有得到结果:

SELECT * FROM TABLE_NAME@UATDEVORADB.

最佳答案

对于Oracle,

CREATE DATABASE LINK ...

例如

创建并测试数据库链接后,您可以进行查询(显示的样式)以从远程数据库中检索行。

引用:http://docs.oracle.com/cd/E11882_01/server.112/e41084/statements_5005.htm#SQLRF01205

FOLLOWUP

注意:在Oracle中,术语“数据库”是指与Oracle“实例”关联的数据文件和日志文件。从第二个“数据库”中检索数据意味着您需要与另一个数据库的第二个连接。 Oracle提供了一种称为“数据库链接”的功能。这允许到一个数据库实例的 session (连接)连接到另一个数据库实例。 (没有此功能,客户端将需要创建两个单独的连接,并且需要分别查询两个数据库。)

如果该问题是关于从同一数据库中的两个单独的“方案”进行查询的,则只要用户对第二模式中的对象具有足够的特权,标识符就可以使用该模式的名称来限定。
SELECT * FROM UATDEVORADB.TABLE_NAME

要访问单独数据库上的数据,可以使用数据库链接...
CREATE DATABASE LINK UADEVORADB 
  CONNECT TO user 
  IDENTIFIED BY password
  USING 'uadevoradb' ;

(这将需要在Oracle服务器或oracle名称服务器上的tnsnames.ora文件中有一个适当的匹配条目,或者可以用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)))'

如果在数据库链接中指定的“用户”与远程系统上表的“所有者”不同,并且没有引用该表的同义词,则表标识符将需要与所有者进行限定...
SELECT * FROM OWNER.TABLE_NAME@UADEVORADB ;

关于sql - 来自另一个ORACLE数据库的查询表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28368876/

相关文章:

oracle11g - 如何使用 UTL_COMPRESS 包压缩 txt 文件并在 unix 中使用 oracle 11 g 创建 gz 文件?

mysql - 存储过程中动态游标的性能

mysql - Solution Compatible Oracle and MySQL for LIMIT clause

sql - 如何在 SELECT (T-SQL) 中使用变量

sql - 序列不存在 ORA-02289

sql - 如何统计oracle每月返回的行数?

java - JDBC Oracle 错误 : java. sql.SQLException: ORA-12592: TNS: 数据包错误

java.sql.SQLException : ORA-01501: CREATE DATABASE failed ORA-01100: database already mounted

sql - 大小为 0 的 Varchar 字段,但未在 DISTINCT SQL 查询中列出

sql - 无限触发循环...设计使然(!)。如何解决?