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

求助存储过程动态连接远程数据库的问题
现在有几个数据库,分别是本地数据库(A)和核心数据库(B,C....)
A数据库需要连接到核心数据库进行数据的操作,目前想到的方法是用存储过程来做,但查阅资料都是讲要在
文件下如:
G:/oracle_test/product/10.2.0/db_1/NETWORK/ADMIN/tnsnames.ora
添加:
link =
  (DESCRIPTION=
  (ADDRESS_LIST=
  (ADDRESS = (PROTOCOL = TCP)(HOST = 数据库IP)(PORT = 1521)))(FAILOVER=yes)(LOAD_BALANCE=yes)
  (CONNECT_DATA =(SERVER = DEDICATED)
  (SERVICE_NAME = 数据库SID)(failover_mode=(type=select)(method=basic))
  )
  )
才能操作,由于我有很多个核心数据库要连接,不允许我手动给每一个核心数据库添加link,所以最好的方法是在存储过程中完成连接,不要配置link。有木有什么好的解决方案啊?
PS:我是oracle菜鸟哈,但公司任务,没办法解决,求大神帮忙。

------解决方案--------------------
创建dblink可以不修改tnsnames.ora的。
例如
create database link linkToB
  connect to scott identified by oracle
  using '(DESCRIPTION =
  (ADDRESS_LIST =
  (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.1)(PORT = 1521))
  )
  (CONNECT_DATA =
  (SERVER = DEDICATED)
  (SERVICE_NAME = bylw)
  )
  )';