아주 초보적인 관점에서 서술하려 한다.
이유는... 내가 아주 초보이기 때문이다. ㅋ
내가 해결해야 하는 과제는 ....
Old Server의 oUser의 DB를 Back Server의 nUser라는 계정으로 옮겨야 한다. 왜 장비도 다른데 유저를 달리해야 하는가? 하는 질문이 생긴다면... Back Server 에는 이미 예전에 한번 백업 받아놓은 자료가 oUser라는 계정으로 존재 하기 때문에 새로운 유저로 데이터를 옮겨야 한다.
작업 순서는 다음과 같이 하였다.
1. Tablespace 생성
Back Server 에 nUser(아직 생성되지 않았음)가 사용할 tablespace 를 생성했다. 물론 Old Server 에서 만들어진 대로 이름을 조금 바꿔서 생성했다.
이렇게만 쓰면 어떻게 생성하는지에 대한 설명이 없어서 모호할 것이다. ㅋ
난 윈도우에 설치된 Oracle 10g Enterprise Manager Console (이하 E.M)을 통해서 System 계정으로 로그인해서 만들었다. 내 수준에서 쿼리까지 만들어서 하는것은... 너무 무리인듯해서 그냥 쉽게 접근했다. ㅡㅡ;;
2. User 생성
Back Server 에 nUser를 생성했다. 물론 Old Server 에서 만들어진 데로 권한과 역할을 만들어 줬다. 그리고 nUser가 사용할 tablespace를 지정해 준다. 이 또한 E.M으로 만들었다.
3. oUser의 DB에서 table Script 를 모두 채취
oUser의 DB에서 table Script 를 모두 채취했다. 이것도 E.M에서 할 수 있는데.. 일단 E.M 자체가 좀 무겁다 보니 토드(Toad)에서 했다.
갑자기 토드가 나오는데.. 나도 이야기만 들었지 이것을 어디서 구하는지 어떻게 사용하는지에 대해서는 몰랐다 그런데 다행이도 쫌 찾아 보니 토드가 무료 라이센스 배포판(http://www.toadsoft.com/lic_agree.html)이 있는 것을 찾아서 그것을 사용한다.
토드에서 쉽게 스크립트를 채취했다.(솔직히 말하자면 내가 직접한거는 아니고 우리직원에게 쫌 취해달라고 요청을 했다. 물론 어려워서가 아니라 단순작업이라서 요청을 했다. ^^;;)
table, views, sequesces, indexes 의 스크립트를 채취했다.
4. nUser의 DB에 스크립트로 Table 생성
3번에서 채취한 스크립트에서 테이블 스페이스가 나와 있는 부분들이 있다. 그부분을 nUser가 사용하는 tablespace로 변경해준다. Editplus 같은 편집기에서 일괄적으로 변경하면 된다. 그리고 plsql 이나 sql*plus에서 nUser로 로그인해서 tablespace까지 모두 수정한 스크립트의 내용을 복사해서 그데로 실행시켜준다. 그러면 일괄적으로 table, views, sequesces, indexes 이 생성된다.
이와 같은 방법을 사용하는 이유는 LOB 파일의 경우 그냥 Import 시킬때 Error가 발생하는 문제가 있고 또 User과 tablespace가 바뀌면서 발생하는 혼란 때문에 이런 방법을 사용한다.
5. Old Server 에서 export 하기
다음은 oracle 계정으로 Old Server 에 직접로그인해서 하면된다.
exp 계정/비번 file=파일명.dmp owner=db유저 buffer=1000000 log=로그파일명.log
$> exp system/manager file=db080123.dmp owner=oUser buffer=1000000 log=db080123.log
위의 명령을 실행하면 현재 디렉토리에 생성이 된다.
6. Back Server 에서 export 하기
5번에서 export한 파일을 Back Server 로 가져온다.
다음은 oracle 계정으로 Back Server 에 직접로그인해서 하면된다.
exp 계정/비번 file=파일명.dmp fromuser=oUser touser=nUser ignore=y commit=y buffer=1000000 log=로그파일명.log
$> imp system/manager file=db080123.dmp fromuser=oUser touser=nUser ignore=y commit=y buffer=1000000 log=db080123.log
Import 할때는 export 할때 보다 훨씬 시간이 많이 걸린다 물론 서버의 사양에 따라 차이가 있다.
7. 이제 모든 작업이 다 되었으면 자료가 잘 들어갔는지 확인하고 문제 없으면....
Good Job!!!
ADVERTISEMENT
BLOG ARTICLE import | 2 ARTICLE FOUND
- 2008/01/25 [ORACLE] A유저의 DB를 Export 해서 B유저의 DB에 Import 하는 법
- 2008/01/20 Oracle import / export
================================================================================
※※※ 필수 사항 ※※※
================================================================================
1> export 받을때 반드시!! 데이타베이스 인스턴스의 문자셋과 동일하게
사용자의 환경변수(NLS_LANG)를 셋팅해주어야 한다.
1. 한글을 지원하는 문자셋
1-1. KO16KSC5601
1-2. KO16MSWIN949
1-3. UTF8
1-4. AL32UTF8
2. NLS_LANG 의 변수 설정방식 -> 도트(.) 다음의 변수 설정값을 DB와 동일하게 선택
ex) Korean_Korea.KO16KSC5601
ex) Korean_Korea.KO16MSWIN949
ex) American_America.KO16KSC5601
ex) American_America.UTF8
3. 확인방법
ex) select * from v$nls_parameters;
4. UNIX 의 경우 export 하기 전에 exp 유틸을 실행 시킬 계정의 .profile 에 아래 사항 셋팅
ex) export NLS_LANG=American_America.KO16KSC5601
5. WINDOW 의 경우 export 하기 전에 셋팅
ex) set NLS_LANG=Korean_Korea.KO16MSWIN949
2> 덤프/로그 파일명 명명 규칙
1. 덤프 파일명
=> 일시_기관코드_유저명(or table)_data(or schema)_순번.dmp
1-1. user 별로 스키마만 export 할 경우
ex) 20060512_Tong01_statdb_schema_01.dmp
1-2. user 별로 스키마+데이타를 export 할 경우
ex) 20060512_Tong01_statdb_data_01.dmp
1-3. table 별로 스키마만 export 할 경우
ex) 20060512_Tong01_table_schema_01.dmp
1-4. table 별로 스키마+데이타를 export 할 경우
ex) 20060512_Tong01_table_data_01.dmp
2. 로그 파일명
=> 실행명(exp/imp/shw)_덤프파일명.log
2-1. export 실행
ex) exp_20060512_Tong01_statdb_schema_01.log
2-2. import 전에 분석 작업 실행
ex) shw_20060512_Tong01_statdb_schema_01
2-3. import 실행
ex) imp_20060512_Tong01_statdb_schema_01
3> [권고사항] export는 user별로 받는다!!
4> import 전에 import 할 대상 user는 생성되어 있어야 된다!! (user별 tablespace는 지정되어 있어야 된다.)
5> export/inport시 속도 향상을 위해 index는 로드하지 않고 리빌드 한다.(옵션 : indexes=n)
리빌드 명령어 : alter index scott.IDX_DD_TST_TAB_NO rebuild
6> import 시 tables=(*) 옵션을 주게 되면 synonym/view..등의 오브젝트는 빠지고 table만 import된다.
7> exp/imp 옵션은 적절히 이용..
단 import 시에 ignore=y 옵션 사용을 하게 되면 추가로 데이터가 들어가기 때문에,
sourceDB 와 targetDB의 데이터를 동기화 시킬 필요가 있을시에는 targetDB의 테이블 데이타를 삭제후 import한다.
================================================================================
※※※ user별 스키마만 export/import 사용 예 ※※※
================================================================================
1> exp system/manager@sourceDB owner=statdb file=20060512_Tong01_statdb_schema_01.dmp log=exp_20060512_Tong01_statdb_schema_01.log rows=n
2> imp system/manager@targetDB fromuser=statdb touser=scott file=20060512_Tong01_statdb_schema_01.dmp log=shw_20060512_Tong01_statdb_schema_01.log show=y
3> imp system/manager@targetDB fromuser=statdb touser=scott file=20060512_Tong01_statdb_schema_01.dmp log=imp_20060512_Tong01_statdb_schema_01.log rows=n grants=n resumable=y tables=(*)
================================================================================
※※※ user별 스키마+데이타 export/import 사용 예 ※※※
================================================================================
1> exp system/manager@sourceDB owner=statdb file=20060512_Tong01_statdb_data_01.dmp log=exp_20060512_Tong01_statdb_data_01.log rows=y grants=n indexes=n
2> imp system/manager@targetDB fromuser=statdb touser=scott file=20060512_Tong01_statdb_data_01.dmp log=shw_20060512_Tong01_statdb_data_01.log show=y
3> imp system/manager@targetDB fromuser=statdb touser=scott file=20060512_Tong01_statdb_data_01.dmp log=imp_20060512_Tong01_statdb_data_01.log rows=y ignore=y grants=n resumable=y commit=y indexes=n tables=(*)
================================================================================
※※※ table별 스키마만 export/import 사용 예 ※※※
================================================================================
1> exp system/manager@sourceDB tables=(statdb.cc%, statdb.dd%) file=20060512_Tong01_table_schema_01.dmp log=exp_20060512_Tong01_table_schema_01.log rows=n
2> imp system/manager@targetDB fromuser=statdb touser=scott file=20060512_Tong01_table_schema_01.dmp log=shw_20060512_Tong01_table_schema_01.log show=y
3> imp system/manager@targetDB fromuser=statdb touser=scott file=20060512_Tong01_table_schema_01.dmp log=imp_20060512_Tong01_table_schema_01.log rows=n grants=n resumable=y tables=(*)
================================================================================
※※※ table별 스키마+데이타 export/import 사용 예 ※※※
================================================================================
1> exp system/manager@sourceDB tables=(statdb.cc%, statdb.dd%) file=20060512_Tong01_table_data_01.dmp log=exp_20060512_Tong01_table_data_01.log rows=y grants=n indexes=n
2> imp system/manager@targetDB fromuser=statdb touser=scott file=20060512_Tong01_table_data_01.dmp log=shw_20060512_Tong01_table_data_01.log show=y
3> imp system/manager@targetDB fromuser=statdb touser=scott file=20060512_Tong01_table_data_01.dmp log=imp_20060512_Tong01_table_data_01.log rows=y ignore=y grants=n resumable=y commit=y indexes=n tables=(*)
http://blog.naver.com/oliedolie?Redirect=Log&logNo=60045241634 에서 발췌...








