oracle dblink 连接到其它数据库

oracle DBLink 连接到其它数据库

禁用dblink(需要重启数据库)

show parameter open_links;
> open_links integer 4
> open_links_per_instance integer 4
alter system set open_links=0 scope=spfile;
alter system set open_links_per_instance=0 scope=spfile;

GLOBAL_NAMES(立即生效)

GLOBAL_NAMES参数设置为TRUE时,使用DATABASE LINK时,DATABASE LINK的名称必须与被连接库的GLOBAL_NAME一致

查看global_name名字

select * from global_name;

修改参数

show parameter global_names;
alter system set global_names=false;

为用户授权

查询用户有没有创建dblink的权限

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

授权

grant create database link to username;
grant create public database link to username;

创建dblink

配置tnsname.ora

test = 
        (DESCRIPTION= 
            (ADDRESS_LIST= 
                (ADDRESS=(PROTOCOL=TCP)(HOST=testserver)(PORT=1521)) 
            ) 
            (CONNECT_DATA=(SERVICE_NAME=orcl) 
            ) 
        ) 
# test:数据库别名
# service_name:服务名
  • 客户机上的using中的连接一定要记得重写,只有服务端的链接配置才能在dblink中引用,配置在oracle客户端的tnsnane.ora中的链接配置是不能在dblink中使用的

用户名和密码不要加’'或者""

-- 创建private的dblink
create  database link ydccs_link
      connect to 用户名 identified by 密码
      using ' (DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = 11.11.11.11)(PORT = 1521))
   )
   (CONNECT_DATA =
 --    (SERVER = DEDICATED)
     (SERVICE_NAME = test)
   )
 )';

-- 创建public的dblink
create public database link dblink
       connect to totalplant identified by totalplant 
       using '(DESCRIPTION =
                (ADDRESS_LIST =
                  (ADDRESS = (PROTOCOL = TCP)(HOST = LOCALHOST)(PORT = 1521))
                )
                (CONNECT_DATA =
                  (SERVICE_NAME = prd.gdc)
                )
              )';

如果是在数据库主机上,使用tnaname.ora中配的引用就行了

例如

create  database link ydccs_link
      connect to 用户名 identified by 密码
      using ' TESTS';
create database link dblink_120 connect to zhan identified by "zhan" using '192.168.50.120:1521/bond';
  • sys用户为其它用户创建dblink

因为dblink的创建和删除只能是它的所属用户来操作,所以我们无法直接使用sys用户创建其他用户下的dblink,当遇到有这样的需求时,可以先建立该用户下存储过程,再通过调用这个存储过程来间接实现。

使用sys用户创建JY2用户下的dblink “TO_11G_JY1”,连接远端“WINORA”的jy1用户:

--Create other user's dblink
--grant create database link to jy2;
-- 创建存储过程
create or replace procedure jy2.createlink 
is
begin
execute immediate 'create database link TO_11G_JY1 connect to jy1 identified by jy1 using ''WINORA''';
end;
/
--create database link using above procedure
-- 执行存储过程
exec jy2.createlink;

使用sys用户删除JY2用户下的dblink “TO_11G_JY1”

--Drop other user's dblink
-- 创建存储过程
create or replace procedure jy2.droplink 
is
begin
execute immediate 'drop database link TO_11G_JY1';
end;
/
--drop database link using above procedure
-- 执行存储过程
exec jy2.droplink;

查看数据库中的dblink

select * from dba_db_links;

为dblink创建同义词

create synonym TESTSYNONYM for company@TESTLINK1;

删除dblink

drop database link test;

关闭dblink

如果使用dblink,我们需要及时显示的关闭dblink。

commit;  --先提交才能关闭
alter session close database link test;
dbms_session.close_database_link(test);

参考链接:

https://blog.csdn.net/it_taojingzhan/article/details/50171095

http://blog.itpub.net/9932141/viewspace-631509/

https://www.cnblogs.com/wangyong/p/6354528.html

https://www.cnblogs.com/songdavid/articles/2166988.html

https://bbs.csdn.net/topics/350249864

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值