具体需求:除了查询本地数据库的信息还要查询远程数据库的表信息。为了避免建立两个数据库。
Database Links:使用户可以通过一个数据库访问到另外一个远程数据库
Database Link有哪几种连接方式的Link:
Link类型
说明
Connected user link
看这个类型的名称就可以判断出,用的是当前连接的用户的帐户及其密码来访问远程数据库的。所以这个类型就要求需要在远程数据库上有一个和本地帐户一样的username和password.
Fixed user link
这个类型是说使用指定的帐户和密码来访问远程数据库。所以只需指定的帐户能够有权限访问远程数据库就可以。
Current user link
需要用户连接到本地数据库的时候是全局用户的身份连接的。这样这个全局用户就可以使用指定帐户的上下文,而无需存储密码信息到link中。
Database Link有以下类型:
类型
说明
Private
来类型的Database Lin只能由这个Database Link的Owner才能使用它。
Public
在这个数据库里的所有用户均可使用该Database Link
Global
网络中的数据库中的用户均可使用该database link. 因为当Oracle 使用目录服务器的时候,它会在该目录下的所有数据库里都创建这个 global database link,并且统一控制。因此所有在目录下的数据库里的用户均可使用。
语法:create [type] database link
语句
说明
访问方式类型
连接类型
Create database link dblinkName using ‘NSName’;
创建一个database link ,通过使用网络服务名称创建。其中Database Link的名称为dbLinkName. 网络服务的名称为NSName.
Connected user link
Private
Create public database link dblinkName connect to CURRENT_USER using ‘NSName’;
创建一个database link ,通过使用网络服务名称创建。其中Database Link的名称为dbLinkName. 网络服务的名称为NSName.
Current user link
public
Create database link dblinkName dblinkName connect to username identified by password using ‘NSName’;
创建一个database link ,通过使用网络服务名称创建。其中Database Link的名称为dbLinkName. 网络服务的名称为NSName. 通过用户帐户username及其密码password来访问远程数据库。
Fixed user link
private
具体创建例子:
第一步:
create public database link linkname connect to user_name identified by user_pwd using '(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.33)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = INTRANET)
)
)';
第二步:
select * from remoteTableName@linkname;
附上删除命令:drop public database link linkName;