ODA-12154 ODP.NET을 사용하여 연결을 시도하는 중 오류 발생
ODA-12154 ODP.NET을 사용하여 연결을 시도하는 중 오류 발생
최신 정보: Wernfried의 답변으로 해결되었습니다.
환경 변수 TNS_ADM 생성IN=D:\oracle\product\12.1.0\dbhome_1\network\admin
Sqlplus는 레지스트리에서 TNS_ADMIN을 읽지만 ODP를 읽습니다.NET 관리 드라이버가 레지스트리를 읽지 않습니다.참고 항목:중국어 문자를 "?"로 반환하는 Odbc 연결
환경 변수가 다음과 같이 설정되어 있는지 확인할 수 있습니다.
string tns_admin = Environment.GetEnvironmentVariable("TNS_ADMIN")
나는 그가 제안한 링크가 어떻게 관련이 있는지 잘 이해하지 못했습니다.
원래 질문:
ODA-12154 ODP.NET을 사용하여 연결을 시도하는 중 오류 발생
코드:
OracleConnection oracleConnection = new OracleConnection();
string connectionString = "User Id=redacted;Password=redacted;Data Source=db6";
oracleConnection.ConnectionString = connectionString;
oracleConnection.Open();
오류:
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> Oracle.ManagedDataAccess.Client.OracleException: ORA-12154: TNS:could not resolve the connect identifier specified ---> OracleInternal.Network.NetworkException: ORA-12154: TNS:could not resolve the connect identifier specified
at OracleInternal.Network.AddressResolution..ctor(String TNSAlias, String instanceName)
at OracleInternal.Network.OracleCommunication.DoConnect(String tnsDescriptor)
at OracleInternal.Network.OracleCommunication.Connect(String
내 tnsnames.ora:
# tnsnames.ora Network Configuration File: D:\oracle\product\12.1.0\dbhome_1\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.
DB6 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = redacted.redacted.com)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = db6)
)
)
LISTENER_DB6 =
(ADDRESS = (PROTOCOL = TCP)(HOST = redacted.redacted.com)(PORT = 1521))
ORACLR_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
(CONNECT_DATA =
(SID = CLRExtProc)
(PRESENTATION = RO)
)
)
sql-plus로 연결:
C:\Users\Derek.Morin\Documents\Visual Studio 2010\Projects\ScriptCode\Oracle>sqlplus redacted/redacted@localhost/db6
SQL*Plus: Release 12.1.0.1.0 Production on Thu Dec 10 09:10:14 2015
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Last Successful login time: Tue Sep 22 2015 09:41:19 -05:00
Connected to:
Oracle Database 12c Release 12.1.0.1.0 - 64bit Production
Wernfried의 논평이 저를 위해 그것을 고쳤습니다.그가 답으로 그것을 게시하기 위해 돌아오지 않았기 때문에 - 저는 그의 댓글로 이것을 끝낼 것입니다.
환경 변수 생성
TNS_ADMIN=D:\oracle\product\12.1.0\dbhome_1\network\admin
sqlplus는 레지스트리에서 TNS_ADMIN을 읽지만 ODP를 읽습니다.NET 관리 드라이버가 레지스트리를 읽지 않습니다.참고 항목: stackoverflow.com/questions/28280883/ … – Wernfried Domscheit '15년 12월 10일 16:24
나는 제프의 의견에 찬성합니다.저는 며칠 동안 이것을 알아내려고 노력했고, 그것이 핵심이었습니다.나는 현존하는 모든 것을 조사했습니다.tnsnames.ora
문제의 서버에 있는 파일, 없는 파일의 이름을 모두 변경했습니다.%ORACLE_HOME/network/admin
그리고 모든 것이 막 작동하기 시작했습니다!
최근에 32비트 Oracle 드라이버를 제거하고 64비트 드라이버를 다시 설치했습니다.짧은 기간 동안, 유일한.tnsnames.ora
file is sample file (sample subdirectory에 있는)아마도 나쁜 링크(등록부에 있어야만 했던, 나는 그것을 가지고 있었습니다.TNS_ADMIN
환경 변수)가 그 시점에서 위조되었습니까?확실하지는 않지만 변수가 일부 사람들에게 도움이 되는 것처럼 보이지만 이 문제와 관련하여 물이 매우 탁할 수 있습니다.
참고: 저는 ODP를 사용하는 SSRS 프로젝트에서 이 문제를 겪었습니다.네트와 나의 경우 ODP.Net이 기본 TNS를 "C:"로 설정했습니다.\Program Files(x86)\Oracle Developer Tools for VS2015\network\admin"(다른 용도의 TNS_ADMIN 환경 변수가 있음에도 불구하고).저는 그 디렉토리로 가서 샘플 tnsnames.ora와 sqlnet.ora 파일의 이름을 다른 이름(예: junk-tnsnames.ora)으로 바꿨습니다.미쳤어요!이것이 다른 누군가에게 도움이 되기를 바랍니다.
언급URL : https://stackoverflow.com/questions/34206659/ora-12154-error-trying-to-connect-using-odp-net
'source' 카테고리의 다른 글
null 값으로 날짜 열을 인덱싱하는 방법은 무엇입니까? (0) | 2023.08.24 |
---|---|
JavaScript에서 '1'을 '0001'로 변환 (0) | 2023.08.24 |
자바스크립트에서 날짜 시간을 얻는 방법은 무엇입니까? (0) | 2023.08.24 |
메모리 캐시 범위 세션 또는 응용 프로그램이 광범위합니까? (0) | 2023.08.24 |
PowerShell을 사용하여 여러 CSV 파일을 하나로 병합 (0) | 2023.08.24 |