티스토리 뷰

sql

ORACLE DB dump(pump) - Import

개몽구리 2018. 4. 29. 17:46

Oracle Data Pump는 데이터 베이스에서 다른 데이터베이스로 메타 데이터를 빠르게 이동시켜주는 기능

 - oracle database 10g 이상에서만 사용 가능 


import 시 디렉토리 객체를 만들어야 하며 이는 실제 디렉토리에 대한 포인터 일 뿐 실제로 데이터베이스 서버의 파일 시스템에 실제 디렉토리를 만들어주지 않음


물리적 디렉토리를 만들어주는 것은 아님 


디렉토리 포인터 생성

CREATE OR REPLACE DIRECTORY 디렉토리명  AS '경로' ;


ex ) 

읽어올 test(파일명).dmp 파일의 위치가 /temp1/data 라면


1
2
3
4
5
6
7
sqlplus "/as sysdba"
 
SQL> CREATE OR REPLACE DIRECTORY data AS '/temp1/data';
 
Directory created.
 
SQL> SELECT * FROM dba_directories; -- 디렉토리 생성확인
cs


---  결과 


디렉토리 위치는 이동식 디스크여도 상관 없음 (경로 설정을 잘 할것!)



디렉토리에 대한 권한 설정


GRANT READ, WRITE ON DIRECTORY 디렉토리명(위에서 설정한 디렉토리명) TO 계정명;


1
2
3
SQL> GRANT READ, WRITE ON DIRECTORY DATA TO SYSTEM;
--system 계정에 data디렉토리를 읽고 쓸 수 있는 권한 설정
 
Grant succeeded.
cs


import를 위한 사전 설정을 마침




IMPORT


impdp 계정명/비번 file=파일명 directory=디렉토리명


ex) /temp1/data/test.dmp <-.dmp 파일 경로


1
C:\> impdp system/password file=test.dmp directory=DATA
cs


import시 모니터링


1
2
3
4
5
6
7
8
9
SQL> select * from dba_datapump_jobs;
 
--or
 
SQL> select owner,sum(bytes/1024/1024) MB from dba_segments
where owner like upper('계정명')||'%' group by owner order by owner;
cs



dmp파일 경로에 log 파일이 생성되며, 오류 시 로그를 통해 문제를 해결할 수 있음



- ERROR 사례


1) tablespace를 미리 생성해줘야 하거나, 계정을 생성해줘야 하는 경우 

  로그에 설정 값들을 확인하여 생성해줘야함.


TABLESPACE 생성 방법


create temporary tablespace 테이블스페이스명 '오라클 dbf 생성위치' size 300m autoextend on; 

--임시 테이블스페이스


create tablespace 테이블스페이스명 '오라클 dbf 생성위치' size 500m autoextend on; 



2) oracle database의 character set 이 다를 경우 컬럼의 사이즈에 오버되며 오류가 날수 있음.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
--현재 character set 확인
 
select * from nls_database_parameters where parameter like '%CHARACTERSET%';
 
-- 변경 시작 (/as sysdba로 접속)
 
shutdown immediate;
 
startup mount
 
alter system enable restricted session
 
alter system set job_queue_processes=0
 
alter database open;
 
alter database character set internal_use KO16MSWIN949 -- 바꾸고자하는 character set
 
shutdown immediate;
 
startup
cs


US7ASCII
오 라클 DB를 사용하는 곳을 보면 아직도 US7ASCII을 Character Set으로 사용하는 곳이 많이 있는 곳으로 알고 있다. 언뜻 보기에는 US7ASCII도 한글을 지원하는 것처럼 보이지만, 사실은 한글이 저장되는 것이 아니고, 한글을이진코드 형태로 변환하여 저장 및 출력하는 형태다.
 
한글을 지원하는 Character Set
현재까지 오라클 DB에서 한글을 사용하려면 Character Set을 "KO16KSC5601", "KO16MSWIN949", "UTF8", "AL32UTF8"만 사용할 수 있다.
 
KO16KSC5601
한글 완성형 코드와 일치하며 일반적으로 많이 사용되는 2350자의 한글, 4888자의 한자와 히라카나, 카타카나, 그리고 영문 및 각종 기호들을 포함하고 있다.
 
KO16MSWIN949
Windows-949 Character Set은 MS사의 Windows Codepage 949번, 즉 한글 코드 페이지를 따른 코드셋이다. 이는 완성형(KO16KSC5601)을 그대로 포함하고 있으며, 추가로 현대 한글 조합으로 표현할 수 있는 모든 가짓수에 해당하는 8822자의 한글을 추가해 포함하고 있다. 그러니까 "Windows-949 Character Set은 KSC5601의 수퍼셋(SuperSet)"이 되며, 따라서 "KO16MSWIN949 또한 KO16KSC5601의 수퍼셋"이 된다.
 
UTF8/AL32UTF8
UTF8 은 유니코드를 구현한 Character Set 중에 가변결이 인코딩 방식을 택하고 있는 Character Set이다. 가변 길이를 위해 일종의 플래그 비트를 각 바이트마다 포함시켜야 하다보니, 한 글자를표현하는데 필요한 바이트의 길이가 최대 3바이트(AL32UTF의 경우 6바이트)까지 늘어날 수 있다.


- 출처 http://lkrox.blogspot.kr/2014/01/oracle-utf-8.html





IMPORT 를 수행하지 않고  DDL  문장만 추출 할 수도 있음.


DDL 추출


1
2
3
4
5
6
7
impdp directory = 디렉토리명 dumpfile = 덤프파일명 sqlfile = sql파일명 
 
-- Package, Function, Procedure 만 추출 하고자 할 시  
impdp directory = 디렉토리명 dumpfile = 덤프파일명 sqlfile = sql파일명 
include=PACKAGE,FUNCTION,PROCEDURE 
 
cs




'sql' 카테고리의 다른 글

sysdba 접속 불가  (0) 2019.01.23
자원 대기중 교착 상태 검출 에러  (0) 2019.01.23
시퀀스 추출  (0) 2019.01.23
ROLLUP(), CUBE(), RANK, ROW_NUMBER()  (0) 2018.03.20
over() 함수_partition  (0) 2018.03.20
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함