当前所在位置:珠峰网资料 >> 计算机 >> Oracle认证 >> 正文
关于databaselink的用法
发布时间:2010/12/1 16:52:39 来源:www.xue.net 编辑:城市总裁吧
  可以通过在A库设置指向B库的database link来直接访问B库的数据
  语法
  create [public] database link b_lk connect to userA identified by xxx using ’tnsname’
  其中,如果省略public则创建的是private的连接,只能当前所有者可以使用这个link
  使用connect to user identified by xxx则所有通过dblink的用户在访问B库时都使用userA这个用户
  b_lk指的是database link的名字,如果A库的global_names=true,则这个名字一定要使用B库的global_name.在b库执行select * from global_name可以得到。否则建立db link的时候不会报错,但是在执行查询时会报错
  ORA-02085: database link b_lk connects to b.world.COM
  tnsname指的是A库的tnsnames文件中配置的b库名称
  也可以直接使用以下的语句代替
  USING ’(DESCRIPTION =
  (ADDRESS_LIST =
  (ADDRESS = (PROTOCOL = TCP)(HOST = b.world.COM)(PORT = 1521))
  )
  (CONNECT_DATA =
  (SERVICE_NAME = b)
  )
  )’;
  a库使用dblink访问b库时比如select * from table@b_lk默认会在a库生成一个事务,可以查询v$transaction得到。有三种方法来控制这个事务
  1.查询后执行rollback或者commit
  2.查询后关闭link :alter session close database link b_lk
  SQL> alter session close database link b_lk;
  ERROR:
  ORA-02080: database link is in use
  SQL> rollback;
  Rollback complete.
  SQL> alter session close database link b_lk;
  Session altered.
  注意:在rollback因为dblink查询产生的事务前,无法关闭dblink。关闭后可以再次执行基于dblink的查询
  3.set transaction read only;让事务只读,dblink将不产生事务,但是也限制了同一个session下对本地库的写操作
  注意:有了dblink后,可以执行对b库的insert等dml操作,有安全隐患,如何控制只能对b库进行读操作呢?
广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved