Oracle Database 강좌

로컬 Oracle 데이터베이스와 리모트 Oracle 데이터베이스 연결 설정 가이드 (DB 링크 생성)

_Blue_Sky_ 2025. 2. 13. 11:11
728x90
728x90

 

로컬 Oracle 사용자인 A(로컬 데이터베이스)와 리모트 Oracle 데이터베이스의 사용자 B를 연결하기 위해 DBA가 수행해야 할 모든 단계를 아래에 정리했습니다. 여기에는 DB 링크 설정, 필요한 권한 부여, 기본적인 네트워크 구성을 모두 포함합니다.


전체 단계: DBA가 해야 할 작업

1. 기본 요구사항 준비

DBA 또는 관리자 권한으로 아래 항목들을 확인합니다:

  1. 로컬 데이터베이스와 리모트 데이터베이스 정보 확보:
    • 리모트 DB의 호스트/IP
    • 리모트 DB의 리스너 포트(기본: 1521)
    • 리모트 DB의 서비스 이름 (SERVICE_NAME 혹은 SID)
    • 리모트 사용자의 계정 정보 (B 사용자, 비밀번호)
    • 리모트 DB에서 사용하는 테이블 또는 뷰 이름
  2. 로컬 DB와 리모트 DB의 네트워크 연결 확인
    • 로컬 DB 서버에서 리모트 DB 서버로 ping 테스트:
      ping [리모트 DB IP 주소]
      
       
    • 리모트 DB 서버의 리스너 포트(1521 등)가 열려 있는지 확인:
      telnet [리모트 DB IP 주소] 1521
      
       

2. 리모트 DB(B 사용자)에서 할 일

(1) 테이블 접근 권한 부여

리모트 데이터베이스의 B 사용자 계정이 데이터에 접근할 수 있는 권한을 갖고 있어야 합니다. DBA 또는 권한을 가진 관리 계정으로 아래 작업을 수행합니다.

예: B 사용자가 employees 테이블에 접근할 수 있는 권한 부여

GRANT SELECT ON employees TO B;
-- 또는 INSERT, UPDATE, DELETE가 필요한 경우:
GRANT SELECT, INSERT, UPDATE, DELETE ON employees TO B;
 

(2) 리모트 사용자(B)의 비밀번호 확인/설정

DBA 또는 B 사용자는 비밀번호를 알고 있어야 하며 문제가 있다면 아래와 같이 재설정합니다:

ALTER USER B IDENTIFIED BY your_new_password;
 

3. 로컬 DB(A 사용자)에서 할 일

(1) 리모트 DB 연결 구성 (TNSNAMES 설정)

로컬 데이터베이스에서 리모트 DB에 접근하려면 해당 리모트 DB의 연결 정보를 Oracle Net(TNS)에 등록해야 합니다.

  • 파일 위치:
    • Linux/Unix: $ORACLE_HOME/network/admin/tnsnames.ora
    • Windows: %ORACLE_HOME%\network\admin\tnsnames.ora

예: tnsnames.ora에 리모트 DB 추가

REMOTE_DB =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = <리모트_DB_IP>)(PORT = <리모트_DB_PORT>))
    (CONNECT_DATA =
      (SERVICE_NAME = <리모트_DB_SERVICE_NAME>)
    )
  )
 
  • 변경 예:
    • <리모트_DB_IP>: 리모트 데이터베이스의 IP 주소 (예: 203.245.111.252)
    • <리모트_DB_PORT>: 기본 포트는 1521
    • <리모트_DB_SERVICE_NAME>: 리모트 DB의 서비스 이름 (예: orcl)

(2) 리스너 재시작 (필요한 경우):

구성 파일이 변경되었다면 Oracle Listener를 재시작합니다:

lsnrctl reload
 

(3) TNS 연결 테스트

REMOTE_DB 연결 정보가 제대로 설정되었다면 아래 명령을 통해 연결 테스트를 실행합니다:

tnsping REMOTE_DB
 

결과가 성공적으로 나오면 연결이 올바르게 설정된 것입니다.

728x90

4. 로컬 DB에 DB 링크 생성 (A 사용자)

DB 링크를 생성하기 위해 로컬 DB(A 사용자)에 적절한 권한이 필요합니다.

(1) 권한 부여

DBA 계정으로 A 사용자에게 CREATE DATABASE LINK 권한 부여:

GRANT CREATE DATABASE LINK TO A;
 

(2) DB 링크 생성

이제 A 사용자가 리모트 데이터베이스에 접근하기 위한 DB 링크를 생성합니다.

CREATE DATABASE LINK remote_link
CONNECT TO B IDENTIFIED BY 'your_password'
USING 'REMOTE_DB';
 
  • remote_link: DB 링크의 이름.
  • B: 리모트 데이터베이스 사용자 계정.
  • 'your_password': 리모트 사용자 계정의 비밀번호.
  • REMOTE_DB: tnsnames.ora에서 등록한 리모트 DB 이름.

(3) 퍼블릭 DB 링크를 생성해야 하는 경우:

퍼블릭 DB 링크는 DB 전체 사용자가 공유할 수 있는 링크입니다. DBA가 아래 명령으로 생성 가능합니다:

CREATE PUBLIC DATABASE LINK remote_link
CONNECT TO B IDENTIFIED BY 'your_password'
USING 'REMOTE_DB';
 

5. DB 링크 테스트

DB 링크가 정상적으로 작동하는지 확인하기 위해 쿼리를 실행합니다.

테스트 쿼리

SELECT * FROM employees@remote_link;
 
  • 테이블 이름은 리모트 DB의 실제 테이블 이름이어야 합니다.

결과 확인

  • 결과가 나오면 DB 링크 설정이 성공한 것입니다.
  • 오류가 발생할 경우, 아래를 확인합니다:
    • 리모트 사용자의 권한(GRANT SELECT)이 제대로 설정되었는지.
    • tnsnames.ora 설정이 올바른지.
    • 로컬 DB에서 리모트 DB로 네트워크 연결이 정상적인지.

6. 문제 해결 팁

  1. DB 링크 권한 부족
    • 에러: ORA-01031: 권한이 불충분합니다
    • 해결: 로컬 사용자가 CREATE DATABASE LINK 권한을 부여받아야 합니다.
  2. TNS 이름 문제
    • 에러: ORA-12154: TNS: could not resolve service name
    • 해결: tnsnames.ora 파일에서 리모트 DB 이름 설정을 확인하세요.
  3. 네트워크 연결 문제
    • 에러: ORA-12541: TNS:no listener
    • 해결: 리모트 DB의 리스너가 실행 중인지 확인 (lsnrctl status).
  4. 리모트 사용자 권한 문제
    • 에러: ORA-00942: 테이블 또는 뷰가 존재하지 않습니다
    • 해결: 리모트 DB에서 연결 계정에 적절한 권한(SQL GRANT)을 부여하세요.

728x90

DBA가 해야 할 작업은 크게 두 가지입니다:

  1. 로컬 DB(A 사용자)에 DB 링크 권한 부여 및 TNS 설정.
  2. 리모트 DB에서 B 사용자가 접근하려는 테이블 권한 부여.

이 과정을 진행하면 로컬 DB에서 리모트 DB로 DB 링크를 이용한 쿼리가 가능합니다

728x90
728x90