如果想建立对远程数据库的访问方法,可以直接读取远程Oracle的数据,或者直接修改,可以建立dblink。dblink可以是公用连接PUBLIC或者私有连接PRIVATE。这一点和同义词很相像。
创建dblink的语法很简单,但要求用户具备创建dblink的权限。权限可以由管理员赋予。
创建dblink的语法如下:
1>已配置本地服务:
CREATE DATABASE LINK数据库链接名CONNECT TO 用户名 IDENTIFIED BY 密码 USING ‘本地配置的数据的实例名’;
2>未配置本地服务:
CREATE DATABASE LINK数据库链接名CONNECT TO 用户名 IDENTIFIED BY 密码 USING '(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = ip)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = xxx)
)
)';
host=数据库的ip地址,service_name=数据库的sid.
有dblink查询远程数据库,最好建立同义词。这样会使查询方便很多。
创建同义词的方法如下:
CREATE SYNONYM同义词名FOR 表名;
CREATE SYNONYM同义词名FOR 表名@数据库链接名;
另外值得一提的是数据库的global_name ,
当global_name的值为true时,那么dblink的数据库连接名要与数据库的global_name相同,否则通过dblink访问远程数据失败。
为了方便起见,我们一般把数据库global_name的boolean值设为false。
查看数据库global_name的值方法如下:
show parameters global_name
修改global_name的值为false:
alter system set global_names=false;