当需要跨越本地数据库,访问远程数据库的数据时,oracle提供了dblink的方式,让我们可以很方便访问远程数据库像本地一样方便,我们下面来看看创建dblink的方法。
参考方案一
步骤一:首先查询当前用户是否有创建dblink的权限,如果没有,需要赋权
select * from user_sys_privs t where t.privilege like upper('%link%');
命令查询,从结果上看到当前用户有创建权限
命令说明:
CREATE DATABASE LINK:所创建的dblink只能是创建者能使用,别的用户使用不了
CREATE PUBLIC DATABASE LINK:public表示所创建的dblink所有用户都可以使用
赋权需要在sys下执行:
grant create public database link,create database link to myAccount;
步骤二:使用如下sql进行创建
create database link HSDblink1 connect to SBD_CXTJ identified by huawei123 using '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL = TCP)(HOST = 192.168.101.5)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = search)))';
- TestDblink : 表示dblink名字
- dbName :表示 远程数据库的用户
- dbPassword:表示 远程数据库的密码
- HOST : 表示远程数据库IP
- PORT : 表示远程数据库端口
- SERVICE_NAME : 远程数据库的实例名
步骤三:远程数据库的SERVICE_NAME可以在远程数据库的sys用户下进行查询
select name,value from v$parameter where name='service_names'
步骤四:使用dblink访问远程的数据库,查询就和本地一样了
---teacher为表名,HSDBLINK1为创建的dblink名称
select * from teacher@HSDBLINK1;
-------------------------------------华丽分割线-------------------------------------
参考方案二
1.判断用户是否具备创建database link 的权限
一:查看当前登录用户(如果查询有返回行,则表示具备创建权限,否则,需要创建权限)
select * from user_sys_privs where privilege like upper('%LINK%');
二:查询某个用户test(如果查询有返回行,则表示具备创建权限,否则,需要创建权限)
select * from user_sys_privs where privilege like upper('%DATABASE LINK%') AND USERNAME='TEST';
2.给test用户授权创建删除dblink权限
grant create public database link,drop public database link to test;
3.创建database link
方法一:PLSql工具创建
鼠标右键》新建
方法二:命令语句
create public database link TESTLINK connect to TEST identified by TEST USING 'ORCL数据库地址(比如 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=test)))'
4.查询验证
select * from 表名@TESTLINK;
查看DBLINK
select owner,object_name from dba_objects where object_type='DATABASE LINK';
删除dblink
//seq:(dblinkname)
drop public database link seq;
https://www.csdn.net/tags/MtzaIg1sNDk4MDUtYmxvZwO0O0OO0O0O.html
https://www.cnblogs.com/xianshen/p/15594482.html