source

Oracle ORA-12154: TNS: 서비스 이름 오류를 확인할 수 없습니까?

myloves 2023. 9. 5. 21:43

Oracle ORA-12154: TNS: 서비스 이름 오류를 확인할 수 없습니까?

저는 SQL Server 사용자입니다.

저는 오라클(거의 사용하지 않는)을 사용하는 프로젝트에 참여하고 있습니다. MS Access를 통해 일부 데이터에 액세스할 수 있도록 ODBC 연결을 만들어야 합니다. or Home90이라는 애플리케이션이 제 컴퓨터에 있습니다."넷 구성 유틸리티"에서 수신기라고 하는 것을 구성할 수 있는 것 같습니다. "로컬 넷 서비스 이름 구성"도 수행해야 한다고 생각합니다.IT 지원팀은 ODBC 연결을 설정하기 위해 이 정보를 제공했습니다.저는 제가 생각할 수 있는 모든 조합을 시도했습니다.Oracle 서버 데이터베이스에 "로그인"하는 테스트를 성공적으로 통과한 테스트를 통과할 수 있습니다.ODBC 연결을 생성하려고 하면 다음 오류가 발생합니다. ORA-12154: TNS: 서비스 이름을 확인할 수 없습니다.

처음부터 시작하고 다음 정보를 통해 데이터베이스에 연결할 수 있다고 가정하면….제안이나 의견이 있으십니까? 참고: 궁극적으로 프로젝트에는 웹 사이트가 있을 것입니다.ASP 페이지에서 데이터를 쿼리하지만 먼저 MS Access를 통해 ODBC 연결을 사용하여 데이터를 볼 수 있음을 증명해야 합니다.

Service name: SERVICENAME
HOST = HOST.XYZi.com
User Id: MYUSERID
Password: MYPASSWORD
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

'Oracle Connection
Dim ocst
Dim oconn

ocst = "Provider=OraOLEDB.Oracle;" & _ 
        "Data Source=DATASOURCE;" & _ 
        "User ID=CHIJXL;" & _ 
        "Password=password;" 

set oconn = CreateObject("ADODB.Connection")

http://ora-12154.ora-code.com 에서

ORA-12154: TNS: 지정된 연결 식별자를 확인할 수 없습니다
원인: 연결 식별자를 사용하여 데이터베이스 또는 다른 서비스에 대한 연결을 요청했으며 지정된 연결 식별자를 구성된 명명 방법 중 하나를 사용하여 연결 설명자로 확인할 수 없습니다.예를 들어, 사용된 연결 식별자 유형이 net 서비스 이름인 경우 name method 저장소에서 net 서비스 이름을 찾을 수 없거나 저장소를 찾거나 연결할 수 없습니다.
작업:

  • 로컬 명명(TNSNAMES)을 사용하는 경우.ORA 파일):

  • NAMES 값 중 하나로 "TNSNAMES"가 나열되어 있는지 확인합니다.Oracle Net 프로필(SQLNET)의 DIRECTORY_PATH 매개 변수입니다.ORA)

  • TNSNAMES를 확인합니다.ORA 파일이 존재하며 올바른 디렉터리에 있으며 액세스할 수 있습니다.

  • 연결 식별자로 사용되는 네트워크 서비스 이름이 TNSNAMES에 있는지 확인합니다.ORA 파일.

  • TNSNAMES에서 구문 오류가 없는지 확인합니다.ORA 파일.일치하지 않는 괄호 또는 이동 문자를 찾습니다.TNSNAMES에 오류가 있습니다.ORA 파일로 인해 파일을 사용할 수 없게 될 수 있습니다.

  • 디렉토리 이름 지정을 사용하는 경우:

  • NAMES 값 중 하나로 "LDAP"이 나열되어 있는지 확인합니다.Oracle Net 프로파일(SQLNET)의 DIRETORY_PATH 매개 변수입니다.ORA).

  • LDAP 디렉터리 서버가 작동 중이고 액세스할 수 있는지 확인합니다.

  • 연결 식별자로 사용되는 넷 서비스 이름 또는 데이터베이스 이름이 디렉터리에 구성되어 있는지 확인합니다.

  • 전체 네트워크 서비스 이름 또는 전체 LDAP DN을 연결 식별자로 지정하여 사용 중인 기본 컨텍스트가 올바른지 확인합니다.

  • 쉬운 연결 이름을 사용하는 경우:

  • NAMES 값 중 하나로 "EZCONNECT"가 나열되어 있는지 확인합니다.Oracle Net 프로파일(SQLNET)의 DIRETORY_PATH 매개 변수입니다.ORA).

  • 지정한 호스트, 포트 및 서비스 이름이 올바른지 확인합니다.

  • 연결 식별자를 따옴표로 묶습니다.이름 지정에 대한 자세한 내용은 Oracle Net Services Administrators Guide 또는 Oracle 운영 체제별 가이드를 참조하십시오.

