Oracle DBlink方式

来源:互联网 发布:学通网络ps教程 编辑:程序博客网 时间:2024/06/07 01:00

有时候,需要在两个Oracle数据库之间手工同步数据时,DBLink是最方便快捷的手段之一。


一.在创建之前首先要查一下用户是否具有DBlink的创建权限。


以sys用户登录本地数据库查看 dblink 的权限。

select * from user_sys_privs t where t.privilege like upper('%link%');1 SYS CREATE DATABASE LINK NO2 SYS DROP PUBLIC DATABASE LINK NO3 SYS CREATE PUBLIC DATABASE LINK NO

也可以查看数据库中已存在的DBlink:

select owner,object_name from dba_objects where object_type='DATABASE LINK';


二.给用户授权

赋予创建dblink的权限有三种:grant create  database link to user ;--只有user用户能使用的dblinkgrant create public  database link to user ;--所有用户都可以使用的dblinkgrant drop public  database link to user; --删除dblink的权限看你创建语句是public dblink,所以要DBA用户付给user第二种权限才行。

三.dblink有两种访问权限.

一种是private 的,只能所在用户访问:create database link 

另一种是publicd的, 所有用户可以访问:create public database link 必须使用systm或sys用户


CREATE DATABASE LINK(所创建的dblink只能是创建者能使用,别的用户使用不了.)
CREATE PUBLIC DATABASE LINK(public表示所创建的dblink所有用户都可以使用.)
DROP PUBLIC DATABASE LINK(删除数据库的dblink)

四.创建dblink的两种方式.

1. 已经配置本地服务

Create DATABASE LINK数据库链接名CONNECT TO 用户名 IDENTIFIED BY 密码 USING ‘本地配置的数据的实例名’;

注意:

create public database link XMDS_KF connect to XMDS identified by XMDS using 'XMDS_KF';

但这种方式有个缺点就是必须要在服务器建立一个被连接库的服务名,如果不建则会报错:

ORA-12154: TNS: 无法处理服务名

,但如果直接使用地址来建DBLink,就可以省去配置服务名的麻烦了:


2.   未配置本地服务

CREATE PUBLIC DATABASE LINK 数据链名称    CONNECT TO 登陆用户名 IDENTIFIED BY 密码     USING '(DESCRIPTION =                        (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 对方Oracle服务器的IP地址)(PORT = 端口号)))                       (CONNECT_DATA = (SERVICE_NAME = 对方Oracle服务器服务名) )           )' 

host=数据库的ip地址,service_name=数据库的ssid。

show parameter service; 查看 service_name;


其实两种方法配置dblink是差不多的,第二种方法比较好,可以不受本地服务的影响。


数据库参数global_name=true时要求数据库链接名称跟远端数据库名称一样
数据库全局名称可以用以下命令查出
Select * FROM GLOBAL_NAME;


五.使用

查询远端数据库里的表
Select …… FROM 表名@数据库链接名;
查询、删除和插入数据和操作本地的数据库是一样的,只不过表名需要写成“表名@dblink服务器”而已。


六.注意

oracle dblink解决后台却出现锁
创建是很简单,但是在使用中后台却出现锁,查看这个锁的方法可以去console中看到或者查询数据库。其实这个锁倒不是最让人心烦的,而是每次使用dblink查询的时候,均会与远程数据库创建一个连接,dblink应该不会自动释放这个连接,如果是大量使用dblink查询,会造成web项目的连接数不够,导致系统无法正常运行。


0 0
原创粉丝点击