oracle dblink使用
dblink的主要作用是两个数据库间的数据访问
(1)global_name查看
select * from global_name;
(2)查看本地的global_names参数
show parameter global_names
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
global_names boolean FALSE
当该参数的值为true时在本地建立的dblink的名称必须和远程的global_name一致才行
(3)查看远程的数据库是否支持高级复制
select * from v$option where parameter='Advanced replication';
如果返回的值为true,那么就是支持,否则就是不支持,应该在两个数据库中都是检查是否支持才行。
(4)创建dblink
create database link dbl_test connect to test identified by oracle using 'lwl';
dbl_test:dblink的名字
test:要连接的数据库的用户名
oracle:要连接的数据库的密码
lwl:本地建立的连接到远程数据库的服务名
SQL> select * from dual@dbl_test;
如果返回结果如下就说明建立成功了
DU
--
X
(5)在被内地查看已建立的远程连接名
SQL> select owner,object_name from dba_objects where object_type='DATABASE LINK';
OWNER
------------------------------
OBJECT_NAME
--------------------------------------------------------------------------------
SCOTT
DBL_TEST
(6)使用
select * from r_area@dbl_test where R_AREA_NAME='郑州';
(7)修改本地的global_names
SQL> alter system set global_names=TRUE;
System altered.
SQL> show parameter global_names
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
global_names boolean TRUE
SQL> select * from r_area@dbl_test where R_AREA_NAME='郑州'
select * from r_area@dbl_test where R_AREA_NAME='郑州'
*
ERROR at line 1:
ORA-02085: database link DBL_TEST connects to ORCL
在TRUE的状态下建立dblink
SQL> create database link a connect to ndas identified by ndas using 'ndas';
Database link created.
SQL> create database link orcl connect to ndas identified by ndas using 'ndas';
create database link orcl connect to ndas identified by ndas using 'ndas'
*
ERROR at line 1:
ORA-02082: a loopback database link must have a connection qualifier
名字相同时竟然出错了,貌似和前面的说法相悖,有待研究
(8)对于经常使用的数据库链接,可以建立一个本地的同义词,方便使用:
CREATE SYNONYM worker_syn FOR worker@zrhs_link;
(9
对于另外一种情况,所要访问的表不在数据库链接中指定的远程帐户下,但该帐户有访问该表的权限,那么我们在表名前要加上该表的用户名:
SELECT * FROM camel.worker@zrhs_link ;
)