我正在尝试通过电子钱包连接到供应商的数据库。为此,供应商提供了一个钱包 zip 文件,其中包含两个文件(一个 .ora 文件和一个 .sso 文件)。 zip 文件包含 tnsnames.ora 和 cwallet.sso
首先,我安装了 Oracle 客户端版本 19.0 Home1,它自动创建了一个名为 sqlnet.ora 的文件。我将文件 tnsnames.ora 复制到 sqlnet.ora 创建的同一文件夹中,并尝试了不同的 wsys 来连接数据库,但每次尝试都失败了。我尝试以本链接中解释的类似方式实施,但收到“TNS:失去联系”、“TNS:无法解析指定的连接标识符”的错误。
我尝试了指定 here 的解决方案,但最终出错了。最后,现在的错误是“连接失败,因为目标主机或对象不存在”。连接详细信息在 tnsnames 中指定。 ora 包含服务名和主机名。我在 sqlnet.ora 文件中添加了钱包位置以及以下代码:
SSL_CLIENT_AUTHENTICATION = FALSE
SSL_VERSION = 1.2
SSL_CIPHER_SUITES = (SSL_RSA_WITH_AES_256_CBC_SHA)
SSL_SERVER_DN_MATCH = ON
C#中的连接代码如下:
//string strCon = "User Id =XXXX;Password=XXXXXXX;Data Source=(DESCRIPTION =(ADDRESS=(PROTOCOL=TCP)(HOST=XXXXXXXX)(PORT=2460))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=XXXX))" +
// "(SECURITY=(SSL_SERVER_CERT_DN='C=US,ST=Washington,L=Seattle,O=Amazon.com,OU=RDS,CN=mcsldb01.ckc6ued9hacf.ap-south1.rds.amazonaws.com')));";
using (OracleConnection con = new OracleConnection(strCon))
//using (OracleConnection con = new OracleConnection(@"Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=XXXXXXXX)(PORT=2460)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=XXXX)));User Id=XXXX;Password=XXXXXXXX;"))
//using (OracleConnection con = new OracleConnection(cntn))
{
using (OracleCommand cmd = con.CreateCommand())
{
try
{
//TNS_ADMIN and wallet directory entries can be entered in the app.config file.
con.Open();
Console.WriteLine("Successfully connected to Oracle Autonomous Database");
//Retrieve database version info
cmd.CommandText = "SELECT BANNER FROM V$VERSION";
OracleDataReader reader = cmd.ExecuteReader();
reader.Read();
Console.WriteLine("Connected to " + reader.GetString(0));
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
Console.ReadLine();
}
}
}
请提出任何解决方案。我哪里出错了?无法继续进行。
答案 0 :(得分:0)
猜测,它可能是一个连接钱包,而不是已提供的 SSL 钱包,即只是一种隐藏用户名和密码的机制。如果是这种情况,连接将类似于:
new OracleConnection(@"Data Source=NAME_IN_TNSNAMES;User Id=/"))
其中 NAME_IN_TNSNAMES 映射到 tnsnames.ora 文件中的条目。
此处的示例(从 SQL Plus 的角度)
https://connor-mcdonald.com/2015/09/21/connection-shortcuts-with-a-wallet/