本文共 2671 字,大约阅读时间需要 8 分钟。
http://blog.csdn.net/zwhfyy/archive/2009/07/14/4348286.aspx
一、dblink创建 (两种方式): 1、已经配置本地服务 create public database link toBeJing connect to scott identified by tiger using 'BEJING' 数据库连接字符串'BEJING'是当前客户端数据库中TNSNAMES.ORA文件里定义的别名名称.可以用NET8 EASY CONFIG或者直接修改TNSNAMES.ORA里定义. 2、直接建立链接 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' ; db link 的命名和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)起作用的,其他用户无法使用这个连接,无权限也不能删除它。
[@more@]来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7916042/viewspace-1033777/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/7916042/viewspace-1033777/