0

我正在使用 TNS 名称连接到 Oracle DB。应用程序使用的条目正在使用具有 3 个 DB IP 地址的故障转移方案,这些地址都是虚拟的。

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

假设物理地址为 22.23.24.25,它有 3 个虚拟机: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?

4

0 回答 0