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 PMK_CUSTOMER_INFO@to_jzyx t;

PMK_CUSTOMER_INFO: 表名

@: 连接符

to_jzyx: db_link名字

 

删除db_link

--删除DBLINK DROP DATABASE LINK [name]; --或 DROP PUBLIC DATABASE LINK [name];

posted on 2022-08-11 09:18  root-123  阅读(768)  评论(0编辑  收藏  举报