DBLINK创建

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

1. Bdlink分类

类型Owner描述Private创建dblink的user拥有该dblink在本地数据库的特定的schema下建立的databaselink。只有建立该databaselink的schema的session能使用这个databaselink来访问远程的数据库。同时也只有Owner能删除它自己的privatedatabaselink。PublicOwner是PUBLIC.Public的databaselink是数据库级的,本地数据库中所有的拥有数据库访问权限的用户或pl/sql程序都能使用此databaselink来访问相应的远程数据库。GlobalOwner是PUBLIC.Global的database link是网络级的,When an Oracle network uses a directory server, the directory server automatically create and manages global database links (as net service names) for every Oracle Database in the network. Users and PL/SQL subprograms in any database can use a global link to access objects in the corresponding remote database.Note: In earlier releases of Oracle Database, a global database link referred to a database link that was registered with an Oracle Names server. The use of an Oracle Names server has been deprecated. In this document, global database links refer to the use of net service names from the directory server.



2. dblink创建

在创建之前,首先需要知道用户有没有创建dblink的权限,dblink的相关权限有三个2. dblink创建

CREATE DATABASE LINK(所创建的DBLINK只能是创建者自己使用,别的用户不能使用)

CREATE PUBLIC DATABASE LINK(PUBLIC表示所创建的DBLINK所有用户都可以使用)

DROP PUBLIC DATABASE LINK(删除公共的DBLINK)

首先要确认用户是否拥有创建dblink的权限,如果没有的话要将相关权限赋予用户才可以进行dblink的创建。

创建时需要有需要访问的数据库的TNS信息和可用的用户和密码,创建脚本如下:

--创建DBLINK:


 create database link dblink_name


  connect to user_name/*用户名*/identified by password/*密码*/


  using '(DESCRIPTION =


(ADDRESS = (PROTOCOL = TCP)(HOST = 192.92.92.92)(PORT = 1521))


(CONNECT_DATA =


(SERVER = DEDICATED)


(SERVICE_NAME = ORCL)


)


)


';

创建完成后即可在DBA_DB_LINKS视图中查询是否创建完成。也可以使用drop /* public */database link dblink_name进行drop删除;

3.dblink查询及创建同义词

创建完成后即可对目标数据库进行访问,如查询table_test表
Select * from table_test@dblink_name;

一般为了使用方便,可以对需要访问的表设置同义词:

创建和删除同义词:

create or replace synonym table_test for table_test@dblink_name;

设置同义词后查询时只需要查询同义词即可.

同义词也可以使用drop直接删除后重新创建