天天看点

ORACLE数据库链接

在oracle里面,远程数据访问,像查询、更新等可以通过database link来实现。数据库连接需要在建立database link的两台机子上都运行oracle net(以前叫sql*net 和net 8)。 语法如下

1 database link 的创建:

有两个数据库服务器a/b, 其中a的ip地址为172.20.36.245, 服务器b为本机。服务器b上的数据库实例名为orcl,在本机上的服务监听配置上有服务器a上实例配置:

实例biwg_test的账号为 wgods 、 密码为wgods。下面开始在本机上创建db links

方法1:

create [public] database link 数据库链接名 connect to 用户名 identified by 密码 using '本地配置的数据的实例名';

[public]的意思是:public是全局db link,即该数据库上所有用户都能查询,要sys或者system用户来创建(当然有sysdba权限的用户也可以的);如果不使用public就是私有db link,只有创建该db link的用户能查询

查看连接是否成功

方法2:可以不配置服务。

不建议使用这个实现。感觉没有上面方法来的方便

2 查看当前数据有哪些database link?

3 如何返回数据库的global_name?

该参数为true时,你在本地建立的dblink名称必须和远程的global_name一致才行。

4 删除database link

drop [public] database link remote_deve_host;

会报如下错误: ora-02024: 未找到数据库连接

drop public database link remote_deve_host;

正常执行删除database link。

5 设置global_name值对database link的影响

sql> alter system set global_names = true;

system altered

create public database link remote_db

connect to wgods identified by wgods using 'biwg'

select * from dual@remote_db

此时报错:ora-02085:数据库连接 xxxx 到 xxxx

sql> alter system set global_names = false;

修改参数值为false后,查询就正常了、

6 在db link中执行查询会有些限制。你应该避免使用connect by, start with, 以及prior关键字。一些查询使用了这些关键字会很正常, 但是大部分查询会失败

7 如何查询

select …… from 表名@数据库链接名

8 db link的使用原则(工作中以及网上收集整理的,仅供参考)

8.1.生产尽量不要使用db link,虽然方便,但这样不利于数据库安全管理

8.2.在10g中,blob,clob在db link中是查不到的,含这种数据类型的,要配合建view使用

8.3.我们经常可以使用synonym来做一些配置,以提高易读性和安全性

8.4.被建立了db link的user,最好不要修改密码,若修改密码要重建db link

8.5.db link是单向的

8.6 数据库链接名,建议使用sid.schema的形式,这样方便有多个db link时的识别(建议,个人习惯,非强制性)