Oracle在进行数据复制及集成的方法很多,若使用在线数据复制,则第一步必须是建立DB LINK,也就是建立数据库的通信链路
1、
创建DB LINK的SQL语句如下:
Create (schema) database link linkname connect to username identified by password
using netname
schema: 不指定时,默认为当前用户
linkname: db link的名称
username:远程数据库上的用户名,就是说,你想以远程数据库的哪个用户连接到远程数据库
password:对应上面用户名的口令
netname: 服务名,可以是本地已配好的net服务名,该服务名指向远程数据库服务器,也可以是如下方式
DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = IP ADDRESS)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = NETSERVICENAME(指远程数据库上的))
)
如创建一公共的DB LINK,公共DB LINK就是任何用户都可以使用的,否则就是私有的DB LINK;
Create public database link linkname connect to scott identified by password
using '
DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.10.10)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = dbname)
)'
该语句创建了一个名为linkname 的DB LINK,该LINK使用远程数据库上的SCOTT用户接入,远程数据库服务器的IP地址是10.10.10.10,NET服务名是dbname
当本地参数global_names设置为真时,则LINKNAME应该和要连接的远程数据库名相同(注意是全局名)
否则可以是任何合法名称
数据库全局名的形成:DB_NAME + db_domain+ = db_name.db_domain;
db_domain,db_name都是初始化参数,可在OEM(Oracle Enterprise Console)中看到
创建DBLINK时,ORACLE自动给该LINK加上GLOBAL_NAME
如上例,最后创建出的LINKNAME如下
LINKNAME.GLOBAL_NAME;
2、global_names参数设置
SQL>ALTER SYSTEM SET GLOBAL_NAMES = TRUE / FALSE;
3、GLOBAL_NAME的修改
ORACLE默认的GLOBAL_NAME很长,好象是RDBMS.ORACLE.US.COM?,可以修改该名字
SQL>UPDATE GLOBAL_NAME SET GLOBAL_NAME = 'YOUR GLOBAL_NAME';