컴퓨터활용/오라클

ORACLE exp 예제

멜번초이 2008. 7. 14. 14:34

개발 중에 데이타를 수시로 백업을 해 둘 필요가 있다면 오라클에서 제공하는 exp 를 이용해서 데이타를 백업할 수 있다. 

우선 다음과 같이 백업하는 shell 프로그램을 간단하게 작성하고 backupdb.sh 라고 저장을 한다.  db 접속할 user와 password, 저장할 백업파일명, 그리고 테이블들의 list는 당연히 본인의 것으로 수정을 해야 할 것이다.  

유닉스에서는 테이블수가 많을 경우 역슬래쉬문자(\) 로 라인을 끊어서 나열열할 수 있다.  테이블을 지정하지 않고 특정 유저의 모든 오브젝트를 내려받고자 한다면 USER=user_id 로 기술하면 되겠다. 

#!/usr/bin/ksh
today=`date '+20%Y%m%d-%H%M%S'`
export back_file=~/backup/fee_data_${today}.dmp
exp
FEECON/passwd@DBDCBS1 FILE=$back_file GRANTS=Y INDEXES=Y ROWS=Y CONSTRAINTS=Y TRIGGERS=Y COMPRESS=Y DIRECT=N CONSISTENT=N STATISTICS=ESTIMATE TABLES=AFEE_AMT_INVL_BY_DTLS_DATA,AFEE_BWR_CRDT_GRD_BY_DTLS_DATA

쉘을 작성했으면 실행을 시킨다. 그러면 다음과 같은 메시지를 보이면서 지정된 디렉토리에 백업 파일이 생성되면서 export 될 것이다.

[cbssvd01@e9812978:/users/e9812978/shl]backupdb.sh

Export: Release 10.2.0.3.0 - Production on Mon Jul 14 14:32:49 2008

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning and Data Mining options
Export done in KO16MSWIN949 character set and utf8 NCHAR character set

About to export specified tables via Conventional Path ...
. . exporting table     AFEE_AMT_INVL_BY_DTLS_DATA         66 rows exported
. . exporting table AFEE_BWR_CRDT_GRD_BY_DTLS_DATA         36 rows exported
. . exporting table            AFEE_COMM_BASE_DATA        555 rows exported
. . exporting table     AFEE_ETC_CLAS_BY_DTLS_DATA         47 rows exported
. . exporting table            AFEE_PCSE_DTLS_DATA        176 rows exported
. . exporting table   AFEE_PRIM_RSN_LIST_BASE_DATA          0 rows exported
. . exporting table          AFEE_TRM_BY_DTLS_DATA        555 rows exported
. . exporting table    AFEE_WDAY_DRTM_BY_DTLS_DATA         83 rows exported
Export terminated successfully without warnings.
[cbssvd01@e9812978:/users/e9812978/shl]cd ../backup
[cbssvd01@e9812978:/users/e9812978/backup]ll
총계 584
drwxr-xr-x   6 e9812978 cbsdev         4096  7월 14일 14:32 ..
drwxrwxrwx   2 e9812978 cbsdev          256  7월 14일 14:32 .
-rw-rw-rw-   1 e9812978 cbsdev       294912  7월 14일 14:33 fee_data_20080714.dmp
[cbssvd01@e9812978:/users/e9812978/backup]

백업한 파일을 이용하여 필요한 경우에 이것을 import 시켜서 데이타를 원복시킬 수 있다.

윈도우의 커맨드모드에서 직접 export 를 실행시키고자 한다면 다음과 같이 사용할 수 있을 것이다.

EXP FEECON/passwd@DBDCBS1 FILE='C:\Documents and Settings\SHCHOI\My Documents\01.프로젝트\30.개발\수수료속성.DB백업\export.20080714.dmp' GRANTS=Y INDEXES=Y ROWS=Y CONSTRAINTS=Y TRIGGERS=Y COMPRESS=Y DIRECT=N CONSISTENT=N STATISTICS=ESTIMATE TABLES=(AFEE_AMT_INVL_BY_DTLS_DATA,AFEE_BWR_CRDT_GRD_BY_DTLS_DATA,AFEE_COMM_BASE_DATA,AFEE_ETC_CLAS_BY_DTLS_DATA,AFEE_PCSE_DTLS_DATA,AFEE_PRIM_RSN_LIST_BASE_DATA,AFEE_TRM_BY_DTLS_DATA,AFEE_WDAY_DRTM_BY_DTLS_DATA)

