Oracle-远程数据库连接的创建和问题解析

本文介绍了Oracle数据库间DB Link的创建步骤,包括在sysdba用户下操作、配置tnsnames.ora文件、检查数据库状态和服务名、关闭防火墙、查看global_name参数以及确认Oracle版本是否支持高级复制功能。通过创建、测试和删除数据库链接,实现远程数据库的连接与操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下午觉得无聊,听见一个经理再说db link ,一想,我不知道啊,到时是啥呢;

网上一查,db link,是数据库之间的链接;

以下,我总结了一下db link的创建过程和碰到bug的解析过程;

一、准备工作

以下操作必须在sysdba的用户权限下操作

1、要创建一个db link,必须要知道涉及的数据库都是正常运行的,也就是服务是开启的;

2、需要为每个涉及的数据库在本地建立链接字符串(tnsnames.ora)

例:

ZXTWSKP192.168.13.24 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.13.24)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = zxtwskp)
    )
  )

ZXTWSKP192.168.0.55 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.55)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = zxtwskp)
    )
 )

3、环境:两个数据库均建立在XP上,ORACLE的版本均是Oracle9i;要注意关闭两台计算机上的Windows的防火墙,否则,会出现ping不通,oracle就连接不上了的情况;

4、如何返回数据库的global_name?

执行select * from global_name;

192.168.0.55的global_name为zxtwskp.us.oracle.com;

192.168.13.24的global_name为zxtwskp.us.oracle.com;

5.如何查看global_name参数是true还是false?

SQL>show parameter global_name;

执行的结果如下:
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
global_names                         boolean     false

表示该参数是false.

也可以通过查看v$option视图,如果其中Advanced replication为TRUE,则支持高级复制功能;

简单功能,不管是否两个数据库的global_name的value不同也没有关系

6、查看Oracle的版本是否支持同步功能?
SQL>select * from v$option where PARAMETER='Advanced replication'语句,
如何返回值为True,那么就是支持,否则就是不支持。在两个数据库中都是检查是否支持才行。

 建立步骤:
1、  链接字符串即服务名,首先在本地配置一个服务名,地址指向远程的数据库地址,服务名取为将来你要使用的数据库链名:
   create database link databaseLinkName    connect  to  userName  identified by password   using databaseServiceName

例:create database link ZXTWSKP.US.ORACLE.COM connect to bjwskp identified by bjwskp using 'ZXTWSKP192.168.0.55';

错误如下:

ORA-02082: a loopback database link must have a connection qualifier

这是因为:

本机的global_name和databaseLinkName相同,

把databaseLinkName该成和global_name不相同的名称就可以了。

应改是:create database link cszxtwskp  connect to bjwskp identified by bjwskp using 'ZXTWSKP192.168.0.55';

2、测试连接是否成功:

select    * from  wskp_dj_nsrxx@cszxtwskp ;

如果查询有结果,就说明连接成功;

可以进行相关的DML,DDL操作了

3、如果你不要使用了,记得drop

SQL>drop database link cszxtwskp;

 

 


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值