이스트버드
꾸준함은 모든 것을 이긴다
이스트버드
전체 방문자
오늘
어제
  • 분류 전체보기 (76)
    • 네트워크 개념 (9)
    • 개발(Dev) 이야기 (53)
      • Algorithm (13)
      • Linux, Unix (13)
      • Xamarin (3)
      • C++ , Python (9)
      • Raspberry pi (4)
      • A.I. (7)
      • etc (4)
    • 운영(Ops) 이야기 (12)
      • 접근제어 솔루션 (Hiware) (1)
      • 데이터베이스 (9)
      • TroubleShooting (2)
    • MSA (1)
      • Kubernetes, Docker (1)
    • 일상 (1)

인기 글

반응형

티스토리

hELLO · Designed By 정상우.
이스트버드

꾸준함은 모든 것을 이긴다

운영(Ops) 이야기/TroubleShooting

[Oracle] ORA-12154 : TNS: could not resolve the connect identifier specified 오류 해결 방법

2022. 8. 3. 20:39
반응형

※ 이 글은 Oracle Database 11g Release 11.2.0.4.0 - 64bit 버전을 기준으로 작성된 글입니다.

 


 

ERROR NAME

ORA-12154 : TNS:could not resolve the connect identifier specified

 


 

SYMPTOMS

TNS 위치 설정이 정상적으로 등록되어 있지 않아 발생하며 DB_LINK 접근 시 종종 오류가 발생함. 해당 오류는 tnsnames.ora 에 인스턴스 접속 정보들이 기재되어 있는데, tnsnames.ora에 등록되어 있지 않거나 DB Alias가 등록되어 있지 않은 경우 발생하는 오류다.  

 


 

HOW TO SOLVE

따라서, 다음과 같이 조치하면 된다. 조치 방법은 두가지다.

  1. tnsnames.ora에 db_alias 등록한 뒤 tns 통신 및 DB LINK 확인
  2. DB LINK 재생성

 


 

1. tnsnames.ora에 db_alias 등록한 뒤 tns 통신 및 DB LINK 확인

su
cd $TNS_ADMIN
vi tnsnames.ora
  • tnsnames.ora는 관리자 계정으로만 수정이 가능함
  • 일반적으로 $TNS_ADMIN은 등록되어있는 환경변수이나, 환경변수가 등록되어 있지 않은 경우 tnsnames.ora의 위치를 찾아서 수정해줘야 함. (필자 경로는 /u01/app/12.1.0.1/grid/network/admin 이었음)

   ※ tnsnames.ora에 아래와 같이 문구 삽입

KIS02 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 203.xxx.xxx.xxx)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = KIS02)
    )
  )
  • 수정해야할 부분
    • 인스턴스명 (예 : KIS02)
    • HOST - 원격지 호스트 IP 주소
    • PORT - 원격지 호스트 포트
    • SERVICE_NAME - 인스턴스명 (예 : KIS02)

 

이후 정상 접근되는지 확인

tnsping [인스턴스명]

sqlplus [원격지 사용자명]/[비밀번호]@[TNS_ALIAS명]

	SQL> SELECT * FROM [테이블명]@[DB_LINK명]
  • tnsping 을 통해 통신 여부 확인
  • sqlplus 로 접근
    • 예: sqlplus hr/hr@KIS02 
    • SQL> SELECT * FROM EMPLOYEES@L_DBLINK_KIS02

 

2. DB LINK 재생성

이 경우는 DB ALIAS 설정 대신 원격지 IP 주소, 포트를 DBLINK 생성할 때 같이 넣고 생성하는 방법임.

DROP DATABASE LINK [링크명];

기존 링크를 먼저 삭제해준다.

그리고 아래와 같이 기존 링크명을 그대로 따서 DB LINK를 재생성해준다.

CREATE DATABASE LINK [링크명] CONNECT TO [원격지 사용자명] IDENTIFIED BY "[원격지 사용자 비밀번호]"
USING '(DESCRIPTION =
               (ADDRESS_LIST =
                   (ADDRESS = (PROTOCOL = TCP)(HOST = [원격지 IP주소])(PORT = [원격지 포트]))
                )
                (CONNECT_DATA =
                    (SERVER=dedicated)
                    (SERVICE_NAME=[인스턴스명])
                )
            )';

 

 


참고문헌

1. Database Link Accessed Remotely Fails with ORA-12154, Locally Works (Doc ID 1593961.1)

https://support.oracle.com/knowledge/Oracle%20Database%20Products/1593961_1.html

 

Database Link Accessed Remotely Fails with ORA-12154, Locally Works

Database Link Accessed Remotely Fails with ORA-12154, Locally Works (Doc ID 1593961.1) Last updated on MARCH 31, 2022 Applies to: Oracle Net Services - Version 10.2.0.1 to 18.3.0.0.0 [Release 10.2 to 18.1] Information in this document applies to any platfo

support.oracle.com

 

반응형

'운영(Ops) 이야기 > TroubleShooting' 카테고리의 다른 글

[Oracle] ORA-12541: TNS: no listener 오류 해결 방법  (0) 2022.08.04
    '운영(Ops) 이야기/TroubleShooting' 카테고리의 다른 글
    • [Oracle] ORA-12541: TNS: no listener 오류 해결 방법
    이스트버드
    이스트버드
    이것저것 일단 해보고 보는 컴퓨터 전공 연구원의 파란만장한 스토리

    티스토리툴바