我正在尝试使用我在几个地方找到的以下代码来阅读TNSNames.ora文件。
OracleClientFactory factory = OracleClientFactory.Instance;
if (factory.CanCreateDataSourceEnumerator)
{
OracleDataSourceEnumerator dsenum = factory.CreateDataSourceEnumerator() as OracleDataSourceEnumerator;
DataTable dt = dsenum.GetDataSources();
foreach (DataRow row in dt.Rows)
{
Console.WriteLine(dt.Columns[0] + " : " + row[0]);
Console.WriteLine(dt.Columns[1] + " : " + row[1]);
Console.WriteLine(dt.Columns[2] + " : " + row[2]);
Console.WriteLine(dt.Columns[3] + " : " + row[3]);
Console.WriteLine(dt.Columns[4] + " : " + row[4]);
Console.WriteLine("--------------------");
}
}
TNSNames.Ora条目如下所示
PDB01= (DESCRIPTION_LIST= (LOAD_BALANCE=OFF)(FAILOVER=ON)
(DESCRIPTION = (CONNECT_TIMEOUT=3)(RETRY_COUNT=1)
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = server1.domain.com)(PORT = 1648)))
(CONNECT_DATA = (SERVICE_NAME = PDB01_SRV)))
(DESCRIPTION = (CONNECT_TIMEOUT=3)(RETRY_COUNT=1)
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = server2.domain.com)(PORT = 1648)))
(CONNECT_DATA =(SERVICE_NAME = PDB01_SRV))))
但是,我发现GetDataSources
方法始终只返回第一个数据源(server1.domain.com)而不是第二个数据源(server2.domain.com)。知道为什么以及如何获得两者?它不理解" DESCRIPTION_LIST"?
这是输出:
InstanceName : PDB_01
ServerName : server1.domain.com
ServiceName : PDB01_SRV
Protocol : TCP
Port : 1648
--------------------
ORA文件中的两个条目中只有一个。
我的目的是解析TNSNames.ora文件并获取其内容。