oracle link

      数据库之间的链接是建立在DATABASE LINK上

1:什么是link

    物理上存放于网络的多个ORACLE数据库,逻辑上可以看成一个单一的大型数据库,用户可以通过网络对异地数据库中的数据进行存取,而服务器之间的协同处理对于工作站用户及应用程序而言是完全透明的,开发人员无需关心网络的链接细节、数据在网络节点中的具体分布情况和服务器间的协调工作过程。

补充:

数据库全局名称可以用以下命令查出:
SQL>SELECT * FROM GLOBAL_NAME;
修改可以用以下语句来修改参数值:
SQL>ALTER SYSTEM SET GLOBAL_NAME=TRUE/FALSE;

 2:创建link

CREATE [PUBLIC] DATABASE LINK link_name
CONNECT TO username IDENTIFIED BY password
USING 'zytydic'

 zytydic为本地tnsname.ora中定义的链接串($ORACLE_HOME\network\admin)

   例:

zytydic =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.101)(PORT = 1521))
)
(CONNECT_DATA =
(SID = orcl)
)
)

 也可直接使用括号中的值

CREATE [PUBLIC] DATABASE LINK link_name
CONNECT TO username IDENTIFIED BY password
USING '(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.101)(PORT = 1521))
)
(CONNECT_DATA =
(SID = orcl)
)
) '

 权限问题

注意:创建数据库链接的帐号必须有CREATE DATABASE LINK或CREATE PUBLIC DATABASE LINK的系统权限,用来登录到远程数据库的帐号必须有CREATE SESSION权限。
这两种权限都包含在CONNECT角色中(CREATE PUBLIC DATABASE LINK权限在DBA中)。一个公用数据库链接对于数据库中的所有用户都是可用的,而一个私有链接仅对创建它的用户可用。由一个用户给另外一个用户授权私有数据库链接是不可能的,一个数据库链接要么是公用的,要么是私有的。

 2:查找系统中有哪些link

select owner,object_name from dba_objects where object_type='DATABASE LINK';

 3:使用

查询

SELECT……FROM 表名@数据库链接名;

 同步数据

insert into abroad_agent_bill select * from abroad_agent_bill@temp_link_old_billbj_gbz

 4:删除link

DROP PUBLIC DATABASE LINK link_name

 5:使用时报错

ORA-01017: invalid username/password; logon denied
ORA-02063: 紧接着line(源于DBLINKNAME13)

 解决:

    创建时密码使用双引号括起

猜你喜欢

转载自692088846.iteye.com/blog/2013656
今日推荐