欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

oracle跨库查询的方法

程序员文章站 2022-07-06 17:01:45
在oracle本地数据库端执行赋权dbuser帐号 sql> grant create database link to dbuser; 1.配置本地数据库服务器...

在oracle本地数据库端执行赋权dbuser帐号

sql> grant create database link to dbuser;

1.配置本地数据库服务器的tnsnames.ora文件

$vi $oracle_home/network/admin/tnsnames.ora 

添加如下行,其中dblink为连接名(可自定义),host和port为数据库侦听的ip及端口,service_name为数据库的sid,

mediadblink = 
 (description = 
  (address_list = 
   (address = (protocol = tcp)(host = 10.0.0.1)(port = 1521)) 
  ) 
  (connect_data = 
   (service_name = db) 
  ) 
 ) 

2.登录到本地数据库,创建database link

执行如下查询语句,其中mediadb为database link名(可自定义),mediadblink为先前在tnsnames.ora中定义的连接名,
dbuser为用户名,password为密码

 -- create database link 
 create database link mediadb 
 connect to dbuser identified by password 
 using 'mediadblink'; 

注意:这里不会验证用户名密码的正确性

3.使用链接的数据库

3.1 查询、删除和插入数据和操作本地的数据库是一样的,只不过表名需要写成“表名@database link名”,如

select * from table_name@mediadb ; 

3.2 也可以为这个表创建一个同义词

create synonym aaa for table_name@mediadb ; 

如下语句的效果和3.1中的一样

select * from aaa; 

删除同义词的语句为

drop synonym aaa; 

 以下是其他网友的补充:

 在oracle本地数据库端执行赋权dbuser帐号

sql> grant create database link to dbuser;

配置本地数据库服务器的tnsnames.ora文件
$ vi $oracle_home/network/admin/tnsnames.ora

增加需要远程连接服务器的连接配置,如:

orcl_remote =
(description =
(address = (protocol = tcp)(host = oradb )(port = 1521))
(connect_data =
(server = dedicated)
(service_name = orcl)
)
)

登录到本地数据库,创建database link

执行如下查询语句,其中orcl_link为database link名(可自定义),orcl_remote为先前在tnsnames.ora中定义的连接名,
dbuser为用户名,password为密码

create database link orcl_link connect to dbuser identified by password using 'orcl_remote';

查询创建database link的2中方式:

1)、执行sql语句。
select * from user_db_links; --用户 db link
select * from dba_db_links; --dba db link
select * from v$dblink; --当前db link

2)、在pl/sql中,在左边浏览器中点击database links就可以看到数据库链路了。

使用链接的数据库

查询、删除和插入数据和操作本地的数据库是一样的,只不过表名需要写成“表名@database link名”,如

select * from table_name@orcl_link

其它:

删除database link(本例中是orcl_link)
sql> drop database link orcl_link;