首页 文章

C#连接到Oracle DataBase错误ORA-12545:连接失败,因为目标主机或对象不存在

提问于
浏览
1

我想从C#连接到Oracle数据库,但我不能因为ORA-12545:连接因为目标主机或对象不存在而失败,因此我怎么能这样?

C# code

string strConn = "Data Source =(DESCRIPTION =" +
                                 "(ADDRESS = (PROTOCOL = TCP)(HOST = DESKTOP-EIQ5MRF)(PORT = 1521))" +
                                 "(CONNECT_DATA =" +
                                 " (SERVER = DEDICATED)" +
                                 "(SERVICE_NAME = XE)" +
                                 ")" +
                                 ");User Id =system;password=bluesky;";
                OracleConnection conn = new OracleConnection(strConn);

                conn.Open();
                conn.Close();

listener.ora

SID_LIST_LISTENER =(SID_LIST =(SID_DESC =(SID_NAME = PLSExtProc)(ORACLE_HOME = C:\ oraclexe \ app \ oracle \ product \ 11.2.0 \ server)(PROGRAM = extproc))(SID_DESC =(SID_NAME = CLRExtProc)(ORACLE_HOME) = C:\ oraclexe \ app \ oracle \ product \ 11.2.0 \ server)(PROGRAM = extproc)))LISTENER =(DESCRIPTION_LIST =(DESCRIPTION =(ADDRESS =(PROTOCOL = IPC)(KEY = EXTPROC1))(ADDRESS = (PROTOCOL = TCP)(HOST = DESKTOP-EIQ5MRF)(PORT = 1521))))DEFAULT_SERVICE_LISTENER =(XE)tnsnames.ora XE =(DESCRIPTION =(ADDRESS =(PROTOCOL = TCP)(HOST = DESKTOP-EIQ5MRF)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = XE)))EXTPROC_CONNECTION_DATA =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL = IPC)(KEY = EXTPROC1)))(CONNECT_DATA =(SID = PLSExtProc) (PRESENTATION = RO)))ORACLR_CONNECTION_DATA =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL = IPC)(KEY = EXTPROC1)))(CONNECT_DATA =(SID = CLRExtProc)(PRESENTATION = RO)))

1 回答

  • 0

    错误

    ORA-12454:连接失败,因为目标主机或对象不存在

    这意味着您有连接字符串问题,再次检查所有访问数据,机器名称并尝试使用此连接字符串,您忘记添加"ADDRESS_LIST",在此处检查doc. .

    使用 ODP.NET 而不是 tnsnames.ora ,应该是这样的

    var sampleConn= @"Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=    (PROTOCOL=TCP)(HOST=MyHost)(PORT=MyPort)))
                        (CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=MyOracleSID)));
                         User Id=myUsername;Password=myPassword;"
    

    所以你的连接字符串应该是这样的

    string strCon =@"Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=DESKTOP-EIQ5MRF)(PORT=1521)))
                                 (CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=XE)));
                                 User Id = system; Password = bluesky; ";
    

相关问题