当前位置: 代码网 > it编程>数据库>Oracle > Oracle跨库访问DBLINK使用以及实际应用

Oracle跨库访问DBLINK使用以及实际应用

2024年05月18日 Oracle 我要评论
1. dblink的介绍oracle在进行跨库访问时,可以创建dblink实现,比如要将uat的表数据灌入开发环境,则可以使用uat库为数据源,通过dblink实现将查出的数据灌入开发库。简而言之就是

1. dblink的介绍

oracle在进行跨库访问时,可以创建dblink实现,比如要将uat的表数据灌入开发环境,则可以使用uat库为数据源,通过dblink实现将查出的数据灌入开发库。简而言之就是在当前数据库中访问另一个数据库中的表中的数据

2. dblink的使用简介

2.1 权限问题

要想创建dblink,首先要检查当前用户是否具备权限。

select * from user_sys_privs where privilege like upper('%database link%');

create public database link:表示所创建的dblink所有用户都可以使用
create database link:表示所创建的dblink只能是创建者能使用,别的用户不可以使用
drop public database link : 表示所创建的dblink所用用户都可以删除

如果没有以上权限,但是有unlimited tablespace权限,也可以实现dblink的创建和删除(实测)。

select * from user_sys_privs where privilege like upper('%unlimited tablespace%');

如果指定用户没有上面的几个权限,需要通过sys用户(这个充当管理员角色,有很大权限)赋予权限,你需要登陆sys用户,并在sys用户下执行以下语句:

grant create public database link , drop public database link to hxapp;

用来登录到远程数据库的帐号必须有create session权限

2.2 创建dblink

创建时加不加public关键字,会影响dblink的使用范围,加上public关键字则所有用户都可以使用,否则只有当前用户或者更高权限的用户可以使用。

  • 通过pl/sql developer图形化界面创建

    等价于
    create database link dblink_test_to230
      connect to hxapp identified by hxapp
      using '3.1.11.230/cbsznckdb';
    
  • 如果网络配置文件tnsnames.ora配置了连接信息,则可以使用如下语句实现:
    create database link &dblink_name
    	connect to &db_name identified by &db_passwd
    	using '&db_sid';
    

  • 如果网络配置文件tnsnames.ora未配置连接信息,则可以使用如下语句实现:
create database link &dblink_name
connect to &db_name identified by &db_passwd
using '(description = 
         (address_list =
           (address =
             (protocol = tcp)
             (host = &ip)
             (port = 1521)
           )
         )
         (connect_data = (service_name = &sid)
         )
       )';
--例:
create database link &dblink_name
connect to &db_name identified by &db_password
using '(description = 
         (address_list =
           (address =
             (protocol = tcp)
             (host = 3.1.11.230)
             (port = 1521)
           )
         )
         (connect_data = (service_name = cbsznckdb)
         )
       )';
--简写
	create database link dblink_test_01
	  connect to hxapp identified by hxapp
	  using '3.1.11.230/cbsznckdb';

创建以后查询结果:

2.3 查询dblink

  • 查询当前实例下所有的dblink
select * from dba_db_links t;

  • 查询当前用户下所有的dblink
select * from user_db_links t;

2.4 删除dblink

  • 如果创建的是一个public的dblink,删除时需要用
 drop public database link &dblink_name;
  • 如果创建的是一个private的dblink,删除时需要用
 drop database link &dblink_name;

3. dblink实际应用语句举例

--插入语句
insert into test_01@dblink_test_01 t
  select 'untifa' from dual;
--查询语句
select * from test_01@dblink_test_01 t where t.name = 'untifa';
--删除语句
delete from test_01@dblink_test_01 t where t.name = 'untifa';
--更新语句
update test_01@dblink_test_01 t
   set t.name = 'mengkid~lufy'
 where t.name = 'untifa';

总结 

到此这篇关于oracle跨库访问dblink使用以及实际应用的文章就介绍到这了,更多相关oracle跨库访问dblink内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com