Oracle数据库怎样跨库查询?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle数据库怎样跨库查询?相关的知识,希望对你有一定的参考价值。

注意不是跨表,是跨库。两套用户名密码的跨库查询a库中的A表 和b库中的B表 有一个c键连接。a的用户名密码是aaa aaa b库的是bbb bbb
怎么样实现A与B表的关于c键的关联查询?谢谢~

在ORACLE里A库里建立一个同义词可把B库的X 表映射到A库。这样A库就当本库的表(虚拟式)使用。
Oracle的同义词(synonyms)从字面上理解就是别名的意思,和试图的功能类似,就是一种映射关系。本文介绍如何创建同义词语句,删除同义词以及查看同义词语句。
  oracle的同义词总结:
  从字面上理解就是别名的意思,和试图的功能类似。就是一种映射关系。
  1.创建同义词语句:
  create public synonym table_name for user.table_name;
  其中第一个user_table和第二个user_table可以不一样。
  此外如果要创建一个远程的数据库上的某张表的同义词,需要先创建一个Database Link(数据库连接)来扩展访问,然后在使用如下语句创建数据库同义词:create synonym table_name for table_name@DB_Link;
  当然,你可能需要在user用户中给当前用户(user2)授权: grant select/delete/update on user2追问

这个问题已经过去了四年了,还是多谢回答 :)

追答

这次是百度推的高端问题,和你本身没啥关系。搞活动。

参考技术A dblink

查询另一个库的表B时后面加@dblink名字
参考技术B 如果aaa是dba,那么是可以的,在sql中直接写select c from bbb.B ……………… 参考技术C 建一个DBlink
格式如下:
(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.74.111)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = ccdb)) )本回答被提问者采纳
参考技术D dblink

Oracle 跨库查询表数据(不同的数据库间建立连接)

1.情景展示

  当需要从A库去访问B库中的数据时,就需要将这两个库连接起来;

  两个数据库如何实现互联互通,在oracle中,可以通过建立DBLINK实现。

2.解决方案

  2018/12/05

  第一步:创建DBLINK

  前提:要建立通信的2个数据库的IP必须实现可以相互访问。

  方式一:使用plsql实现

  选中“database link” -->右键-->新建

  名称:创建的DBLINK的名称,通过它来完成B库的访问;

  配置连接B库所需的用户名、密码和数据库地址

  方式二:通过sql实现

  方法一:推荐使用

create database link DATABASE_LINK_TEST--数据库别名
  connect to DB_TEST identified by DB_TEST--分别对应用户名和密码
  using \'127.0.0.1:1521/ORCL\';--域名:端口号/数据库实例

  方法二:

  模板

create database link 随便起个名字
  connect to 用户名 identified by 密码
  using \'(DESCRIPTION =                       
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 域名)(PORT = 端口号))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = 数据库实例名称)
    )
  )\';

  举例:

-- Create database link 
create database link DATABASE_LINK_TEST --自定义要连接的数据库名称
  connect to username identified by password  --用户名和密码
  using \'(DESCRIPTION =                      --数据库连接:域名,端口号,数据库实例    
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = orcl)
    )
  )\'; 

  第二步:调用方式

  B库表名@连接的B数据库的别名

select * from BASE_TEST@DATABASE_LINK_TEST 

 

  

以上是关于Oracle数据库怎样跨库查询?的主要内容,如果未能解决你的问题,请参考以下文章

Oracle&SQLServer中实现跨库查询

sql server 跨库查询

Oracle跨库操作实现

Oracle 跨数据库查询

sql 跨库查询的问题

多线程调用oracle存储过程是不是并发执行?