从tnsnames.ora获取数据库服务器IP

问题描述

我正在开发一个Web应用程序,该应用程序将部署在各个应用程序服务器上,每个服务器都连接到不同的Oracle DB。数据库连接在每个应用程序服务器的tnsnames.ora文件中指定。 另外,每个tns名称条目都使用多个数据库IP地址来处理故障转移。

ABCD = 
  (DESCRIPTION = 
    (ADDRESS_LIST = 
      (FAIlovER = on) 
      (LOAD_BALANCE = off) 
      (ADDRESS = (PROTOCOL = TCP)(HOST = 1.2.3.4)(PORT = 1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = 1.2.3.5)(PORT = 1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = 1.2.3.10)(PORT = 1521))
    ) 
    (CONNECT_DATA = 
      (SERVICE_NAME = abcd) 
      (FAIlovER_MODE = 
        (TYPE = SELECT) 
        (METHOD = BASIC) 
      ) 
   ) 
) 

我正在尝试找到一种方法获取应用服务器当前正在使用的数据库的IP地址。

我到处搜索,但找不到解决方案,坦率地说甚至都不知道它是否可行。

我可以执行:

netstat -a | findstr ":1521"

TCP    10.20.30.40:52707     Blah1:1521     ESTABLISHED
TCP    10.20.30.40:57022     Blah2:1521     ESTABLISHED
TCP    10.20.30.40:57024     Blah3:1521     ESTABLISHED

查找与端口1521建立的所有连接,Oracle DB使用该连接。然后,我应该可以执行nslookup来获取Blah1,Blah2和Blah3的IP地址。

我可能必须使用应用程序(ABC)使用的tns条目名称来解析tnsnames.ora文件;然后比较我从nslookup获得的IP,看看哪个匹配。

有内置的方法吗?有没有人遇到这种情况并设法解决呢? 如何确定应用程序连接到的是1.2.3.4还是1.2.3.5或1.2.3.10?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)