윈도우에서는 unix에서와는 달리 테이블의 리스트를 괄호로 묶을 수 있다.

Export: Release 10.2.0.1.0 - Production on 월 7월 14 14:26:31 2008

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

다음에 접속됨: Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning and Data Mining options
KO16MSWIN949 문자 설정과 utf8 NCHAR 문자 설정에서 엑스포트가 종료되었습니다

지정된 테이블을 엑스포트하려고 합니다 via 규정 경로...
. . 테이블     AFEE_AMT_INVL_BY_DTLS_DATA(를)을 엑스포트 중         66 행이 엑스포트됨
. . 테이블 AFEE_BWR_CRDT_GRD_BY_DTLS_DATA(를)을 엑스포트 중         36 행이 엑스포트됨
. . 테이블            AFEE_COMM_BASE_DATA(를)을 엑스포트 중        555 행이 엑스포트됨
. . 테이블     AFEE_ETC_CLAS_BY_DTLS_DATA(를)을 엑스포트 중         47 행이 엑스포트됨
. . 테이블            AFEE_PCSE_DTLS_DATA(를)을 엑스포트 중        176 행이 엑스포트됨
. . 테이블   AFEE_PRIM_RSN_LIST_BASE_DATA(를)을 엑스포트 중          0 행이 엑스포트됨
. . 테이블          AFEE_TRM_BY_DTLS_DATA(를)을 엑스포트 중        555 행이 엑스포트됨
. . 테이블    AFEE_WDAY_DRTM_BY_DTLS_DATA(를)을 엑스포트 중         83 행이 엑스포트됨
엑스포트가 경고 없이 정상적으로 종료되었습니다.


출력되는 결과의 내용은 UNIX 에서 export 했을 때와 별반 차이가 없다.



export 받은 것을 다시 다른 데이타베이스에서 import 한다면 다음과 같은 결과가 나온다. 

[oracle] imp hre/hrepas@ORCL  FILE='exp_dat_hre.dmp' GRANTS=Y INDEXES=Y ROWS=Y CONSTRAINTS=Y IGNORE=N SHOW=N DESTROY=N ANALYZE=Y SKIP_UNUSABLE_INDEXES=N RECALCULATE_STATISTICS=N FROMUSER=hre TOUSER=HRE

Import: Release 11.2.0.3.0 - Production on Wed Mar 7 21:41:30 2012

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

Connected to: Oracle Database 11g Release 11.2.0.3.0 - 64bit Production
With the Real Application Clusters option

Export file created by EXPORT:V11.02.00 via conventional path
import done in UTF8 character set and AL16UTF16 NCHAR character set
export client uses KO16KSC5601 character set (possible charset conversion)
. . importing table                           "TB_CD"        101 rows imported
. . importing table                     "TB_CDSET"          14 rows imported
. . importing table                 "TB_LOG_HIST"        793 rows imported
. . importing table                       "TB_MENU"         10 rows imported
. . importing table                        "TB_ROLE"          7 rows imported
. . importing table              "TB_ROLE_MAPN"          10 rows imported
. . importing table                       "TB_SCRN"           20 rows imported
. . importing table                "TB_SCRN_ATHR"         60 rows imported
. . importing table                     "TB_FORM"           226 rows imported
. . importing table                 "TB_MGT_ACHV"     352924 rows imported
. . importing table                    "TB_MSG"                  36 rows imported
. . importing table          "TB_SECT_DAY_ACCM"         40 rows imported
. . importing table           "TB_SECT_MM_ACCM"        710 rows imported
. . importing table                   "TB_WAGE"             1043 rows imported
. . importing table                   "TB_LOG_MSG"             1 rows imported
Import terminated successfully without warnings.
[oracle@ihrdb01:/oracle]