ITPub博客

首页 > 数据库 > Oracle > 创建dblink

创建dblink

原创 Oracle 作者:zhangsharp20 时间:2014-12-15 17:04:32 0 删除 编辑
数据库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/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: dblink的类型
请登录后发表评论 登录
全部评论

注册时间:2014-08-12

  • 博文量
    382
  • 访问量
    801408