首页 > 解决方案 > AWS Oracle RDS:ORA-12560:TNS:协议适配器错误

问题描述

我已将使用Oracle的本地 .NET MVC 和 WebAPI应用程序移至 AWS 云。在所有条件相同的情况下,我只是将连接字符串更改为引用RDS Oracle

我的设置文件中有以下连接字符串:

<add key="OracleDatabaseConnectionString" value='Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=db-rds.uryrt6fhe.rds.amazonaws.com)(PORT=1526))(CONNECT_DATA=(SID=db-rds)));' />

但是,我得到以下信息:

ORA-12560: TNS:Protocol adapter error

使用RDS Oracle而不是本地 Oracle时如何解决这个问题?

(在Oracle SQL Developer中,我可以成功连接..那么为什么不使用上面的连接字符串呢?)

标签: .netoracleamazon-web-servicesamazon-rds

解决方案


该错误肯定与打开与 oracle rds 实例的连接有关(有一次我调查了 DNS、LDAP 等,只是为了删除所有变量)。

此连接字符串仅适用于本地 oracle

<add key="UserLogin" value="User Id=prodabc;Password="pdw$7jhw@1;" />
<add key="OracleDatabase_onprem" value="Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.2.2.87)(PORT=1526))(CONNECT_DATA=(SID=oradb)));" />

在我的代码中,我构造了与数据库的连接,如下所示:

var conn = Config.OracleDatabase_onprem;
var usr = Config.UserLogin;
OracleConnection oraConn = new OracleConnection(string.Format("{0}{1}",conn, usr)

以下连接字符串适用于 oracle rds适用于本地 oracle

<add key="UserLogin" value="User Id=prodabc;Password=pdw$7jhw@1;" />
<add key="OracleDatabase_cloud" value="Data Source=db-rds.uryrt6fhe.rds.amazonaws.com:1526/oradb" />

在我的代码中,我构造了与数据库的连接,如下所示:

var conn = Config.OracleDatabase_onprem;
var usr = Config.UserLogin;
OracleConnection oraConn = new OracleConnection(string.Format("{0}{1}",str, usr,conn)

仅在本地

"Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.2.2.87)(PORT=1526))(CONNECT_DATA=(SID=oradb)));User Id=prodabc;Password=pdw$7jhw@1;"

ORACLE RDS 和内部部署

"User Id=prodabc;Password=pdw$7jhw@1;Data Source=db-rds.uryrt6fhe.rds.amazonaws.com:1526/oradb"


推荐阅读