dblink的创建和使用

      dblink(Database Link)数据库链接顾名思义就是数据库的链接 ,就像电话线一样,是一个通道,当我们要跨本地数据库,访问另外一个数据库表中的数据时,本地数据库中就必须要创建远程数据库的dblink,通过dblink就可以像访问本地数据库一样访问远程数据库表中的数据。

创建dblink的语法

       CREATE [SHARED] [PUBLIC] database link link_name
  [CONNECT TO [user] [current_user] IDENTIFIED BY password] 
  [AUTHENTICATED BY user IDENTIFIED BY password] 
  [USING 'connect_string']

方括号选项是可选的,其中public表示链接对数据库所有用户可用,而改为private则表示对创建用户可用,current_user一般用在多个分布式数据库中,connectstring表示数据库网络服务名。

首先需要知道数据库用户是否具有权限

打开sqlplus登录后输入返回对应权限。

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

1.CREATE DATABASE LINK(所创建的dblink只能是创建者能使用,别的用户使用不了) ,
2.CREATE PUBLIC DATABASE LINK(public表示所创建的dblink所有用户都可以使用),
3.DROP PUBLIC DATABASE LINK。

dblink的创建有两种方式

1、已经配置本地服务
 create public database link link_name

    connect to username identified by password

    using 'connect_string';

注:link_name是连接名字,可以自定义;

       username是登陆数据库的用户名;

       password是登陆数据库的用户密码;

       connect_string是数据库连接字符串。

2、直接建立链接
  create database link link_name
  connect to username identified by password 
  using '(DESCRIPTION = 
  (ADDRESS_LIST = 
  (ADDRESS = (PROTOCOL = TCP)(HOST = X.X.X.X )(PORT = 1521)) 
  ) 
  (CONNECT_DATA = 
  (SERVICE_NAME = SSID) 
  ) 
  )';
  host=数据库的ip地址,service_name=数据库的ssid。
  其实两种方法配置dblink是差不多的,个人感觉还是第二种方法比较好,这样不受本地服务的影响。
  注意: 假如创建全局dblink,则必须使用systm或sys用户,在database前加public。

dblink的使用

查询:查看所有的数据库链接,进入系统管理员SQL>操作符下,运行命令:

    SQL>select owner,object_name from dba_objects where object_type='DATABASE LINK';
    或者select * from dba_db_links;

删除:DROP PUBLIC DATABASE LINK link_name;

使用:SELECT……FROM 表名@数据库链接名;

删除和插入数据和操作本地的数据库是一样的,只不过也需要写成“表名@dblink名称”而已,当然也可用同义词来替换,

CREATE SYNONYM 同义词名 FOR 表名@数据库链接名,这样就可以用同义词名代替表名@dblink名称。

本人才接触博客不久,如内容有疑问或错误的地方,敬请谅解和指教,谢谢大家。

你可能感兴趣的:(dblink的创建和使用)