两台不同的数据库服务器,从一台数据库服务器的一个用户读取另一台数据库服务器下的某个用户的数据,这个时候可以使用dblink。
例如:数据库服务器A,数据库服务器B,数据库客户端C;通过客户端C连到A,在A上操作访问B。
1、在数据库客户端C的tnsnames中配置数据库服务器A的服务
LMISDX_LOCAL=
(DEscrīptION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.11)(PORT = 1521))
(CONNECT_DA TA =
(SERVER = DEDICATED)
(SERVICE_NAME = LMISdx)
)
)
2、这样就可以通过客户端访问到数据库A的用户
3、在数据库服务器A的tnsnames中配置数据库服务器B的服务
LMISSD=
(DEscrīptION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.123)(PORT = 1521))
(CONNECT_DA TA =
(SERVER = DEDICATED)
(SERVICE_NAME = LMIS)
)
)
4.通过客户端C访问到数据库A的用户,在A上创建数据库链接
-- Create database link
create publicdatabaselink LMIS_SDTEST
connectto LMIS_SDTEST identified by ***
using'LMISSD';
Create DATABASE LINK数据库链接名CONNECT TO 用户名 IDENTIFIED BY 密码 USING ‘本地配置的数据的实例名’;
5、查询远端数据库里的表(通过客户端C登陆到数据库服务器A访问数据库B)
Select …… FROM 表名@数据库链接名;
SELECT * FROM SPKFK@LMIS_SDTEST
例如:数据库服务器A,数据库服务器B,数据库客户端C;通过客户端C连到A,在A上操作访问B。
1、在数据库客户端C的tnsnames中配置数据库服务器A的服务
LMISDX_LOCAL=
(DEscrīptION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.11)(PORT = 1521))
(CONNECT_DA
(SERVER = DEDICATED)
(SERVICE_NAME = LMISdx)
)
)
2、这样就可以通过客户端访问到数据库A的用户
3、在数据库服务器A的tnsnames中配置数据库服务器B的服务
LMISSD=
(DEscrīptION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.123)(PORT = 1521))
(CONNECT_DA
(SERVER = DEDICATED)
(SERVICE_NAME = LMIS)
)
)
4.通过客户端C访问到数据库A的用户,在A上创建数据库链接
-- Create database link
create publicdatabaselink LMIS_SDTEST
connectto LMIS_SDTEST identified by ***
using'LMISSD';
Create DATABASE LINK数据库链接名CONNECT TO 用户名 IDENTIFIED BY 密码 USING ‘本地配置的数据的实例名’;
5、查询远端数据库里的表(通过客户端C登陆到数据库服务器A访问数据库B)
Select …… FROM 表名@数据库链接名;
SELECT * FROM SPKFK@LMIS_SDTEST
注意:创建是很简单,但是在使用中后台却出现锁,查看这个锁的方法可以去console中看到或者查询数据库。每次使用dblink查询的时候,均会与远程数据库创建一个连接,dblink应该不会自动释放这个连接,如果是大量使用dblink查询,会造成web项目的连接数不够,导致系统无法正常运行,导致系统无正常运行。
http://www.51testing.com/?uid-194762-act