日期:2014-05-17  浏览次数:20912 次

怎样一条SQL语句,查询两个服务器??
有A,B,C三台机器,能互相ping

C装的是o9i客户端

A装的是oracle10g服务器端   数据库名:AAA

B装的是oracle9i服务器端     数据库名:BBB

想在C机器上,进行查询

想实现,如

select   AAA.tab1.id   ,   BBB.tab1.id     from   AAA.tab1   inner   join   BBB.tab1  
where   AAA.tab1.id=BBB.tab1.id


应该如何去配置服务器???

具体步骤详细些

请高手指教

------解决方案--------------------
相同服务器下的不同数据库,好像用@dblink...;
但不同服务器的不同数据库,我先前也问过类似的问题,好像没有得到好的答案,
后来被csdn当过期贴给删了。我当初的问题是:如何通过一个服务器的db连接另一个服务器的db?

楼主再查查吧!理论上应该可以的。
------解决方案--------------------
楼主的需求实际上需要在服务器上实现配置,再登录服务器进行查询。
具体是通过建立db_link来实现,步骤如下:
1、如果是登录A端服务器查询B端服务器的数据,需要在A端服务器配置tnsname,及在A端服务器建立连接B端服务器的db_link;
2、同理,如果是登录B端服务查询A端服务器的数据,需要在B端服务器配置tnsname,及在B端服务器建立连接B端服务器的db_link;
3、上述都建成功后,登录A端服务器,查询B端服务器数据:
select aaa.tab1.id,bbb.tab1.id from tab1 aaa,tab1@db_link_name bbb
where aaa.id=bbb.id
------解决方案--------------------
1.需要在创建dblink 的DB上配置好tnsname.ora , 把那个被连接的db信息加入进去:
TEST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.36.183)(PORT = 1524))
)
(CONNECT_DATA =
(SERVICE_NAME = test)
)
)

2.查询系统参数global_name,如果为True,实例名必须同名;如果为False,则可以不同名
SQL> show parameters global_name; 
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
global_names boolean FALSE

3、创建数据库链接,
SQL> create public database link link_SID connect to user identified by password using 'SID ';
link_SID:连接名
 user:目标数据库用户名
 password:目标数据库密码
 SID:目标数据库实例名

4.使用Link查询
SQL> select * from emp@beijing;
这样就可以把深圳和北京scott用户的数据做成一个整体来处理。

5、建立同义词,为了使有关分布式操作更透明,ORACLE数据库里有同义词的对象synonym
SQL> create synonym bjscottemp for emp@beijing;
于是就可以用bjscottemp来替代带@符号的分布式链接操作emp@beijing。

6、查看所有的数据库链接,进入系统管理员SQL> 操作符下,运行命令:
SQL> select owner,object_name from dba_objects where object_type= 'DATABASE LINK ';

7、查看数据库连接
sql> select owner, db_link from dba_db_links;
ower db_link
public TEST.US.ORACLE.COM

8、删除数据库连接先从第三步中查看数据库连接,取得其db_link的名称
sql> drop public database link TEST.US.ORACLE.COM
数据库连接巳丢弃
------解决方案--------------------
dblink 创建和使用
create public database link AA
connect to USER
identified by PASSWORD
using 'aa_link '

select * from table@aa_link