oracle跨库查询的方法

在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; 

(0)
上一篇 2022年3月21日
下一篇 2022年3月21日

相关推荐