TNSNAMES 명명법을 사용하고 있다고 가정하면 다음과 같은 몇 가지 작업을 수행해야 합니다.

  • Oracle 데이터베이스에 대한 항목을 포함하도록 OraHome90과 연결된 network/admin 하위 디렉토리에 tnsnames.ora 파일을 생성/수정합니다.
> SERVICENAME_alias =
>    (DESCRIPTION =
>     (ADDRESS = (PROTOCOL = TCP)(HOST = HOST.XYZi.com)(PORT = 1521))
>     (CONNECT_DATA = (SERVICE_NAME = SERVICENAME))

이는 표준 Oracle 포트인 1521을 사용하고 있다고 가정합니다.servicename_alias는 로컬 시스템에서 사용할 이름이 될 수 있습니다.(SERVICENAME=SERVICENAME) 대신 (SID = SERVICENAME)을 지정해야 할 수도 있습니다.

  • tnsping servicename_alias를 실행하여 연결을 확인합니다.더 이상 진행하기 전에 이것을 작동시키세요.이것은 당신이 12154 오류를 넘었는지 알려줄 것입니다.
  • 연결 상태가 양호하다고 가정하면 제어판을 사용하여 원하는 Oracle용 ODBC 드라이버를 지정하여 ODBC DSN을 생성합니다(일반적으로 Microsoft ODBC 드라이버가 적어도 있으며 개념 증명으로 적절하게 작동해야 함).DATA SOURCE의 이름을 대겠습니다.ODBC 구성에서 servicename_alias를 서버 이름으로 사용합니다.
  • 이때 액세스를 통해 데이터베이스에 연결할 수 있습니다.VB 프로그래머는 아니지만 파일->외부 데이터 가져오기->링크 테이블로 이동하여 ODBC 소스에 연결할 수 있어야 합니다.당신의 코드도 작동할 것이라고 생각합니다.

MSDN POST의 #7과 관련하여, 레지스트리 항목을 추가하는 것이 저에게 효과가 있었습니다.Vs2010 등 Oracle 11.0을 설치했습니다.

HKEY_LOCAL_MACHIN\SOFTWARE\ORACLE에서 레지스트리 키 "TNS_ADMIN"을 확인합니다.해당 값이 있으면 "Dir:\app\product\11.1.0\client_1\network\admin" 값이 올바른지 확인합니다.키가 보이지 않으면 키를 생성하고 아래와 같이 적절한 값을 설정합니다.등록->HKEY_LOCAL_MACHIN->소프트웨어->Oracle->새로 마우스 오른쪽 버튼을 클릭하여 문자열 값을 TNS_ADMIN으로 지정하고 값 "X:\app\product\11.1.0\client_1\network\admin"을 지정합니다.

시스템 변수에서 TNS_ADMIN이라는 환경 변수가 TNS_ADMIN이라는 항목을 찾을 때까지 몇 시간 동안 이 문제를 해결하려고 애썼습니다. => 속성 => 고급 => 환경 변수 => 시스템 변수에서 TNS_ADMIN.TNS_ADM이라는 항목을 찾습니다.IN이 추가되어 Tnsnames.ora 항목의 기본 경로를 변경합니다.이 기능은 모든 네트워크 컴퓨터에 대해 일반 tnsnames.or 항목을 설정할 수 있는 네트워크 환경에서 사용할 때 유용합니다.tnsnames.ora의 기본 경로를 확인하려면 TNS_ADMIN에 기본 경로를 추가합니다.

. 한 은 @Warren @Dcookie의 입니다.tnsping연결을 시도하기 전에 TNS 이름이 올바른지 확인할 수 있습니다.

tns 이름을 올바르게 설정했으면 ODBC를 사용하거나 기본 오라클 연결을 사용할 TORA를 사용할 수 있습니다.TORA 또는 이와 유사한 것(TOAD, SQL*Plus 등)은 SQL을 디버깅하고 개선하는 데 매우 유용합니다.

마지막으로 ASP.net 에 연결할 때 Oracle 데이터 연결 라이브러리를 사용할 수 있습니다.자세한 내용은 Oracle.com 을 참조하십시오.

tns 이름의 시작 부분에 공백이 있는 경우 파일에 정의tnsnames.ora그러면 odbc와 같은 커넥터 중 일부에서 이 오류가 발생할 수 있습니다.시작 부분에서 공백 문자를 제거합니다.

폴더 구조에 포함된 공간과는 아무런 관련이 없습니다.

저도 같은 문제가 있었습니다.그러나 시스템 및 사용자 수준에서 모두 정의된 환경 변수 TNS_HOME을 생성하여 TNSNAMES가 있는 폴더를 가리키도록 만들었습니다.ORA가 존재하여 문제가 해결되었습니다.Voila!

벤키

으악!!또 마주쳤어요!!!

경로에 괄호가 없는 C:\ 또는 임의의 디렉토리에 ToadForOracle을 설치하기만 하면 됩니다.


제 경우에는 x64 PC를 사용하면서도 32비트 드라이버와 함께 이전 Oracle 9i를 사용했기 때문입니다.

Oracle 데이터베이스와 함께 SQL Reporting Services를 사용하고 있습니다.문제는 Visual Studio(BIDS) 경로의 브래킷입니다.Oracle은 대괄호로 시작하는 앱을 좋아하지 않습니다.

경로에 괄호가 있는 RDBMS 10g XE 문제

그래서 "Program Files (x86)"의 짧은 경로 이름으로 Progra~2가 있는 Visual Studio를 열기 위해 BAT 파일을 만들었습니다.

다음은 BAT 파일의 내용입니다.

rem Progra~2 is short path name for "Program Files (x86)" and works around an Oracle client bug that doesn't like the ()'s in the path
start /B "C:\Progra~2\Microsoft Visual Studio 9.0\Common7\IDE" "C:\Progra~2\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe"

나는 이 BAT 파일 이름 StartB입니다.IDS.BAT를 디렉토리에 배치합니다.

"C:\Program Files\Microsoft SQL Server\Start BADS.bat"

그런 다음 바탕 화면의 BAT 파일과 시작 메뉴에 바로 가기를 만들고 바로 가기 아이콘을 변경합니다.이를 통해 Oracle과 함께 작업하는 데 사용하는 Toad, Visual Studio, BIDS 등의 앱을 열 수 있습니다.

업데이트:

또는 접합을 만듭니다.

mklink /J "C:\Program Files (x86)\" "C:\Program Files x86\"

그런 다음 바로 가기에서 브래킷을 제거합니다.

enter image description here

저도 이 문제를 경험했습니다.문제를 발견한 이유는 Oracle DB가 C:program files(x86)\Toad......의 공간을 좋아하지 않기 때문입니다. 그래서 C:App\Toad라는 새 디렉터리를 생성한 다음 다시 설치하여 Toad를 Oracle에 연결했습니다.효과가 있었습니다.

이것은 다른 답변에 대한 댓글에서 언급되었지만, 저의 경우에도 이것이 문제였고 답변이었다면 찬성했을 것이기 때문에 실제 답변으로 옮기고 싶었습니다.

Linux에 있고 tnsnames.ora 파일이 모두가 읽을 수 있도록 설정되지 않았습니다.읽을 수 있게 만든 후 via 연결은 로컬에서 작동했습니다.

$ chmod +r tnsnames.ora

저도 같은 문제가 있었고 같은 오류가 나타납니다.ORA 파일도 좋지만 방화벽으로 인해 접근이 차단되어 문제가 있었던 것 같습니다.따라서 방화벽이 데이터 소스에 대한 액세스를 차단하지 않도록 하는 것이 좋습니다.

저는 이 단계를 사용하여 이 문제를 해결했습니다.

먼저, 동일한 디렉터리나 드라이브를 설치하지 않은 경우 이 오류가 발생했습니다.

하지만 답은 여기 있습니다.

  1. 창을 관리자로 로그인합니다.
  2. 제어판으로 이동합니다.
  3. 시스템 속성 및 환경 클릭
  4. OS로 합니다.

    enter image description here

  5. 값을 "tnsnames의 디렉토리 주소"로 변경합니다.

  6. 시스템을 다시 시작합니다.

  7. 축하합니다.

C:\oracle\ora92\network\에서 sqlnet.ora를 제거하여 이 문제를 해결했습니다.관리자 경로

  • TNSNAMES를 확인합니다.ORA 파일이 올바른 디렉토리에 있습니다.
  • PATH 환경 변수에 오라클 항목이 있는지 확인
  • TNSNAMES.ORA에 구문 문제가 없는지 확인합니다.
  • sqlnet.ora 파일 제거 시도

몇 시간 동안의 문제 해결.저는 Oracle용 베타 엔터티 프레임워크를 설치하고 탭 아래에서 참조하던 Visual Studio 2010 MVC 3 프로젝트에 설치했습니다.NET the Oracle.데이터 액세스...이것은 계속해서 저에게 "오라클 ORA-12154: TNS: 그럴 수 없습니다...오류마지막으로 c:\Oracle\product...에서 이전 Oracle 설치를 검색했습니다.이전 10.2.0.100 버전의 dll을 사용합니다.드디어 이제 작동합니다.다른 사람에게 도움이 되길 바랍니다.

저는 이 일에 한 시간만 할애합니다. 저는 오라클이 처음이라 완전히 혼란스러웠습니다.

상황:

방금 visual studio 2012 Oracle 개발자 도구를 설치했습니다.제가 이것을 했을 때, 저는 TOD에 제 TNS 항목이 포함된 드롭다운 항목을 잃어버렸습니다.Visual studio AND TOAD!! WTH!에서 이 오류가 발생했습니다. 그래서 "ALL USSers" 아래에 환경 변수 TNS_ADMIN을 .ora 파일의 경로와 함께 추가했습니다(이 파일은 깨지기 전까지 작동했기 때문에 이제 잘 작동했습니다).두꺼비가 거스름돈을 받았어요.비주얼 스튜디오는 여전히 나에게 사랑을 주지 않을 것입니다.여전히 동일한 오류가 발생합니다.그런 다음 사용자 변수에 환경 변수를 추가했습니다.비올라!!

시스템 및 사용자에 대한 환경 변수가 설정되었는지 확인합니다.

SID 서비스만 다시 시작합니다.예를 들어 SID 이름 = 또는 cl을 입력한 후 orcl과 관련된 모든 서비스를 다시 시작해야 문제가 해결됩니다.

Oracle Database Client를 다시 설치하여 문제를 해결했습니다.워크스테이션 중 하나에서 설치가 성공하지 못했습니다(로그가 없음에도 불구하고). 그러나 Oracle 디렉토리의 크기/파일/폴더를 작동 중인 클라이언트 워크스테이션과 비교했을 때 누락된 파일이 상당히 많았습니다.클린 설치를 수행한 후에는 모든 작업이 완벽하게 수행되었습니다.

이 경우 오류는 Oracle 클라이언트가 2개 있기 때문입니다. 솔루션은 다음과 같습니다.

로컬 IIS에서 Oracle ORA-12154 오류가 발생하지만 Visual Studio Development Server에서는 발생하지 않습니다.

우리도 비슷한 문제가 있었습니다.연결 문자열에 대해 tnsnames.ora로 여러 개의 별칭을 제공한 것으로 확인되었습니다. 다음과 같습니다.

svc01, svc02=(DESCRIPTION=(ADDRESS=(PROTOCOL=DESCONT=xxx)(포트=50))(CONNECT_DATA=(SERVER=SERVER)(service_name=yyysvc.world))

따라서 ODBC를 사용하여 연결을 만들 때 TNS 서비스 이름에 대한 값을 선택했을 때 자동 채우기에 'svc01'이 표시되었습니다(여기에 추가 쉼표가 표시됨을 참고하십시오).우리가 콤마를 제거하자마자, 그것은 우리에게 효과가 있었습니다.

이름이 같은 32비트 DSN과 64비트 DSN이 있으면 윈도우즈에서 자동으로 64비트 DSN을 선택하고 애플리케이션이 32비트인 경우 이 오류를 표시합니다.그것만 조심하세요.

tnsnames.ora가 아닌 tnsnames.ora 파일 이름의 오타 때문에 이 문제가 발생했습니다.

이 오류 메시지는 매우 혼란스러울 수 있으며 솔루션은 놀라울 정도로 원시적일 수 있습니다.

내 경우:Oracle 저장 프로시저는 "Provider=OraOLEDB"를 통해 레코드 집합을 MS Excel로 전송합니다.오라클;데이터 원본= ... 등"입니다.

문제는 Excel 2010으로 전송된 Oracle 데이터 열에 있는 소수 자릿수입니다.Oracle SQL query ROUND(gross sales_eur,2) AS gross sales_eur를 사용했을 때 잘 작동했습니다.

언급URL : https://stackoverflow.com/questions/206055/oracle-ora-12154-tns-could-not-resolve-service-name-error