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 dl_OCPLYZ1 CONNECT TO lyz IDENTIFIED BY lyz
- USING '(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.95.155)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = OCPLYZ1)
)
)';
或者我们可以这样写:
create public database link dl_OCPLYZ1 connect to lyz identified by lyz using 'OCPLYZ1';
但是要再 tnsnames.ora 文件上加上这个:OCPLYZ1 ,这个格式最好要和上面的对应规整点。。。。否则有可能认不到。。
然后上面的 using 'OCPLYZ1' 这边就要和tnsnames.ora 名字一样了