ASP.NET / Oracle 문제:TNS에서 지정한 연결 식별자를 확인할 수 없습니다.
ASP의 로컬 복사본을 가지고 있습니다.Visual Studio 2010에서 실행되는 NET 웹 애플리케이션.그 코드는 내 개발 환경에서 실행되는 코드와 정확히 복제된 것입니다.
ASP를 통해 Oracle 데이터베이스에 연결하려고 할 때NET, "TNS에서 지정한 연결 식별자를 확인할 수 없습니다."라는 메시지를 던집니다.이상한 것은 이 데이터베이스가 제 TNSNAME에 있다는 것입니다.ORA 파일과 TNSPING 또는 Microsoft Data Link를 사용하여 연결하면 잘 작동합니다.
Oracle 디렉토리의 권한을 수정하려고 했지만 도움이 되지 않는 것 같습니다.
오라클 데이터베이스 클라이언트(x86 또는 x64)를 설치했는지 확인합니다.
Oracle bin 폴더를 사용하도록 PATH를 구성했는지 확인합니다.
PATH=C:\Oracle\product\11.2.0\client_1\bin
tnsnames.or 파일이 디렉토리에 있는지 확인합니다.
C:\Oracle\product\11.2.0\client_1\network\admin
다음 연결 문자열을 사용해 볼 수 있습니다.
Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.1)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=MYDATABASE)));User ID=myusername;Password=mypassword;
업데이트:
(확장 연결 문자열을 사용하기 때문에) 이 환경 변수는 없지만 여기 있는 누군가가 TNS_ADMIN을 추가할 것을 제안합니다.
TNS 사용:
(ASP의 경우).NET Core tnsnames.ora가 위치한 디렉토리를 가리키는 TNS_ADMIN 환경 변수가 필요합니다.)
Data Source = TORCL; User Id = myUsername; Password = myPassword;
TNS 미사용:
Data Source = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP) (HOST = MyHost) (PORT = MyPort))) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = MyOracleSID));
User Id = myUsername; Password = myPassword;
위의 모든 유효성 검사에 실패할 경우 다음을 시도합니다.이것이 제 문제를 해결해 준 것입니다.tnsnames.또는 파일의 TNS 항목 이름입니다.
예:abc.xyz = (Description = (ADDESCription = (PROTOCOL = tcp)(HOST = MyHost)(PORT = MyPort)(CONNECT_DATA = (SERVICE_NAME = MyOracle SID))가 있었습니다.
ORA-12154: TNS: 지정한 연결 식별자를 확인할 수 없습니다.
그리고 abcxyz = ()로 바꿨더니 잘 되더군요.
기본적으로 TNS 엔트리 이름의 . 및 _와 같은 특수 문자를 제거했습니다.
- VirtualBox 5.0.20 설치
- 설치된 센트버추얼 박스(VirtualBox
- Oracle 11g R2 설치(11.0.2)
- 데이터베이스 만들기
- VirtualBox에 Windows 10 설치
- VisualStudio Professional 2012 설치 및 SP1에서 SP5로 단계별 업데이트
- Nuget Package Manager 업데이트
- Nuget Package Manager 콘솔에서 실행:설치-패키지 오라클.관리 데이터 액세스
- 웹 프로젝트를 만듭니다.
- 에 tnsname에 합니다.또는 파일 보관
TNS NAMES.ORA
MYDB= (Description=(ADDRESSION=(ADDESS=(PROTOCTocoltcp))(HOST=192.168.56.2)(PORT=1521)(CONNECT_DATA=(SERVICE_NAME=SID_NAME));
다음과 같이 연결 문자열을 제외한 12단계의 소스 코드를 사용합니다.
string constr = "user id=test;password=test;data source=MYDB";
또는 12단계를 따릅니다.
- Oracle을 사용하는 코드에서 다음 네임스페이스를 사용했습니다.관리되는 데이터 액세스.클라이언트, Oracle 사용.관리되는 데이터 액세스.유형;
Oracle Database를 연결하기 위해 다음 문장을 사용했습니다.
string constr = "user id= test; password= test; data source= (DESCription= (ADDRESSION= (PROTOROCOL= tcp))(HOST=192.168.56.2)(PORT=1521)(CONNECT_DATA=(SERVICE_NAME=SID_NAME))";
Oracle Connection con = 새 Oracle Connection(constr)을(를) 실행하십시오. {con}을(를) 시도하십시오.Open(); ViewData["Message"] = "Connected"; con.폐기(); } 캐치(예외) {
데이터 보기 ["메시지"] = ex.메시지; }
바로 그겁니다.됐습니다.
동일한 오류가 발생했습니다. ORA-12154: TNS: 지정한 연결 식별자를 확인할 수 없습니다.
비주얼 스튜디오에서 Oracle Data 소스를 연결하려고 할 때
이 문제를 해결하기 위한 단계입니다.
시스템에 Oracle 클라이언트가 설치되어 있는지, Oracle Wallet Manager가 설치되어 있는지 확인합니다.
Oracle Wallet Manager를 열고 조직에서 제공한 인증서를 추가합니다.
'C:\APP\ORACLE\product\11.2.0\client_1\network\admin'(또는 데스크톱의 유사한 폴더 구조) 폴더로 이동하여 'tnsnames.ora' 및 'sqlnet.ora' 파일을 첨부 파일로 바꿉니다.
C:\ORACLE\product\11.2.0.3\network\admin --> SQL.net .ora 및 tnsnames.ora 파일을 추가합니다.
SQL.net .또는 파일에서 1단계에서 만든 지갑 경로를 수정합니다.
시스템을 다시 시작하고 공유 데이터 원본 만들기를 시작합니다.
이 오류가 발생할 수 있는 또 다른 시나리오는 IIS Express를 로컬로 사용하여 테스트하는 경우입니다.
TNS 항목이 추가/수정되면 IIS Express를 재시작해야 새 값이 유지됩니다.
저의 경우, 어플리케이션 디버깅을 하다가 TNS 엔트리를 수정하기 위해 어플리케이션을 정지시켰으나, 어플리케이션을 다시 실행시켰으나 동일한 IISExpress 인스턴스를 사용하여 API를 실행하였습니다.
앱을 중지하고 수동으로 II Express를 닫으면 다음 실행 시 TNSNAME에 대한 수정 사항이 제대로 작동하도록 할 수 있었습니다.
언급URL : https://stackoverflow.com/questions/12178218/asp-net-oracle-issue-tns-could-not-resolve-the-connect-identifier-specified
'source' 카테고리의 다른 글
JPA Cache: 보기의 테이블이 업데이트된 후 db 보기에서 업데이트된 결과를 가져오는 방법 (0) | 2023.09.26 |
---|---|
MySQL에서 조인에 인덱스를 사용하도록 강제하는 구문은 무엇입니까? (0) | 2023.09.26 |
C에서 카레를 할 수 있는 방법이 있습니까? (0) | 2023.09.26 |
워드프레스 API json, 한 번의 게시물에서 사전 게시물과 다음 게시물을 얻는 방법은? (0) | 2023.09.26 |
PowerShell에서 자세한 예외 스택 추적을 받을 수 있습니까? (0) | 2023.09.26 |