관리 IMPORT and EXPORT

황제낙엽 2007.07.05 17:18 조회 수 : 670 추천:97

sitelink1  
sitelink2  
extra_vars5  
extra_vars6  
http://www.alato.ne.jp/kazu-/vb/oracle_tip.htmhttp://database.sarang.net/?inc=read&aid=11948&criteria=oracle&subcrit=tutorials&id=&limit=20&keyword=&page=4

IMPORT ?

⊙ EXPORT 덤프 파일을 읽어서 그 안에 저장되어 그 파일안에 있는 명령을 실행시킵니다.

⊙ 데이터베이스를 복구하거나 재구성하기위해 사용될 수 있습니다.

⊙ 기본적으로 IMPORT는 각 테이블을 IMPORT한 후 COMMIT을 합니다.


▣ Import Parameter

- userid : IMPORT를 실생시키는 계정의 username/password명

- buffer : 데이터를 행들을 가져오는데 사용되는 buffer의 bytes수

- file : IMPORT될 EXPORT 덤프 파일명

- show : 파일 내용이 화면에 표시되어야 할 것인가를 나타냄(Y/N 플래그)

- ignore : IMPORT중 CREATE명령을 실행할 때 만나게 되는 에러들을 무시할 것인지 결정 (Y/N 플래그)

- indexes : 테이블 INDEX의 IMPORT여부(Y/N 플래그)

- rows : 테이블 데이터를 IMPORT할 것인가(Y/N 플래그) 만약 "N"로 설정하면 데이터베이스 객체들에 대한 DDL만이 실행됩니다.

- full : FULL엑스포트 덤프 파일이 IMPORT 할때 사용합니다.

- tables : IMPORT될 테이블 리스트

- commit : 배열(배열의 크기는 BUFFER에 의해 설정됩니다) 단위로 COMMIT을 할것인가 결정 (기본적으로는 테이블 단위로 COMMIT을 합니다. )

- fromuser : EXPORT덤프 파일로 부터 읽혀져야 하는 객체들을 갖고 있는 테이터베이스 계정

- touser : EXPORT덤프 안에 있는 객체들이 IMPORT될 데이터베이스 계정


▣ Import 예제

예제1) 전체 데이터베이스가 IMPORT됩니다. (Full Level)

C:>imp userid=system/manager file='C:full.dmp' full=y

예제2) scott의 유저 IMPORT를 실행 합니다.(User Level)

C:>imp userid=scott/tiger file='C:scott.dmp'

예제3) 다른 계정으로 IMPORT하기

==> scott유저의 데이터를 EXPORT받아서 test 유저에게 IMPORT하는 예제 입니다.

C:>exp userid=system/manager file='C:scott.dmp' owner=scott

C:>imp userid=system/manager file='C:scott.dmp' fromuser=scott touser=test

예제4) 원격으로 접속하여 임포트하기

    - ユ?ザモ?ド
        imp ユ?ザ名/パスワ?ド@サ?ビス名 file=ファイル名 logfile=ログファイル名 fromuser=インポ?ト元ユ?ザ名 touser=インポ?ト先ユ?ザ名

    - 表モ?ド
        imp ユ?ザ名/パスワ?ド@サ?ビス名 file=ファイル名 logfile=ログファイル名 fromuser=インポ?ト元ユ?ザ名 touser=インポ?ト先ユ?ザ名 tables=(テ?ブル1,テ?ブル2,???)


EXPORT ?

⊙ 오라클에서 제공하는 논리적인 백업에 사용되는 유틸리티로써, binary file형태로 기록합니다.

⊙ 데이터베이스가 가동중인 상태에서 실행합니다.

⊙ 전체 데이터베이스, 특정 사용자, 특정 테이블들을 엑스포트 시킬 수 있습니다.

⊙ 권한, 익덱스, 또한 연관된 제약조건들과 같이 테이블들과 연관되는 데이터 딕셔너리 정보도 엑스포트 시킬 것인가를 선택할 수 있습니다.

⊙ 마지막 엑스포트 이후로변경된 테이블들에 대해서만 엑스포트 작업을 실행 할 수도 있습니다.


