分类: Oracle
2012-08-13 09:38:29
database link是定义一个数据库到另一个数据库的路径的对象,database link允许你查询远程表及执行远程程序。在任何分布式环境里,database都是必要的。另外要注意的是database link是单向的连接。
关于创建和管理DBLINK:2.直接建立链接
HOST=数据库的IP地址,SERVICE_NAME=数据库的SID。
3.DBLINK查询
查看所有的数据库链接,进入系统管理员SQL>操作符下,运行命令:
4.DBLINK删除
5.DBLINK使用
SELECT …… FROM表名@数据库链接名;
查询、删除和插入数据和操作本地的数据库是一样的,只不过表名需要写成“表名@DBLINK服务名”而已。 例:查询北京数据库中emp表数据 select * from ;
6.使用同义词
CREATE SYNONYM同义词名FOR 表名;
CREATE SYNONYM同义词名FOR 表名@数据库链接名;
如:create synonym bj_scott_emp for ;
于是就可以用bj_scott_emp来替代带@符号的分布式链接操作
7.用户类型
DBLINK有3种类型,Connected user、Fixed user和Current user。
Connected user,当创建database link的时候没用CONNECT TO username指定固定的user的时候,当前用户的登陆信息将会被用来验证登陆远程数据库,如果本地用户是SYSTEM的话那么登陆远程数据库的用户也是SYSTEM。
注意:Connected user不一定是建立database link的用户,任何一个可以使用该database link的用户都可以是Connected user。
Fixed user,在建立database link的时候如果指定了用户名/密码时,所有使用使用使用该database link的用户,不管是否是建立database link的用户,都将使用指定的用户去登陆远程的数据库。
创建connected user的db link语法:
8.
创建全局dblink1.先创建PUBLIC DATABASE LINK,不用指定用户和密码
2.
再在各个用户下创建私有DATABASE LINK(同PUBLIC DATABASE LINK名称相同),指定用户和密码实际上相当于:
CREATE DATABASE LINK topincdb USING 'PINCDB' CONNECT TO pin62 IDENTIFIED BY pin62;
注:如果创建全局dblink没有PUBLIC关键字,则创建私有DATABASE LINK后,应用DBLINK时,会提示找不到DATABASE LINK描述信息。
9.DBLINK 命名
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。