오라클 OCP 오라클자격증 OCP자격증 데이터베이스 DB 데이터베이스관리자 DB관리자 오라클학원 OCP학원 오라클 OCP 오라클자격증 OCP자격증 데이터베이스 DB 데이터베이스관리자 DB관리자 오라클학원 OCP학원 오라클 OCP 오라클자격증 OCP자격증 데이터베이스 DB 데이터베이스관리자 DB관리자 오라클학원 OCP학원 오라클 OCP 오라클자격증 OCP자격증 데이터베이스 DB 데이터베이스관리자 DB관리자 오라클학원 OCP학원오라클 OCP 오라클자격증 OCP자격증 데이터베이스 DB 데이터베이스관리자 DB관리자 오라클학원 OCP학원 오라클 OCP 오라클자격증 OCP자격증 데이터베이스 DB 데이터베이스관리자 DB관리자 오라클학원 OCP학원 오라클 OCP 오라클자격증 OCP자격증 데이터베이스 DB 데이터베이스관리자 DB관리자 오라클학원 OCP학원
Export 및 Import! 유틸리티 개요
- Export 유틸리티는 다음에 대한 논리적 백업을 제공합니다.
- 데이터베이스 객체
- 스키마 객체
- 테이블스페이스
- 전체 데이터베이스
- Import! 유틸리티는 데이터베이스로 데이터를 옮기기 위해 유효한 엑스포트 파일을 읽는 데 사용됩니다. 엑스포트 파일에서 임포트된 객체에는 리두 로그 기록을 적용할 수 없으므로 데이터 손실이 발생할 수는 있지만 이를 최소화할 수 있습니다.
DBA는 Export 및 Import! 유틸리티를 사용하여 다음과 같은 작업을 수행함으로써 일반적인 운영 체제 백업을 보완할 수 있습니다.
- 데이터베이스 객체 또는 전체 데이터베이스의 기록(historical) 아카이브 생성. 변화하는 업무 요구 사항을 지원하기 위해 스키마를 수정하는 경우가 여기에 해당됩니다.
- 이진 파일에 테이블 정의 저장. 주어진 스키마 구조의 기준선(baseline)을 생성 및 유지 관리할 때 유용합니다.
- Oracle 버전 간의 데이터 이동. Oracle7에서 Oracle8로 업그레이드하는 경우를 예로 들 수 있습니다.
- 다음과 같은 경우를 방지합니다.
- 실수로 테이블을 삭제하거나 절단(truncate)하는 등의 사용자 오류
- 테이블의 논리적 훼손
- 데이터베이스의 일부분에만 영향을 주는 잘못된 일괄 처리 작업 또는 DML 문
- 다음을 복구합니다.
- 한 물리적 데이터베이스의 개별 테이블스페이스에 여러 논리적 데이터베이스가 존재하는 경우 논리적 데이터베이스 하나를 나머지 물리적 데이터베이스와는 다른 시점으로 복구합니다.
- VLDB(Very Large Database)에 있는 테이블스페이스를 복구할 때 백업에서 전체 데이터베이스를 복원하여 롤포워드하는 것보다 TSPITR(tablespace point-in-time recovery)이 더 효과적인 경우 이를 복구합니다.
참고: 이 단원에서는 Export 및 Import! 유틸리티에 대해 기술하고 이들이 백업 및 복구 작업에 미치는 영향에 대해 설명합니다. 이 유틸리티에 대한 자세한 설명을 보려면 Oracle8i Server Utilities 설명서를 참조하십시오.
#################################################
EXPORT 유틸리티 실행방법
. 대화식 다이얼로그
. Enterprise Manager 내의 Data Manager의 Export페이지
. 파라미터를 명시함으로써 명령라인 인터페이스
#################################################
익스포트 방법
- 대화식 다이얼로그. 운영체제에서 EXP 명령을 명시하고 아무런 파라미터도 명시하지 않음으로 Export 유틸리티는 디폴트 값을 제공하면서 입력을 위한 프롬프트를 줄 것입니다.
- Oracle Enterprise Manager 내의 Data Manager의 Export 페이지.
- 명령 라인 모드를 선택 시 선택된 옵션들은 명백히 명령 라인에 명시되어야 합니다. 어떠한 빠진 옵션들은 Export 유틸리티 디폴트 값들이 될 것입니다.
주: 많은 옵션들이 명령 라인 인터페이스를 사용하여야만 이용 가능합니다. 그러나 명령 라인과 함께 파라미터 파일을 사용할 수 있습니다.
엑스포트 방식
- 대화식 대화상자: 운영 체제에서 매개변수를 사용하지 않고 EXP 명령을 지정하면 Export 유틸리티는 기본값을 제공하면서 입력 프롬프트를 표시합니다.
- Oracle Enterprise Manager에 포함되어 있는 Data Manager의 엑스포트 페이지
- 명령행 모드를 선택할 경우 선택한 옵션을 명령행에 명시적으로 지정해야 합니다. 옵션을 누락하면 Export 유틸리티의 기본값이 지정됩니다.
참고: 많은 옵션이 명령행 인터페이스에서만 사용 가능하지만 명령행과 함께 매개변수 파일을 사용할 수도 있습니다.
명령행 엑스포트
Export 유틸리티의 명령행 모드를 사용하여 데이터베이스 데이터를 운영 체제 파일로 복사할 수 있습니다. 이 파일은 Import! 유틸리티에서만 읽을 수 있습니다.
예제
행을 포함하여 scott의 스키마에 속한 emp 및 dept 테이블을 포함하는 expincr1.dmp 엑스포트 파일을 생성합니다.
$ exp scott/tiger tables=(emp,dept) rows=y file=expincr1.dmp
행을 포함하여 scott의 스키마에 속한 모든 객체를 포함하도록 expdat.dmp라는 빠른 엑스포트 파일을 생성합니다.
$ exp system/manager owner=SCOTT DIRECT=Y
ts_emp 테이블스페이스에 속한 모든 객체의 정의를 포함하는 expdat.dmp 엑스포트 파일을 생성하고 ts_emp.log 로그 파일을 생성합니다.
$ exp system/manager TRANSPORT_TABLESPACE=y TABLESPACES=(ts_emp) LOG=ts_emp.log
마지막 누적 또는 완전 엑스포트 이후 데이터베이스에서 수정된 모든 정의 및 데이터를 포함하는 expcum1.dmp 엑스포트 파일을 생성합니다.
$ exp system/manager FULL=y INCTYPE=cumulative FILE=expcum1.dmp
참고: 명령행 모드 옵션은 대화식 모드 옵션과 유사합니다.
엑스포트 매개변수
매개변수 |
설명 |
USERID |
엑스포트할 스키마 객체의 사용자 이름/암호 |
FILE |
출력 파일 이름 |
ROWS |
엑스포트 파일에 테이블 행을 포함시킬 것인지 여부: (Y)es/(N)o |
FULL |
전체 데이터베이스를 엑스포트할 것인지 여부: (Y)es/(N)o |
OWNER |
엑스포트할 사용자: 사용자 이름 |
TABLES |
엑스포트할 테이블: 테이블 목록 |
INDEXES |
인덱스를 엑스포트할 것인지 여부: (Y)es/(N)o |
DIRECT |
직접 모드 엑스포트 지정 여부: (Y)es/(N)o |
INCTYPE |
엑스포트 레벨 유형 |
PARFILE |
매개변수가 지정된 파일 이름 |
HELP |
대화식 모드에서 엑스포트 매개변수 표시(Y) |
LOG |
정보 및 오류 메시지용 파일 이름 |
CONSISTENT |
엑스포트 중에 데이터가 갱신될 경우 데이터베이스의 읽기 일관성 뷰를 제공할 것인지 여부: (Y)es/(N)o |
BUFFER |
데이터 버퍼 크기(바이트): (정수) |
TRANSPORT_TABLESPACE |
이동 가능한 테이블스페이스 메타 데이터의 엑스포트 설정(릴리스 8.1 전용) |
TABLESPACES |
이동할 테이블스페이스(릴리스 8.1 전용) |
POINT_IN_TIME_RECOVER |
Export 유틸리티가 Oracle 데이터베이스에 있는 하나 이상의 테이블스페이스를 엑스포트할지 여부 표시(릴리스 8.0 전용) |
RECOVERY_TABLESPACES |
포인트 인 타임 복구를 사용하여 복구할 테이블스페이스 지정(릴리스 8.0 전용) Oracle Server Readme, Release 8.0.4 참조 |
COMPRESS |
하나의 확장 영역에 모든 데이터를 포함시킬지 여부 지정: (Y)es/(N)o |
참고: 위에 나열한 매개변수는 모든 Export 유틸리티 매개변수의 전체 목록이 아니며 DBA가 복원을 위해 자주 사용하는 매개변수입니다
완전한 익스포트 (Complete Export)
누적적(cumulative)이고 증분적인(incremental) 익스포트를 사용한다면 기본 백업을 생성하기 위해 정기적으로 완전한 익스포트를 수행해야 합니다. 완전한 익스포트 후에 자주 증분적인 익스포트를 수행하고 가끔 누적적인 익스포트를 수행하십시오. 주어진 시간 후에 다른 하나의 완전한 익스포트에 대해 이 사이클을 다시 반복해야 합니다.
위 예에서 보여지는 바와 같이 완전한 데이터베이스 익스포트는 모든 테이블과 데이터 정의를 백업해 줍니다.
제한사항
완전(Full) 데이터베이스 모드 (FULL=Y)로만 완전한, 증분적인 또는 누적적인 익스포트를 수행할 수 있습니다.
증분적인 익스포트 (Incremental Export)
증분적인 익스포트는 임의의 종류의 최근 익스포트 이후 변경된 객체들을 포함합니다. 증분적인 익스포트는 변경된 행 뿐만 아니라 테이블 정의 정보와 모든 테이블 데이터를 익스포트합니다. 전형적으로 여러분은 누적적 또는 완전한 익스포트 보다는 증분적 익스포트를 더욱 자주 수행합니다.
어떤 테이블에 대한 임의의 갱신은 (UPDATE, INSERT, 또는 DELETE) 자동적으로 증분적 익스포트 대상 테이블이 됩니다.
예
위 예에서 테이블 1, 3, 6은 완전한 익스포트인 Time 1에서 취한 최근 익스포트 이후로 변경이 발생하였습니다.
주: 증분적 익스포트는 몇몇 대형 테이블을 자주 액세스하는 응용 프로그램인 경우 매우 좋은 전략이 될 수 없습니다. 작은 테이블에 걸쳐 변경이 다소간 흩어져 있는 departmentalized 애플리케이션에 적합합니다.
누적적 익스포트 (Cumulative Export)
누적적 익스포트는 가장 최근의 누적적 또는 완전한 익스포트 이후로 변경된 테이블들을 백업합니다.
예
위 예에서 테이블 1, 2 및 6은 Time 1 이후로 변경되었으며 테이블 4는 Time 2 이후로 변경되었습니다. 따라서 누적적 익스포트는 가장 최근 완전 익스포트 이후로 변경된 모든 테이블들을 백업합니다.
incremental 또는 cumulative export를 수행할 때에는 full=y 파라미터와 함께 inctype 파라미터를 사용합니다.
incremental export 일 경우는,
exp sys/change_on_install file=filename full=y inctype=incremental
cumulative export 일 경우는,
exp sys/change_on_install file=filename full=y inctype=cumulative
와 같이 실행합니다.
증분적 및 누적적 익스포트의 이점
증분적 및 누적적 익스포트는 많은 사용자들이 그들 자신의 테이블들을 생성하는 환경에서 일하는 DBA가 직면하고 있는 문제점들을 해결하는 것을 도와 줍니다. 이런 유형의 익스포트의 이점은 다음과 같은 것을 포함합니다:
- 사용자가 우연히 삭제시킨 테이블을 DBA가 복원 가능
- 더 적은 데이터가 익스포트 되기 때문에 더 작은 익스포트 파일 필요
- 가장 최근의 증분적 또는 누적적 익스포트 이후로 변경된 객체들만 백업되기 때문에 더 적은 시간 소요
Direct Path 익스포트 개념
Direct-Path 기능을 사용함으로써 데이터를 훨씬 더 빨리 추출할 수 있습니다. 파라미터 DIRECT=Y가 명시될 때 Export 유틸리티는 SQL-명령 처리 계층을 통하는 대신 데이터 계층에서 직접적으로 읽습니다.
Direct-Path 익스포트의 구조
- 익스포트의 direct 모드는 파라미터 DIRECT=Y를 명시함으로써 설정될 수 있습니다.
- Direct-Path 익스포트는 인스턴스의 다른 자원들과 경쟁하지 않습니다.
- Direct read 모드의 경우 세션에 의해 사용되는 사적인 영역(private area)으로 데이터 베이스 블록을 읽어 들입니다.
- 행들은 전송을 위해 Two-Task Command(TTC) 버퍼로 직접 이동됩니다.
- TTC 버퍼 내의 데이터는 Export 유틸리티가 기대하는 형식으로 되어 있습니다.
Direct-Path 익스포트의 명시
Direct-Path 익스포트 사용 전에 catexp.sql 스크립트를 실행해야 합니다.
DIRECT 파라미터 사용 방법
명령 라인 옵션
DIRECT 명령 라인 파라미터를 사용함으로써 Direct-Path 익스포트를 활성화할 수 있습니다.
$ exp user=scott/tiger full=y direct=y
파라미터 파일
exp_par.txt란 파라미터 파일의 예:
USERID=scott/tiger
TABLES= (emp,dept)
FILE=exp_one.dmp
DIRECT=Y
운영체제 프롬프트에서 파라미터를 실행하기 위해:
$ exp parfile=exp_param.txt
Direct-Path 익스포트
Export 유틸리티의 Direct-Path 옵션은 conventional-path 익스포트와는 구별되는 어떤 기능을 도입합니다.
Direct-Path 기능
- 익스포트 유형은 화면 출력, 익스포트 덤프 파일 및 LOG 파라미터로 명시한 로그 파일에 표시됩니다.
- 데이터는 이미 익스포트가 기대하는 형식으로 되어 있으며 이로써 불필요한 데이터 전환을 피해 줍니다. 데이터는 Export 클라이언트에게 이동되는데 이 클라이언트가 익스포트 파일에 데이터를 씁니다.
- Direct-Path 익스포트는 최적화된 “SELECT * FROM table”을 어떤 형용사구 없이 사용합니다.
주: 열 데이터의 형식이나 익스포트 덤프 파일의 명세는 conventional-path 익스포트와는 다릅니다.
Direct-Path 제한 사항
Export 유틸리티의 direct-Path 옵션은 conventional-path 익스포트와 구별해 주는 어떤 제한 사항들을 갖고 있습니다.
- Direct-Path 익스포트 기능은 대화식 EXP 세션을 사용하여 활성화될 수 없습니다.
- Direct-Path 옵션이 사용될 때 클라이언트측의 문자 집합은 서버측의 문자 집합과 일치해야 합니다.
- Export 유틸리티의 BUFFER 파라미터는 Direct-Path 익스포트에 아무런 영향을 미치지 않는데 이 파라미터는 conventional-path 옵션에 의해서만 사용됩니다.
- VARRAY 열 및 중첩된 테이블을 포함하여 LOB, BFILE, REF 또는 객체형 열을 갖고 있는 행을 direct-Path로 임포트 할 수 없습니다. 데이터가 아니라 테이블을 생성하기 위한 데이터 정의 정보만 익스포트 됩니다.
Export 유틸리티의 호환성
DBA로서 Export 유틸리티와 관련된 호환성 문제를 알 필요가 있습니다.
문제점
- 오라클7 익스포트 파일을 생성하기 위해 오라클8 데이터베이스에 대해 오라클7 Export 유틸리티를 사용할 수 있습니다.
- 오라클6 (또는 이전) Export는 오라클8 데이터베이스에 대해 사용될 수 없습니다.
- 낮은 버젼의 Export 유틸리티가 더 높은 버젼의 오라클 서버와 실행될 때 낮은 버젼에서 존재하지 않았던 데이터베이스 객체들의 범주는 익스포트로부터 제외됩니다.
- 테이블이 Direct-Path 옵션을 사용하여 생성되었다면 이 파일은 다른 포맷으로 되어있으며 오라클7.3 이전 Import! 유틸리티에 의해 읽혀질 수 없습니다.
- 더 낮은 버젼의 오라클 서버 Import!를 사용하여 더 높은 버젼의 Export 이용을 시도할 때 자주 에러를 산출합니다.
Import! 유틸리티
Import! 유틸리티는 유효한 Export 유틸리티 파일을 사용하여 데이터 복구 시 사용될 수 있습니다.
복구 위해 Import! 유틸리티의 사용
- 테이블 정의 정보는 익스포트 파일에 저장되기 때문에 테이블 정의 정보 생성. 행없이 데이터 임포트 선택시 단지 테이블 정의 정보만 생성할 것입니다.
- 테이블, 사용자 또는 Full 임포트 모드를 사용하여 유효한 익스포트 파일로부터 데이터 추출.
- 완전한, 증분, 또는 누적적인 익스포트 파일로부터 데이터 임포트.
- 이전에 언급한 방법들 중 하나를 사용하여 어떤 테이블이 우연히 삭제되거나 truncate 되는 사용자 장애 에러로부터 복구
Table 모드
Table 모드는 모든 테이블을 임포트하지 않고 사용자 스키마에서 지정된 모든 테이블을 임포트합니다. 권한 있는 사용자는 다른 사용자 소유의 지정된 테이블을 임포트할 수 있습니다.
User 모드
User 모드는 사용자 스키마에 있는 모든 객체를 임포트합니다. 권한 있는 사용자는 지정된 사용자 집합의 스키마에 있는 모든 객체를 임포트할 수 있습니다.
Tablespace 모드
Tablespace 모드를 사용하면 권한 있는 사용자가 Oracle 데이터베이스 간에 테이블스페이스 집합을 이동할 수 있습니다.
Full Database 모드
Full Database 모드는 SYS 스키마에 있는 객체를 제외한 모든 데이터베이스 객체를 임포트합니다. 이 모드에서는 권한 있는 사용자만 임포트를 수행할 수 있습니다.
예제
expincr1.dmp 엑스포트 파일을 사용하여 행을 포함해 emp 및 dept 테이블을 scott 스키마로 임포트합니다.
$ imp scott/tiger tables=(emp,dept) rows=y file=expincr1.dmp
expincr1.dmp 엑스포트 파일을 사용하여 행을 포함해 Scott 스키마에 속한 모든 객체를 임포트합니다.
$ imp system/manager FROMUSER=scott file=expincr1.dmp
expdat.dmp 엑스포트 파일을 사용하여 ts_emp 테이블스페이스에 속한 모든 객체의 정의를 임포트합니다.
$ imp system/manager TRANSPORT_TABLESPACE=y TABLESPACES=ts_emp
참고: 명령행 모드 옵션은 대화식 모드 옵션과 유사합니다.
임포트 매개변수
매개변수 |
설명 |
USERID |
임포트할 스키마 객체의 사용자 이름/암호 |
FILE |
입력 파일의 이름. 유효한 Export 유틸리티 파일이어야 합니다. |
ROWS |
임포트 파일에 테이블 행을 포함시킬지 여부 |
IGNORE |
해당 객체가 존재할 경우 생성 오류 무시 |
FULL |
전체 파일 임포트 |
TABLES |
임포트할 테이블 |
INDEXES |
인덱스를 임포트할 것인지 여부 |
INCTYPE |
증분 임포트 유형 지정. SYSTEM 및 RESTORE 옵션이 있습니다. |
PARFILE |
매개변수 사양 파일 |
HELP |
대화식 모드에서 엑스포트 매개변수 표시 |
LOG |
정보 및 오류 메시지용 파일 |
DESTROY |
데이터베이스를 구성하는 기존 데이터 파일을 재사용해야 할지 여부 지정 |
FROMUSER |
임포트할 객체를 포함하는 스키마 목록 |
TOUSER |
임포트할 스키마를 소유한 사용자 이름 목록 지정 |
INDEXFILE |
인덱스 생성 명령을 받을 파일 지정 |
TRANSPORT_TABLESPACE |
엑스포트 파일에 있는 이동 가능한 테이블스페이스 메타 데이터를 Import! 유틸리티가 임포트하도록 명령 |
TABLESPACES |
데이터베이스로 이동할 테이블스페이스 목록 |
DATAFILES |
데이터베이스로 이동할 데이터 파일 목록 |
TTS_OWNERS |
이동 가능한 테이블스페이스 집합에 있는 데이터를 소유한 사용자 목록 |
POINT_IN_TIME_RECOVER |
Import! 유틸리티가 나머지 데이터베이스에 영향을 주지 않고 Oracle 데이터베이스에 있는 하나 이상의 테이블스페이스를 이전 시점으로 복구할지 여부 표시(릴리스 8.0 전용) |
참고: 위에 나열한 매개변수는 모든 Import! 유틸리티 매개변수의 전체 목록이 아니며 DBA가 복원 작업을 위해 자주 사용하는 매개변수입니다.
임포트 과정 순서
테이블을 임포트할 때 익스포트 파일이 읽혀지고 테이블과 데이터는 다음 순서로 생성됩니다.
- 새로운 테이블이 생성됩니다. 요점은 이 테이블은 기술적으로 오라클에 새로운 (NEW) 테이블들입니다. 그들은 원래 테이블들과 같은 데이터 및 성격을 가지고 있으나 사실상 이 테이블들은 데이터베이스에 새로이 생성되어 집니다. 이것은 논리적으로 아카이브 로그 파일이 이 테이블들에 적용되어 질 수 없는 이유인데, 아카이브 로그는 새로이 생성된 테이블에 기술적으로 아무런 갱신도 하지 않기 때문입니다.
- 인덱스 구조가 구축됩니다. DBA는 INDEXES=N으로 설정하고 임포트 과정 다음에 인덱스를 구축함으로써 임포트 과정 동안 어느 정도의 시간을 절약할 수 있습니다.이것은 임포트를 지원하기 위해 요구되는 롤백 세그먼트의 개수를 또한 제한할 것입니다.
- 데이터는 테이블에 임포트되나 ROWS=Y인 경우에만 그렇습니다. 인덱스는 채워집니다. INDEXES=Y가 명시될 때 인덱스는 테이블과 더불어 생성되며 따라서 데이터 임포트와 더불어 갱신됩니다.
- 트리거가 임포트되고 무결성 제약 조건들이 새로운 테이블에 대해 활성화됩니다.
테이블 임포트 순서는 중요할 수 있습니다. 예를 들어 외래키(foreign key)를 갖고 있는 테이블이 기본키(primary key)를 갖고 있는 테이블에 referential check을 갖고 있다면 외래키(foreign key) 테이블이 먼저 임포트 될때 아직 임포트 안된 기본키를 참조하는 모든 행은 제약조건이 활성화되어 있다면 거절될 것입니다. 전체 데이터베이스 익스포트할 때에는 문제가 안됩니다
NLS 고려사항
하나의 문자 집합을 사용하는 오라클 데이터베이스에서 다른 문자 집합을 사용하는 데이터베이스로 데이터 이동 시 데이터 전환이 적절하게 처리되어야 함을 확인하십시오. NLS_LANG 환경 변수를 데이터가 익스포트 되어질 데이터베이스의 문자 집합 정의로 설정함으로써 해결할 수 있습니다. 이것을 올바르게 설정하지 않을 때 데이터의 원치 않는 문자 전환을 야기하여 데이터의 손실을 유발할 수 있습니다.
예
미국 영어같은 7-bit ASCII 문자 집합에서 덴마크어 같은 8 비트 문자 집합으로 전환시 모든 문자가 덴마크어 알파벳에서와 동일한 문자를 가지고 있기 때문에 어떤 전환도 필요 없습니다. 덴마크어 같은 8 비트 ASCII 문자 집합에서 미국 영어 같은 7 비트 문자 집합으로 전환시 미국 알파벳에 없는 추가 덴마크어 문자들은 물음표(?)로 전환되게 합니다. 이 경우에 물음표는 적절한 결과인 알려지지 않은 덴마크어 문자로 치환됩니다.
지침
- 8 비트씩 데이터 이동 시 문자들이 손실되는지 아닌지는 데이터 입력을 위해 사용되는 언어의 명세에 달려 있습니다. 예를 들어 스페인 알파벳은 덴마크 알파벳에는 없는 문자를 가지고 있으므로 스페인어 데이터베이스로부터 덴마크어 데이터베이스로 데이터 이동 시 데이터 변환을 초래할 것이며 따라서 이런 문자들의 손실도 가능하게 될 것입니다.
- 여러 바이트씩 데이터 이동시도 다중 바이트 언어의 명세에 달려 있습니다.
요약 참조
관련 내용
|
참조
|
파라미터
|
None
|
동적 성능 뷰
|
None
|
데이터 딕셔너리 뷰
|
None |
명령 |
Exp Imp |
O
O
O
X 정답:D
X 정답:B
O
O
X 정답:A
X 정답:C
O
O