当用户要跨本地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 link、create public database link、create 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;
版权声明:本文为博主原创文章,未经博主允许不得转载。
: » Oracle dblink用法详解
原创文章,作者:kirin,如若转载,请注明出处:https://blog.ytso.com/252348.html