两台ORACLE服务器之间的数据相互查询的方法:
采用DBLINK+SYNONYM(同义词)
<一>先创建DB间的DBLINK(在使用方创建)
创建可以采用两种方式:
1、已经配置本地服务
create public database
link fwq12 connect to fzept
identified by neu using 'fjept'
CREATE DATABASE LINK数据库链接名CONNECT TO 用户名 IDENTIFIED BY 密码 USING ‘本地配置的数据的实例名’;
2、未配置本地服务
create database link linkfwq
connect to fzept identified by neu
using '(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.142.202.12)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = fjept)
)
)';
注:host=数据库的ip地址,service_name=数据库的ssid。
例:
create public database link "test_dblink"
using '10.190.102.61:1521/along' ---using后面为‘本地NET服务名’
最后,使用DBLINK查询远端数据库里的表
例:
SELECT …… FROM 表名@数据库链接名;
注:@数据库链接名即为建DBLINK时的DBLINK名
查询、删除和插入数据和操作本地的数据库是一样的,只不过表名需要写成“表名@dblink服务器”而已
删除dblink:DROP PUBLIC DATABASE LINK linkfwq。
如果创建全局dblink,必须使用systm或sys用户,在database前加public
<二>创建同义词SYNONYM
CREATE SYNONYM 同义词名 FOR 用户.表名
CREATE SYNONYM 同义词名 FOR 用户.表名@数据库链接名
例:(1)。CREATE PUBLIC SYNONYM GLB_FLASH FOR MES.GLB_FLASH
(2)。CREATE PUBLIC SYNONYM CT_LINES FOR MES.CT_LINES@test_dblink
创建后查询数据时直接使用同义词代替FOR后的数据源
(如。MES.GLB_FLASH(用户/用户表)/CT_LINES@test_dblink(表@dblink名))
最后,本机ORACLE使用同义词查询出另一台ORACLE DB的数据,并且是直接使用对方表名来查询数据。
select * from CT_LINES;