方法一:
在目前绝大部分数据库有分布式查询的需要。下面简单的介绍如何在oracle中配置实现跨库访问。 
比如现在有2个数据库服务器,安装了2个数据库。数据库server A和B。现在来实现在A库中访问B的数据库。 
第一步、配置A服务器端的tnsnames.ora文件(TNSNAMES.ORA Network Configuration File),该文件存放的位置为: 
$ORACLE_HOME/network/admin/tnsnames.ora 
添加如下行,其中DBLINK为连接名(可自定义),HOST和PORT为数据库侦听的IP及端口,SERVICE_NAME为数据库的SID, 
 代码如下:
MEDIADBLINK =  
 (DESCRIPTION =  
 (ADDRESS_LIST =  
 (ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.0.1)(PORT = 1521))  
 )  
 (CONNECT_DATA =  
 (SERVICE_NAME = db)  
 )  
 )  
 
第二步、在A服务器的一个库中建立B的一个数据的DBLINK。 
 
语法如下:
 
执行如下查询语句,其中MEDIADB为database link名(可自定义),MEDIADBLINK为先前在tnsnames.ora中定义的连接名,  
 dbuser为用户名,password为密码 
 代码如下:
 -- Create database link  
 create database link MEDIADB  
 connect to dbuser identified by password  
 using 'MEDIADBLINK';  
 
第三步.使用链接的数据库 
 
 3.1 查询、删除和插入数据和操作本地的数据库是一样的,只不过表名需要写成“表名@database link名”,如  
 
 select * from table_name@MEDIADB ;  
 
 3.2 也可以为这个表创建一个同义词  
  
 create synonym aaa for table_name@MEDIADB ;  
 
 如下语句的效果和3.1中的一样  
 
 select * from aaa;  
 
 删除同义词的语句为  
 
 drop synonym aaa;
select * from tabname@dcmdb where 1=1; 
方法二:
首先创建数据库链接: 
 代码如下:
CREATE PUBLIC DATABASE LINK 数据链名称 CONNECT TO 登陆用户名 IDENTIFIED BY 密码 USING '(DESCRIPTION = 
 (ADDRESS_LIST = 
 (ADDRESS = (PROTOCOL = TCP)(HOST = 对方Oracle服务器的IP地址)(PORT = 端口号)) 
 ) 
 (CONNECT_DATA = 
(SERVICE_NAME = 对方Oracle服务器服务名) 
 ) 
 )'  
 
其中 数据链名称 为添加到本地Oracle数据库控制台(Oracle Enterprise Manager Console)树节点的服务名 
要查询对方数据库的表TableName语句如下: 
SELECT 字段名 FROM TableName@数据链名称; 
复制表数据: 
insert into 表名(字段名) (SELECT 字段名 FROM TableName@数据链名称); 
查看DBLINK: 
select owner,db_link from dba_db_links; 
删除: 
drop database link dblink名称 
drop public database link dblink名称 
Oracle密码的问题: 
SQL> CREATE USER AAA IDENTIFIED BY 1; 
CREATE USER AAA IDENTIFIED BY 1 
 * 
ERROR 位于第 1 行: 
ORA-00988: 缺少或无效口令 
SQL> CREATE USER AAA IDENTIFIED BY"1"; 
用户已创建                         (编辑:莱芜站长网) 
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! 
                     |