数据库Database Link 详解说明

一:dblink创建: 

1、已经配置本地服务

create public database link toBeJing 

connect to scott identified by tiger using 'BEJING'

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

 

数据库连接字符串'BEJING'是当前客户端数据库中TNSNAMES.ORA文件里定义的别名名称.可以用NET8 EASY CONFIG或者直接修改TNSNAMES.ORA里定义.

2、直接建立链接

drop public database link toBeJing;

create database link toBeJing

connect to scott identified by tiger

using '(DESCRIPTION =

(ADDRESS_LIST =

        (ADDRESS = (PROTOCOL=TCP)(HOST = X.X.X.X)(PORT = 1521))

      )

      (CONNECT_DATA =

        (SERVICE_NAME = BJORCL)

      )

)';

 

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

其实两种方法配置dblink是差不多的,我个人感觉还是第二种方法比较好,这样不受本地服务的影响。

注意: 假如创建全局dblink,则必须使用systm或sys用户,在database前加public。

 

1.先创建PUBLIC DATABASE LINK,不用指定用户和密码 

scott@TEST>conn system/test

     Connected.

system@TEST>CREATE PUBLIC DATABASE LINK orcl USING 'BEJING';

    Database link created.

 

2.再在各个用户下创建私有DATABASE LINK(同PUBLIC DATABASE LINK名称相同),指定用户和密码

system@TEST>conn scott/tiger

     Connected.

     scott@TEST>CREATE DATABASE LINK orcl CONNECT TO scott IDENTIFIED BY tiger;

     Database link created.

 

实际上相当于: 

CREATE DATABASE LINK orcl USING 'BEJING' CONNECT TO scott IDENTIFIED BY tiger;

 

db link 有3种类型,我这里只讨论其中两种,connected user和fixed user。

connected user,简单来说,连接方数据库以connected的用户来连接远程数据库。

fixed user,简单来说,连接方数据库以fixed(指定的)用户来连接远程数据库。

 

看看创建db link语法,你对这两种类型就比较清楚了。

创建connected  user的db link语法:

create databas link foo connect to scott identified by tiger using 'BEJING' ;

 

创建fixed user的db link语法:

create databas link foo using 'BEJING';

dblink的命名和global_names有关,global_name是数据库全局名称,global_name在你所管理的数据库中要保证唯一。数据库名称是db_name。数据库名称一般都取得比较短,我的习惯一般取长度4个字符,重名概率高。

所以,oracle模仿域名搞出一个global_name,global_name=db_name+db_domain。

有了global_name,就可以实现数据库命名的全局唯一。例:ORCL.REGRESS.RDBMS.DEV.US.ORACLE.COM

数据库全局名称可以用以下命令查出

       SELECT * FROM GLOBAL_NAME;

 

如果global_names=true,那么db link的命名要和远程数据库的global_name相同;

如果global_names=false,那么你可以随便命名db link。

 

查询global_names是true还是false,在pl/sql中的命令窗口(不是sql窗口)执行:show parameter global_names

 

 

二、dblink查询:

 查看所有的数据库链接,进入系统管理员SQL>操作符下,运行命令:   

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

 

 

三、dblink删除:

    DROP PUBLIC DATABASE LINK toBeJing

 

 

四、dblink使用:

    SELECT……FROM表名@数据库链接名;

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

 例:查询北京数据库中emp表数据   select * from emp@toBeJing;

 

 

 

五、同义词配合:

       第四点中from emp@toBeJing可以创建同义词来替代:

       CREATE SYNONYM同义词名FOR 表名;

    CREATE SYNONYM同义词名FOR 表名@数据库链接名;

       如:create synonym bj_scott_emp for emp@toBeJing;

    于是就可以用bj_scott_emp来替代带@符号的分布式链接操作emp@toBeJing

       DB LINK是独立于创建用户(USER_DB_LINKS的USERNAME)起作用的,其他用户无法使用这个连接,无权限也不能删除它。

 

登录乐搏学院官网http://www.learnbo.com/

或关注我们的官方微博微信,还有更多惊喜哦~

转载于:https://my.oschina.net/learnbo/blog/919506

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
二、 注释说明  1. 本注释说明主要用于PL/SQL程序及其它SQL文件,其它可作参考;  2. SQLPLUS接受的注释有三种:   ―― 这儿是注释   /* 这儿是注释 */   REM 这儿是注释  3. 开始注释,类似JAVAK中的开始注释,主要列出文件名,编写日期,版权说明,程序功能以及修改记录:   REM   REM $Header: filename, version, created date,auther   REM   REM Copyright   REM   REM FUNCTION   REM function explanation   REM   REM NOTES   REM   REM MODIFIED (yy/mm/dd)   REM who when - for what, recently goes first  4. 块注释,如表注释,PROCEDURE注释等,同JAVA:   /*   * This table is for TrustPass   * mainly store the information   * of TrustPass members   */  5. 单行注释,如列注释:   login_id VARCHAR2(32) NOT NULL, -- 会员标识 三、 缩进 低级别语句在高级别语句后的,一般缩进4个空格:   DECLARE   v_MemberId VARCHAR2(32),   BEGIN   SELECT admin_member_id INTO v_MemberId   FROM company   WHERE id = 10;   DBMS_OUTPUT.PUT_LINE(v_MemberId);   END;     同一语句不同部分的缩进,如果为sub statement,则通常为2个空格,如果与上一句某部分有密切联系的,则缩至与其对齐:   BEGIN   FOR v_TmpRec IN   (SELECT login_id,   gmt_created, -- here indented as column above   satus   FROM member -- sub statement   WHERE site = 'china'   AND country='cn' )   LOOP   NULL;   END LOOP;   END; 四、 断行 • 一行最长不能超过80字符

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值