oracle dblink使用详解
1.dblink简介
dblink(database link)数据库链接就是数据库的链接,跨本地数据库
2.使用语法详解
基本语法
CREATE SHARED database link link_name
[CONNECT TO user IDENTIFIED BY password] [AUTHENTICATED BY user IDENTIFIED BY password] [USING 'connect_string']
说明:
a.权限:创建数据库链接的账号必须有CREATE DATABASE LINK或CREATE PUBLIC DATABASE LINK的系统权限,用来登录到远程数据库的账号必须有CREATE SESSION权限。这两种权限都包含在connect角色中CREATE PUBLIC DATABASE LINK权限在DBA中)。一个公用数据库链接对于数据库中的所有用户都是可用的,而一个私有链接仅对创建它的用户可用。由一个用户给另外一个用户授权私有数据库连接是不可能的,一个数据库链接要么是公用的,要么是私有的。
b.link:当source端的数据库GLOBAL_NAME=TRUE时,link名必须与远程的全局数据库名global_name相同,否则可以任意命名
c.current_user使用该选项时为了创建global类型的dblink。在分布式体系中存在多个数据库的话,如果想要在每一个数据库中都可以使用同样的名字来访问数据库a,那在每个数据库中都要创建一个到数据库a的db_link,太麻烦了,所以现在由这个选项,你只要创建一次,所有的数据库都可以使用这个db_link来访问了,要使用这个特性,必须有oracle nameserver或者ORACLE目录服务器,并且数据库a的参数global_names=true
d.connectstring:链接字符串,tnsnames.ora中定义远程数据库的连接串,也可以在创建dblink的时候指定
e.username、password:远程数据库的用户名,密码如果不指定,则使用当前的用户名和密码登录到远程数据库,当创建connected user类型的dblink时,需要如果采用数据字典验证,则需要两边数据库的用户名密码一致
营销系统举例
测试环境数据库3.1.13.153
数仓共用数据库3.1.13.102
在3.1.13.153上创建链接3.1.13.102数据库的db_link
CREATE PUBLIC DATABASE LINK to_jzyx CONNECT TO yxxtys IDENTIFIED BY yxxtys USING '(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST =3.1.13.102)(PORT =1521 )) ) (CONNECT_DATA = (SERVICE_NAME = lnodsst) ) )';
CREATE PUBLIC DATABASE LINK:基本语法
to_jzyx : db_link名字
CONNECT TO:链接到
yxxtys: 用户名
IDENTIFIED BY :基本语法
yxxtys: 密码
'(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST =3.1.13.102)(PORT =1521 )) ) (CONNECT_DATA = (SERVICE_NAME = lnodsst) ) )' : TCP为协议,host填写要连接的远程数据库的ip,post同为要远程的端口号,SERVICE_NAME要远程数据库的数据库实例名
查询数据实例
select t.* from [email protected]_jzyx t;
PMK_CUSTOMER_INFO: 表名
@: 连接符
to_jzyx: db_link名字
删除db_link
--删除DBLINK DROP DATABASE LINK [name]; --或 DROP PUBLIC DATABASE LINK [name];