oracle中的database link是定义一个数据库到另一个数据库的路径的对象,database link允许你查询远程表和执行远程程序。在任何分布式环境里,dblink都是必要的,另外注意database link是单向的连接。在创建database link的时候,oracle在数据字典中存储了相关的database link的信息,在使用database link的时候,oracle再通过oracle net用户预先定义好的连接信息访问相应的远程数据库来完成相应的工作。 1、在建立database link之前需要注意: (1)确认从local database到remote database的网络连接是否正常,tnsping要能成功。 (2)确认在remote database上面有相应的访问权限。 2、oracle database link可分为下面三类:
(1)private:创建的是用户级别的dblink,只有创建该dblink的用户才可以使用这个dblink来访问远程的数据库,同时也只有该用户可以删除这个dblink。
(2)public:创建的是数据库级别的dblink,本地数据库中所有的用户数据库访问权限的用户或者pl/sql程序都能使用这个dblink。 (3)global:创建的是网络级别的dblink,这是对于oracle network而言的。 3、创建dblink需要的权限: 如果你新建了一个用户,那么你必须为它授予以下权限才可以创建dblink:create database link、create public database link、create session。 4、创建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)
- )
- )';
复制代码
5、查看dblink:
查看dblink,可以从dba_objects、dba_db_links这两张表去查: - SELECT *
- FROM dba_objects do
- WHERE do.object_type = 'DATABASE LINK';
- SELECT *
- FROM dba_db_links ddl;
复制代码除了上面两张表,还有all_db_links、user_db_links。
6、使用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;
复制代码7、删除dblink: - -- 删除public类型的dblink
- DROP PUBLIC DATABASE LINK dblink_name;
- -- 删除private类型的dblink,只有创建者自己能删
- DROP DATABASE LINK dblink_name;
复制代码
|