数据库A,数据库B
B库示例orcl
一、在A上配置到B的连接,配置tnsname.ora,示例如下:
[oracle@Vaxph47 admin]$ vi tnsnames.ora
orcl=
(DESCRIPTION=
(ADDRESS= (PROTOCOL=tcp)(HOST=192.168.1.49)(PORT=1521))
(CONNECT_DATA=
(SERVICE_NAME=orcl)))
检测是否能够连接
[oracle@Vaxph47 admin]$ tnsping 192.168.1.49
TNS Ping Utility for Linux: Version 10.2.0.5.0 - Production on 15-DEC-2014 10:34:20
Copyright (c) 1997, 2010, Oracle. All rights reserved.
Used parameter files:
Used HOSTNAME adapter to resolve the alias
Attempting to contact (DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=192.168.1.49))(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.49)(PORT=1521)))
OK (0 msec)
二、授予此用户创建dblink的权限
SQL> grant create database link to prep2p;
Grant succeeded.
三、用指定用户创建private dblink(只有创建用户才能使用此dblink连接到数据库,默认即为private)
SQL> SHOW USER
USER is "PREP2P"
SQL> create database link p2p_49 connect to p2p identified by p2p using 'orcl';
Database link created.
如果要创建共有连接,则使用create public database link
四、可通过视图查看是否创建成功(user_db_links、all_db_links、dba_db_links),也可以通过实际查询来看创建是否成功。
SQL> select * from s_cust_profile_doc@p2p_49;
PROFILE_ID OBJ_TYPE OBJ_ID CUST_ID CREDITCARDS_TOTAL_NUM CREDITCARDS_NOMAL_NUM CREDITCARDS_LATE_NUM CREDITCARDS_LATE_LONG_NUM CREDITCARDS_GUARANT_NUM HOUSEINGLOAN_TOTAL_NUM HOUSEINGLOAN_LATE_NUM HOUSINGLOAN_HOLD_NUM HOUSE_LATE_LONG_NUM HOUSE_GUARANT_NUM OTHERLOAN_TOTAL_NUM OTHERLOAN_LATE_NUM OTHERLOAN_HOLD_NUM OTHERLOAN_GUARANT_NUM OTHERLOAN_LATE_LONG_NUM CREDITCARDS_M_AMT HOUSINGLOAN_M_AMT VEHICLELOAN_M_AMT STUDENTLOAN_M_AMT OTHERLOAN_M_AMT BALANCE_M_AMT RECENT_APPLY_TIMES RECENT_APPLY_TIMES_DESC BALANCE_SUMMARY CREATE_USER CREATE_DATE MODIFY_USER MODIFY_DATE STATUS REMARK PROFILE_NO PROFILE_DATE SEARCH_DATE ASS_DISPOSE_NUM COMPEN_NUM
--------------------- ---------------- --------------------- --------------------- --------------------- --------------------- -------------------- ------------------------- ----------------------- ---------------------- --------------------- -------------------- ------------------- ----------------- ------------------- ------------------ ------------------ --------------------- ----------------------- ------------------------ ------------------------ ------------------------ ------------------------ ------------------------ ------------------------ ------------------ -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- --------------------- ----------- --------------------- ----------- -------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- ------------ ----------- --------------- ----------
另:
private的没有什么讲头。这种db_link只能由创建db_link的本地用户或者他的pl/sql块来存取。其他的用户都不能存取。
public就比较好了。对所有的用户可见。所有用户都可以使用。
global 当分布式体系中存在多个数据库的话。如果想要在每一个数据库中都可以使用同样的名字来访问数据库a,那在每个数据库中都要创建一个到数据库a的db_link,太麻烦了。所以现在有这个东东。你只要创建一次。所有的数据库都可以使用这个db_link来访问了。要使用这个特性,必须有oracle name server或者ORACLE目录服务器。并且数据库a的参数global_names=true.具体我也没有创建过,没有这个环境。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29802484/viewspace-1368561/
,如需转载,请注明出处,否则将追究法律责任。