반응형
오라클의 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 기억해두자
반응형
'DB > Oracle' 카테고리의 다른 글
오라클 구분자를 사용한 문자열을 행으로 변환(regexp, connect by level) (0) | 2024.10.17 |
---|---|
drop 테이블 복구 (0) | 2024.08.07 |
테이블 LOCK (1) | 2024.04.16 |
오라클 인덱스관리 (0) | 2024.03.22 |
오라클 현재 실행중인 쿼리확인 (0) | 2024.03.22 |