Oracle dblink用法详解

SQL xmt_herman_gcy 2089浏览 0评论
公告:“业余草”微信公众号提供免费CSDN下载服务(只下Java资源),关注业余草微信公众号,添加作者微信:xttblog,发送下载链接帮助你免费下载!
本博客日IP超过1800,PV 2600 左右,急需赞助商。
极客时间所有课程通过我的二维码购买后返现24元微信红包,请加博主新的微信号:xttblog,之前的微信号好友位已满,备注:返现
所有面试题(java、前端、数据库、springboot等)一网打尽,请关注文末小程序
视频教程免费领

当用户要跨本地Oracle数据库,访问另外一个数据库表中的数据时,本地数据库中必须创建了远程数据库的dblink,通过dblink本地数据库可以像访问本地数据库一样访问远程数据库表中的数据。

DataBase Link概述

oracle中的database link是定义一个数据库到另一个数据库的路径的对象,database link允许你查询远程表和执行远程程序。在任何分布式环境里,dblink都是必要的,另外注意database link是单向的连接。在创建database link的时候,oracle在数据字典中存储了相关的database link的信息,在使用database link的时候,oracle再通过oracle net用户预先定义好的连接信息访问相应的远程数据库来完成相应的工作。

Oracle DBLink作用

将多个不同地点的服务器的oracle数据库逻辑上看成一个数据库,也就是说在一个数据库中可以操作另一个远程的数据库中的对象。

建立Oracle DBLink的注意事项

确认从local database到remote database的网络连接是否正常,tnsping要能成功。
确认在remote database上面有相应的访问权限。

Oracle DBLink的分类

private:创建的是用户级别的dblink,只有创建该dblink的用户才可以使用这个dblink来访问远程的数据库,同时也只有该用户可以删除这个dblink。
public:创建的是数据库级别的dblink,本地数据库中所有的用户数据库访问权限的用户或者pl/sql程序都能使用这个dblink。
global:创建的是网络级别的dblink,这是对于oracle network而言的。

创建DBLink需要的权限

如果你新建了一个用户,那么你必须为它授予以下权限才可以创建dblink:create database linkcreate public database linkcreate session

创建DBLink的语法

CREATE [PUBLIC] DATABASE LINK dblink CONNECT TO user IDENTIFIED BY password USING ‘connect_string’;
DROP [PUBLIC] DATABASE LINK dblink;

参数说明
    dblink: 你所创建的database link的名字, 
    user和password:要连接的数据库的用户名和密码 
    connect_string:可以是经过Net Manager配置的(tnsnames.ora)且经测试可以连接的服务名,不过也更直接用tnsnames里的字符串:
    (DESCRIPTION =
        (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = even.oracle.com)(PORT = 1521)) 
    ) (CONNECT_DATA = (SERVICE_NAME =orcl)

创建DBLink

-- 如果不指定public,默认的是private,host后面可以是ip地址,也可以是解析过的域名
CREATE PUBLIC DATABASE LINK db_link_test02 CONNECT TO rms IDENTIFIED BY rms
  USING '(DESCRIPTION= 
	(ADDRESS_LIST = 
		(ADDRESS=(PROTOCOL=tcp)(HOST=mom_uat_new)(PORT=1521)))
			(CONNECT_DATA=
			(SERVICE_NAME=ormst1)
        )
	)';

查看DBLink

查看dblink,可以从dba_objects、dba_db_links这两张表去查(all_db_links、user_db_links也可以查)

SELECT *
  FROM dba_objects do
 WHERE do.object_type = 'DATABASE LINK';
SELECT *
  FROM dba_db_links ddl;

使用DBLink

-- 最简单的用法
SELECT *
  FROM table_name@database_link;
-- 不想让别人知道database link名字的时候,可以使用同义词包装一下
CREATE synonym table_name FOR table_name@database_link;
SELECT *
  FROM table_name;
-- 也可以建立一个视图来封装
CREATE view table_name_v AS
  SELECT *
    FROM table_name@database_link;

删除DBLink

-- 删除public类型的dblink
DROP PUBLIC DATABASE LINK dblink_name;
-- 删除private类型的dblink,只有创建者自己能删
DROP DATABASE LINK dblink_name;

版权声明:本文为博主原创文章,未经博主允许不得转载。

业余草公众号

最后,欢迎关注我的个人微信公众号:业余草(yyucao)!可加QQ1群:135430763(2000人群已满),QQ2群:454796847(已满),QQ3群:187424846(已满)。QQ群进群密码:xttblog,想加微信群的朋友,之前的微信号好友已满,请加博主新的微信号:xttblog,备注:“xttblog”,添加博主微信拉你进群。备注错误不会同意好友申请。再次感谢您的关注!后续有精彩内容会第一时间发给您!原创文章投稿请发送至532009913@qq.com邮箱。商务合作可添加助理微信进行沟通!

本文原文出处:业余草: » Oracle dblink用法详解