본문 바로가기

DB/Oracle

오라클 DB링크

반응형

오라클의 DB의 실제 운영서버에서 개발서버 쪽으로 데이터를 옮겨야하는 상황이 있었다.

예전이였으면 

데이터를 파일로뽑고, 그 데이터를 sqlldr로 넣는 방식으로 옮겼겠지만 이번엔 DB링크로 옮기게 되었다.

 

기존에 같은 서버에서 다른 스키마의 DB까지는 접근해서 사용했는데 

다른 서버의 DB를 가져오는 링크는 처음 만들어봤다. 

(DBA한테 허락을 받았다)

 

자 만들어보자

CREATE DATABASE LINK LIVE_MY_MAP	-- 링크로 사용할 이름
CONNECT TO MYMAP	-- 링크할 서비스 DB 이름
IDENTIFIED BY "TESTPWD123"                          -- 비밀번호 쌍따옴표 필수
USING '(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP) (HOST = 10.10.10.10)(PORT = 1521) ) ) (CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = MYORA) ) )';	-- 링크시킬 DB 서버 정보

SELECT * FROM USER_DB_LINKS  ; -- 생성여부 확인

INSERT INTO T_TEST
SELECT * FROM T_TEST@LIVE_MY_MAP;

alter table T_TEST
	add constraint T_TEST_PK
		unique (F_CODE)
USING INDEX TABLESPACE MY_IDX;

create index I1_TEST
	on T_TEST (F_CODE_SCH1)
TABLESPACE MY_IDX;


SELECT * FROM USER_INDEXES;	-- 인덱스 생성확인

 

우선 라이브서버에 있는 DB의 DDL은 따로 먼저 가져와 CREATE는 해둔 상황이다.

그냥 바로 CREATE AS 하면 안되냐고 했지만 제대로 안되는 경우가 있다더라...

 

어쨋든 DB구조는 동일하게 맞춰두고

INSERT하고~ PK만들고~ INDEX 만들고 완료했다.

 

편하다. 매우. 지금까지 파일로 받아서 다시 올리는 개고생한게 좀 허무하다.

역시 개발은 알수록 편해진다.

 

여담으로

해당 링크는 오라클만 지원하는걸로 알고있다.

찾아보니 MYSQL의 경우 비슷하지만 좀 다른 federated 라는 기능이 있는 것 같다.

살짝 확인해보니 federated 는 링크로 가져오는것 보다는 아예 연동이라는 개념같다.(DML만 연동, DDL은 연동안되는듯)

MYSQL에서 사용해야할 경우엔 federated 기억해두자

 

반응형