▣ Export Paramger

- userid : EXPORT를 실행시키고 있는 username/password명.

- buffer : 데이터 행들을 가져오는데 사용되는 버퍼의 크기.

- file : 생성되는 EXPORT덤프 파일명.

- filesize : EXPORT덤프 파일의 최대 크기

- grants : 데이터베이스 객체에 대한 권한 정보의 EXPORT여부 (Y/N 플래그)

- indexes : 테이블에 대한 INDEXES의 EXPORT여부 (Y/N 플래그)

- rows : 행들에 대한 EXPORT여부. (Y/N 플래그) 만약 “no”이면 데이터는 EXPORT되지않고 테이블의 정의만 EXPORT 됩니다.

- constraints : 테이블에 대한 제약조건 정보의 EXPORT여부 (Y/N 플래그)

- compress : IMPORT에 대비하여 테이블의 데이터를 한 extent로 압축 할것인가의 여부 (Y/N 플래그)

- full : 전체 데이터베이스를 EXPORT할것인가의 여부 (Full Level Export) (Y/N 플래그)

- owner : EXPORT될 데이터베이스의 소유자명 (User Level Export)[owner=user]

- tables : export될 테이블의 리스트(Table Level Export) [tables=(table1, table2, ...)]


▣ Full Level Export

- 전체 데이터베이스가 엑스포트 됩니다.

- 모든 테이블스페이스, 모든 사용자, 또한 모든 객체, 데이터들이 포함됩니다.

예제1) C:>exp userid=system/manager file='C:full.dmp' full=y
예제2) 원격으로 접속하여 익스포트하기
    exp userid=ctw/ctw@서비스명 file='C:ctw.dmp' owner=litesneo



기타정보

Export/Import 에는 여러가지 옵션이 있는데요, 아래와 같이 간단한 옵션만 주셔도 크게 무리는 없습니다.
제가 주로 사용하는 옵션들은 아래와 같습니다.

제가 한 20번 정도 이관을 해봤는데, 트리거나 Function 들도 문제없이 다 이관 되더라구요.
만약 일부 빠진 Object 가 있다면 오렌지, TOAD, PL/SQL Developer 등을 이용하여 Script 를 뽑은 뒤에 따로 생성을 해주시면 되구요.
buffer 크기는 메모리가 되는 한도내에서 잡으시구요

-- Export 시
exp system/시스템pw owner=dbman    direct=y buffer=52428800 compress=n feedback=1000 file=/home15/EXP/dbman.dmp    log=/home15/EXP/dbman.log

-- Import 시
imp system/시스템pw fromuser=dbman    touser=dbman    commit=y ignore=y feedback=1000 buffer=52428800 file=/home15/EXP/dbman.dmp     log=/home15/EXP/dbman_imp.log 

그리고 Invalid Object Check 는 우선 이관전에 해당 유저에 Invalid Object 가 몇 개 있었는지 확인하시고,
이관 이후에 추가로 Invalid 로 떨어진 Object 가 있는지 확인하라는 말입니다.

system 계정으로 접속하셔서 아래 sql 문을 돌리시면 Invalid Object 를 알 수 있습니다.

select * from dba_objects where status = 'INVALID';

그리고 Invalid Object 를 일괄 Recompile 할 경우는 Utlrp 를 사용하시면 됩니다.

cd $ORACLE_HOME/rdbms/admin
sqlplus "/as sysdba"
@utlrp

위와 같이 실행하시면 Invalid 가 떨어졌던 Object 들에 대해 일괄 Recompile 이 됩니다.
물론 db link 나 tns 정보가 없어서 Invalid 가 떨어진 Object 에 대해서는 기존과 동일하게 생성이 되어 있어야 되겠죠^^

추가적으로 궁금하신 사항이 있으시면 다시 글 남기세요.

그럼 건승하시길 빕니다.

처음이 제일 힘들죠.... 저도 처음엔 어찌나 고생을 했던지...

천재재남(jnyang)님이 2006-08-18 14:10:43에 작성한 댓글입니다.