分布式Oracle的database link --建立数据库间的通迅通道
url:http://hi.baidu.com/lgh_boffin/blog/item/2ff4f33872b4eb2a97ddd886.html
2009年07月26日 星期日 22:24
Oracle的database link --建立数据库间的通迅通道
数据库链接定义从一个Oracle数据库到另一个数据库的单行通信通道。
建立链接前要先有到远程数据库的命名服务(连接字符串),就是tnsnames.ora中描述的那个,如远程数据库SID名 'ora10g'
[测试] cmd:tnsping ora10g
Attemping to contact(...) OK (810 msec) // 说明对远程数据库ora10g可访问。
创建数据库链接的语法分为 public链接 和 私有链接;
public链接创建语法:
CREATE PUBLIC DATABASE LINK org10g USING 'org10g';
其中 org10g 必须是远程数据库的全局名(SID), ' org10g ' 就是到远程的连接字符串。
全局名可以通过远程登陆数据库执行SQL:
SELECT * FROM global_name@ora10g 查看到.
删除public link :
drop public database link linkname;
[注意]登陆名口令就是当前登陆本机的用户名和口令。也就是如果你用的是public链接,那么在远程就要有一个和本机相同的用户/口令才行。如:你以aa/111登录本机,然后执行
SELECT * FROM bb@ora10g;
那么对远程数据bb的访问用户为aa口令为11
也就是在本机和远程机上都有用户aa口令都为11才能执行成功!
私有链接创建语法:
CREATE DATABASE LINK ora10g CONNECT TO system IDENTIFIED BY aa;
这就建立了system的私有链接。
私有链接和public链接的差别就是登录名口令的限制。
即你不管用什么用户登录本机,执行
SELECT * FROM bb@ora10g;
访问远程机数据bb的用户和口令都为system/aa
建好的数据链接放在系统表SYS.link$表中
删除私有 link :
drop database link linkname;
或者: 当然,直接删除SYS.link$表中的记录一样可行。
创建语句: create database link REMOTE.US.ORACLE.COM 信息: 查询远程数据库用户表的内容:
ora-22992 通过DBLINK 访问远程CLOB表问题(转载) 在本地用select语句访问远程,如果远程表有CLOB字段的话则会有错:ora-22992;
通过临时表从DBLink中获取Blob对象2006-12-05 20:37做系统集成时,通过Database Link共享数据是不错的选择。不过真正使用DBLink时却碰到一个不小的问题:从远程数据库上查询Blob字段时总返回ORA-22992错误,如下: |