[terry笔记]dblink

dblink在分布式数据库集群中很常见,今天简单的总结一下。

db link 的命名和global_names有关,global_name是数据库全局名称,global_name在你所管理的数据库中要保证唯一。
数据库名称是db_name。数据库名称一般都取得比较短,重名概率高。
所以,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

一、首先在tns文件中创建目标数据库的信息。

# tnsnames.ora Network Configuration File: d:u01product11.2.0dbhome_1
etworkadmin	nsnames.ora
# Generated by Oracle configuration tools.

ORACLR_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
    (CONNECT_DATA =
      (SID = CLRExtProc)
      (PRESENTATION = RO)
    )
  )

TERRY =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = kkterry-PC)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = terry)
    )
  )

gd2 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.199.250)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = good2)
    )
  )
View Code

创建connected user的db link语法:此种方法@gd2,只会返回目标库中scott下面的对象。

create public databas link gd2 connect to scott identified by tiger using 'good2';

创建fixed user的db link语法:此方法@gd2,原库是什么用户,就回读取目标库什么用户。如果目标库没有此用户,会报错ora01017,用户名密码不对。

create public databas link gd2 using 'good2';

public参数指的是是否为私有的。


二、dblink查询:
查看所有的数据库链接,进入系统管理员SQL>操作符下,运行命令:   
SQL>select owner,object_name from dba_objects where object_type='DATABASE LINK';

三、dblink删除:
DROP PUBLIC DATABASE LINK gd2;
DROP DATABASE LINK gd2;

四、dblink使用:
SELECT xxx FROM table_name@dblink_name;
查询、删除和插入数据和操作本地的数据库是一样的

五、同义词配合:
第四点中from emp@toBeJing可以创建同义词来替代:
CREATE SYNONYM 同义词名 FOR 表名;
CREATE SYNONYM 同义词名 FOR 表名@数据库链接名;
如:create synonym bj_scott_emp for emp@toBeJing;
于是就可以用bj_scott_emp来替代带@符号的分布式链接操作emp@toBeJing

原文地址:https://www.cnblogs.com/kkterry/p/3460805.html