DBLINK 创建
dblink(Database Link)数据库链接顾名思义就是数据库的链接 ,当我们要跨本地数据库,访问另外一个数据库表中的数据时,本地数据库中就必须要创建远程数据库的dblink,通过dblink本地数据库可以像访问本地数据库一样访问远程数据库表中的数据。
1. Bdlink分类
Owner | 描述 | |
Private | 创建dblink的user拥有该dblink | 在本地数据库的特定的schema下建立的databaselink。只有建立该databaselink的schema的session能使用这个databaselink来访问远程的数据库。同时也只有Owner能删除它自己的privatedatabaselink。 |
Public | Owner是PUBLIC. | Public的databaselink是数据库级的,本地数据库中所有的拥有数据库访问权限的用户或pl/sql程序都能使用此databaselink来访问相应的远程数据库。 |
Global | Owner是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 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 直接删除后重新创建