问题描述
我正在开发一个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 (将#修改为@)