从服务器物理地址获取虚拟机IP地址

问题描述

我正在使用TNS名称连接到Oracle DB。应用程序使用的条目正在使用具有3个DB IP地址(均为虚拟)的故障转移方案。

我试图获取并显示这些数据库IP地址,但是当我使用从Oracle连接对象获得的主机名时,就会获得数据库服务器的物理IP地址。

比方说物理地址22.23.24.25,它具有3个VM:22.23.24.50,.51和.52。

在TNSNAMES.ORA文件中,我有:

ABCD = 
(DESCRIPTION =
    (ADDRESS_LIST = 
      (FAILOVER = off)
      (LOAD_BALANCE = off)
      (ADDRESS = (PROTOCOL = TCP)(HOST =22.23.24.50)(PORT = 1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST =22.23.24.51)(PORT = 1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST =22.23.24.52)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = abcd)
      (FAILOVER_MODE =
        (TYPE = SELECT)
        (METHOD = BASIC)
      )
    )
)

我尝试过:

public static string GetDBHost()
{
    string sHostName = string.Empty;
    OracleDbContext dbContext = new OracleDbContext();

    try
    {
        dbContext.Open();
        sHostName = dbContext.DbConnection.HostName;
    }
    catch (Exception e)
    {
    }
    finally
    {
        dbContext.Close();
    }
    return sHostName;
}

// Calling above method:
string sDBHostName = ServerData.GetDBHost();
IPAddress[] ipadd = Dns.GetHostAddresses(sDBHostName); <--- returns 22.23.24.25

是否有一种使用22.23.24.25来获取VM IP的方法?

解决方法

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

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

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

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...