[Oracle] 다른 DB인데 똑같은 테이블일때 데이터 쉽게 옮기는 법(DB 링크 사용법)

운영(Prod)하고 있는 서버에는 대게 테스트 서버가 있다. 그러면 운영서버와 테스트서버의 DB의 스키마는 완전히 똑같을 것이다. 테스트(QA) 서버에서는 운영에 있는 데이터와 똑같이 해서 테스트 해보는게 가장 이상적인 방법인데 너무 불편할것이다. 왜냐하면 운영에 있는 테이블의 데이터들을 그대로 가져오는게 여간 귀찮은 작업일수밖에 없으니 말이다. 

그런데 그 귀찮은 작업을 가장 쉽게 하는 방법으로 DB Link를 이용하는 방법이 있다.

 

DB Link를 이용한 데이터 옮기는법.

1. 우선 테스트 -> 운영 으로 DB Link를 생성한다. (방법을 모르면 아래 링크 참조)

https://deftkang.tistory.com/110?category=1089009

 

[Oracle] DB Link설정하는 방법과 오류(ORA-12154) 해결

DB Link 설정 방법 DB Link를 설정하기 위해 tnsnames.ora 파일에 tns를 정의하고 그 다음 데이터베이스 링크 생성한다. ex) 1. tnsnames.ora 파일에 tns 정의 B_DB = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS =..

deftkang.tistory.com

 

2. DB Link를 활용해서 운영의 테이블을 조회하여 테스트의 테이블에 데이터 INSERT. 

--운영 테이블을 조회하고 조회한데이터를 바로 INSERT
INSERT INTO 테이블
(
    SELECT * FROM 테이블@DB_LINK
);
 

원래 INSERT INTO 테이블 VALUES(); 지만 VALUES를 빼고 SELECT 문을 이용하여 데이터를 넣을 수 있다. 조건은 테이블 구조가 같아야한다.

 

만약 테스트에선 없는 데이터만 추가 하고 싶다면 운영 테이블에 OUTER JOIN을 걸어서 QA의 테이블의 데이터가 NULL인것만 조회를 하여 INSERT 해주면 된다. 

 

 

사용사례

QA 디비에서 운영 ECS_ITEM 테이블의 데이터를 INSERT 

INSERT INTO ECS_ITEM (
    SELECT PITM.*
        FROM ECS_ITEM ITM, ECS_ITEM@PG_PROD PITM
        WHERE ITM.GTIN(+) = PITM.GTIN
            AND ITM.GLN(+) = PITM.GLN
            AND ITM.GLN IS NULL
    );

 

댓글

Designed by JB FACTORY