2026년 08월 10일 | DBMS Error 가이드
이 글에서 다루는 내용
ORA-02085 에러의 원인 분석, 해결 SQL, 예방 방법을 실무 관점에서 정리합니다.
ORA-02085 database link connects to 는?
ORA-02085 에러는 데이터베이스 링크(Database Link)를 통해 원격 데이터베이스에 접속을 시도할 때, 링크에 정의된 연결 대상 데이터베이스의 이름(DB_NAME 또는 SERVICE_NAME)이 실제 원격 데이터베이스의 글로벌 이름(GLOBAL_NAME)과 일치하지 않을 경우 발생합니다. 즉, 로컬 데이터베이스에서 생성한 DB Link의 접속 정보와 원격지의 실제 글로벌 데이터베이스 이름 간의 불일치가 핵심 원인입니다. 이 에러는 특히 GLOBAL_NAMES 파라미터가 TRUE로 설정되어 있을 때 엄격하게 적용되며, 운영 환경에서 DB Link 명칭을 임의로 지정하거나 원격 DB가 변경된 경우에 자주 목격됩니다.
주요 발생 원인
- GLOBAL_NAMES 파라미터가 TRUE로 설정된 경우
Oracle 데이터베이스에는 GLOBAL_NAMES라는 초기화 파라미터가 존재하며, 이 값이 TRUE이면 데이터베이스 링크의 이름이 반드시 원격 데이터베이스의 글로벌 이름과 동일해야 합니다. 예를 들어 원격 DB의 글로벌 이름이 PROD.EXAMPLE.COM인데 DB Link 이름을 MYLINK로 생성했다면 ORA-02085가 발생합니다. 이는 가장 흔하게 마주치는 원인으로, DBA가 GLOBAL_NAMES 파라미터의 존재 자체를 인지하지 못한 상태에서 DB Link를 생성할 때 빈번히 발생합니다.
- 원격 데이터베이스의 GLOBAL_NAME 변경
운영 중 원격 데이터베이스의 글로벌 이름이 변경되었는데, 기존에 생성된 DB Link가 그대로 유지되는 경우 이 에러가 발생합니다. 예를 들어, DR(Disaster Recovery) 전환이나 DB 마이그레이션 과정에서 원격 DB의 DB_NAME이나 DB_DOMAIN이 바뀌면, 기존 DB Link는 더 이상 유효하지 않게 됩니다. 이런 상황은 예고 없이 발생하기 때문에, 운영 중 갑자기 애플리케이션이 DB Link 관련 에러를 뿜어내는 경우가 많습니다.
- DB Link 생성 시 잘못된 서비스명 또는 접속 문자열 지정
DB Link를 생성할 때 CONNECT TO 구문에 지정하는 서비스명(SERVICE_NAME) 또는 TNS 별칭이 원격 데이터베이스의 실제 글로벌 이름과 다르게 구성된 경우입니다. 특히 tnsnames.ora에 정의된 서비스명이 실제 DB의 글로벌 이름과 다르게 설정되어 있을 때, 또는 이름 대소문자가 맞지 않을 때도 이 에러가 유발될 수 있습니다. 이 원인은 개발자나 주니어 DBA가 DB Link를 처음 생성할 때 자주 저지르는 실수이기도 합니다.
해결 방법
해결책 1: GLOBAL_NAMES 파라미터 확인 및 변경
먼저 현재 GLOBAL_NAMES 설정값과 원격 DB의 글로벌 이름을 확인합니다.
-- 로컬 DB의 GLOBAL_NAMES 파라미터 확인
SHOW PARAMETER GLOBAL_NAMES;
-- 또는 딕셔너리에서 확인
SELECT NAME, VALUE
FROM V$PARAMETER
WHERE NAME = 'global_names';
-- 원격 DB의 글로벌 이름 확인 (DB Link 통해 접속 시)
SELECT * FROM GLOBAL_NAME@원격DB링크명;
만약 GLOBAL_NAMES를 FALSE로 변경하여 제약을 해제하려면 아래와 같이 실행합니다. 단, 보안 및 운영 정책을 반드시 검토한 후 적용하세요.
-- 세션 레벨에서 임시 변경 (테스트 목적)
ALTER SESSION SET GLOBAL_NAMES = FALSE;
-- 시스템 전체 레벨 변경 (운영 반영 시 주의 필요)
ALTER SYSTEM SET GLOBAL_NAMES = FALSE SCOPE=BOTH;
해결책 2: DB Link를 글로벌 이름과 동일하게 재생성
GLOBAL_NAMES = TRUE 정책을 유지해야 한다면, DB Link 이름 자체를 원격 DB의 글로벌 이름과 동일하게 맞춰서 재생성하는 것이 올바른 해결 방법입니다.
-- 기존 잘못된 DB Link 삭제
DROP DATABASE LINK MYLINK;
-- 원격 DB의 GLOBAL_NAME 확인 후 동일한 이름으로 재생성
-- 예: 원격 DB의 글로벌 이름이 PROD.EXAMPLE.COM 인 경우
CREATE DATABASE LINK "PROD.EXAMPLE.COM"
CONNECT TO remote_user IDENTIFIED BY "password"
USING 'PROD_TNS_ALIAS';
-- 생성된 DB Link 목록 확인
SELECT DB_LINK, USERNAME, HOST, CREATED
FROM DBA_DB_LINKS
ORDER BY CREATED DESC;
해결책 3: 원격 DB의 글로벌 이름 확인 및 DB Link 재정비
원격 DB의 글로벌 이름을 정확히 파악한 뒤, 이에 맞게 DB Link를 조정합니다.
-- 현재 로컬 DB의 글로벌 이름 확인
SELECT * FROM GLOBAL_NAME;
-- DB Link를 통해 원격 DB 글로벌 이름 조회 (에러 없이 접속 가능한 경우)
SELECT * FROM GLOBAL_NAME@원격DB링크;
-- 모든 DB Link 현황 점검
SELECT OWNER, DB_LINK, USERNAME, HOST, CREATED
FROM DBA_DB_LINKS
ORDER BY OWNER, DB_LINK;
-- DB Link 접속 테스트
SELECT 1 FROM DUAL@"PROD.EXAMPLE.COM";
해결책 4: 원격 데이터베이스의 글로벌 이름 변경 (권한 있을 경우)
원격 DB에 접근 권한이 있고 글로벌 이름을 수정할 수 있는 경우, 원격 DB의 글로벌 이름을 DB Link에 맞게 변경하는 방법도 있습니다. 단, 이 방법은 다른 연결에도 영향을 줄 수 있으므로 매우 신중하게 적용해야 합니다.
-- 원격 DB에서 실행: 글로벌 이름 변경
ALTER DATABASE RENAME GLOBAL_NAME TO NEWNAME.DOMAIN;
-- 변경 후 확인
SELECT * FROM GLOBAL_NAME;
예방 방법
- DB Link 생성 표준화 및 네이밍 컨벤션 수립
DB Link를 생성하기 전에 반드시 원격 데이터베이스의 글로벌 이름(SELECT * FROM GLOBAL_NAME)을 먼저 확인하고, 이를 DB Link 이름으로 사용하는 표준 절차를 수립하세요. 또한 GLOBAL_NAMES 파라미터 설정을 환경별(개발/검증/운영)로 문서화하고, DB Link 생성/변경 시 반드시 DBA 검토 프로세스를 거치도록 운영 규정으로 정착시키는 것이 중요합니다. 이를 통해 신규 DB Link 생성 시 발생할 수 있는 실수를 사전에 차단할 수 있습니다.
- 정기적인 DB Link 상태 모니터링 스크립트 운영
주기적으로(최소 월 1회) 전체 DB Link의 접속 유효성을 점검하는 모니터링 스크립트를 운영하세요. 아래 쿼리를 활용하여 DB Link 목록과 글로벌 이름 불일치 여부를 자동으로 감지하는 체계를 만들면 장애를 사전에 예방할 수 있습니다.
-- DB Link 전체 현황 모니터링 쿼리
SELECT
D.OWNER,
D.DB_LINK,
D.USERNAME,
D.HOST,
D.CREATED,
G.GLOBAL_NAME AS LOCAL_GLOBAL_NAME
FROM DBA_DB_LINKS D
CROSS JOIN GLOBAL_NAME G
ORDER BY D.OWNER, D.DB_LINK;
관련 에러
- ORA-02019: 원격 데이터베이스에 대한 접속 기술자를 찾을 수 없을 때 발생하며, DB Link의 TNS 설정 오류와 관련됩니다.
- ORA-12154: TNS 리스너가 요청된 서비스명을 찾지 못할 때 발생하는 에러로, DB Link의 USING 절에 잘못된 TNS 별칭이 지정된 경우 함께 발생할 수 있습니다.
- ORA-01017: DB Link를 통한 접속 시 원격 DB의 사용자명/비밀번호가 올바르지 않을 때 발생하며, ORA-02085와 함께 DB Link 문제를 진단할 때 자주 등장합니다.
- ORA-02063: DB Link를 통해 원격 DB 작업 중 원격 측에서 에러가 발생했음을 알려주는 에러로, ORA-02085의 후속 에러로 나타나기도 합니다.
주요 DBMS error code를 정리하는 시리즈입니다.
블로그 홈에서 다른 에러도 확인하세요.
본 포스트는 AI가 생성한 기술 가이드입니다. 운영 환경 적용 전 충분한 검토를 권장합니다.