
DBLink 的作用是在局域网内,通过一台服务器上面的数据库访问另外一台服务器上面数据库的功能。
下面简单的介绍DBLink的配置:
服务器A:IP 192.168.1.10, 数据库实例名:orcl 数据库登录:test/test
服务器B:IP 192.168.1.1, 数据库实例名:orcl 数据库登录:user/user
在A服务器上的数据库可以访问服务器B的数据库时就需要用到dblink
请点击输入图片描述
首先打开plsql,选择到DbLink
请点击输入图片描述
有点点击new,进入编辑界面,分别输入dblink的名称,需要链接到另外一个数据库的用户名、密码、实例名等信息。填写核对无误后点击左下角的apply,进行保存。这样你的第一个dblink就创建好了
请点击输入图片描述
当然还可以直接用语句创建dblink。create public database link MyFirstDblink connect to user identified by "123456" USING '192.168.1.1/orcl'
请点击输入图片描述
语句创建好后,选中这条语句,点击执行按钮,或者F8快捷键保存。
请点击输入图片描述
这时候就可以使用查询语句啦,在表名称后面加@字符,便会自动出现你添加的DBLINK名称
请点击输入图片描述
当然还可以使用更新、删除语句啦。是不是很简单呢,有了dblink *** 作别人的数据库就更简单啦
请点击输入图片描述
比如我想在192.168.1.1服务器上的orcl数据库创建dblink,访问192.168.1.2服务器上db01数据库的test用户,具体步骤如下:以下所有 *** 作都是在服务器192.168.1.1上完成
1 确保网络互通
ping 192.168.2
2 配置网络
cd $ORACLE_HOME/network/admin
[oracle@cc admin]$ vim tnsnames.ora
2 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.2)(PORT =
1521))
)
(CONNECT_DATA =
(SERVICE_NAME = db01)
)
)
如果tnsping 2可以说明网络配置成功
3 创建dblink
create
database link db01 connect to test identified by test using '2'
select * from test@db01如果可以访问到test用户下数据,说明配置成功;
其中在创建过程中可能会出现以下几种错误:
(以下问题都是在192.168.1.2服务器上解决的)
问题一:
tnsping 2不通,出现TNS-12532 错误
解决办法:
注释掉默认域名
[oracle@card admin]$ vim sqlnet.ora
#NAMES.DEFAULT_DOMAIN = DEV.CN.TLAN
NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME)
问题二:
select* from test@db01创建完dblink时查询数据出错
ERROR at line 1:
ORA-02085: database link FGOS.REGRESS.RDBMS.DEV.US.ORACLE.COM connects to ORCL
出现错误ORA-02085
解决办法:
当GLOBAL_NAMES参数设置为TRUE时,使用DATABASE LINK时,DATABASE LINK的名称必须与被连接库的GLOBAL_NAME一致。
SQL>show parameter global_names
NAMETYPEVALUE
------------------------------------ ----------- ------------------------------
global_namesboolean TRUE
SQL>alter system set global_names=falsescope=both
创建dblink一般有两种方式,不过在创建dblink之前用户必须有创建dblink的权限。想知道有关dblink的权限,以sys用户登录到本地数据库:select * from user_sys_privs t
where t.privilege like upper('%link%')
1 SYS CREATE DATABASE LINK NO
2 SYS DROP PUBLIC DATABASE LINK NO
3 SYS CREATE PUBLIC DATABASE LINK NO
可以看出在数据库中dblink有三种权限CREATE DATABASE LINK(所创建的dblink只能是创建者能使用,别的用户使用不了),CREATE PUBLIC DATABASE LINK(public表示所创建的dblink所有用户都可以使用),DROP PUBLIC DATABASE LINK。
在sys用户下,把CREATE PUBLIC DATABASE LINK,DROP PUBLIC DATABASE LINK权限授予给你的用户
grant CREATE PUBLIC DATABASE LINK,DROP PUBLIC DATABASE LINK to scott
然后以scott用户登录本地数据库
1.创建dblink的第一种方式,是在本地数据库tnsnames.ora文件中配置了要远程访问的数据库。
create public database link
to_bylw connect to scott identified by tiger using 'bylw'
其中to_bylw是你创建的dblink名字,bylw是远程数据库的实例名,scott/tiger是登录到远程数据库的用户/密码。然后在本地数据库中通过dblink访问远程数据库'bylw'中scott.tb_test表,sql语句如下所示
select * from scott.tb_test@to_bylw
2.创建dblink的第二种方式,是在本地数据库tnsnames.ora文件中没有配置要访问的远程数据库,
create database link to_test
connect to scott identified by tiger
using '(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.5)(PORT = 1521)))(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = bylw)))'第二种是把第一种配置在tnsnames.ora文件中的信息,直接放在创建dblink语句后面。第一种情况tnsnames.ora文件中信息如下:bylw =(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.5)(PORT = 1521)))(CONNECT_DATA =
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)