Tablespace 관리에 대한 지침사항

프로그래밍/DB 2007. 11. 27. 14:27 Posted by galad
Tablespace 관리에 대한 지침사항
다중 테이블스페이스 사용
테이블스페이스 저장 영역 매개변수 지정
사용자에게 테이블 스페이스 할당량 지정

Multiple Tablespace 사용
데이타베이스 작업을 보다 융통성 있게 해줌
데이타베이스가 Multiple Tablespace를 사용하여 다음과 같은 작업 가능
· 데이타 딕셔너리 데이타로부터 사용자 데이타 분리
· 한 응용프로그램의 데이타를 다른 응용프로그램의 데이타로부터 분리
· I/O 경합을 줄이기 위해 서로 다른 Tablespace의 데이타 파일을 별도의 디스크 드라이브에 저장
· 사용자 데이타로부터 Rollback Segment 데이타를 분리하여 단일 디스크 고장에 의한 영구적인 데이타 손실 방지
· 개별 Tablespace은 Offline으로 다른 사항은 Online온라인으로 설정
· 고도의 갱신작업, 읽기 전용 작업, 임시 세그먼트 저장과 같은 특정 유형의 데이타베이스 사용을 위해 Tablespace 예약
· 개별 Tablespace 백업

Tablespace 저장 영역 매개변수 지정
새 Tablespace 생성시 Tablespace저장 영역, 여러가지 매개변수를 지정 가능
지정하지 않으면 기본 저장 영역 매개변수를 사용

사용자에게 Tablespace 할당량 지정
사용자에게 Tablespace에 대한 저장공간할당을 가능
CREATE USER, ALTER USER 명령에서 QUOTA 절

· CREATE USER절

        SQL> CREATE USER hcpark IDENTIFIED BY hcpark
                    DEFAULT TABLESPACE user_data
                    QUOTA 10M ON temp
                    QUOTA  5M ON user_data;

· ALTER USER절

       SQL> ALTER USER hcpark 
                  QUOTA 20M ON user_data;

'프로그래밍 > DB' 카테고리의 다른 글

Making a Tablespace Read Only  (0) 2007.11.27
Altering Tablespace Availability  (0) 2007.11.27
Tablespace 할당 관리  (0) 2007.11.27
Tablespace 생성  (0) 2007.11.27
[펌] 오라클 TableSpace 및 사용자 생성  (0) 2007.11.27

Tablespace 할당 관리

프로그래밍/DB 2007. 11. 27. 14:26 Posted by galad
Tablespace 할당 관리
Tablespace의 저장 영역 설정 변경
빈영역 병합

Tablespace의 저장영역 설정 변경
데이타베이스 작업을 보다 융통성 있게 해줌
테이블 생성시 설정한 매개변수를 변경하지 않고 Tablespace에 앞으로 생성할 개체의 기본사양 변경 가능
명령 : ALTER TABLEAPCE 변경
권한 : ALTER TABLEAPCE 권한 필요
예] sp_test1의 기본 저장 영역을 변경
  변경전
     SQL> CREATE TABLESPACE sp_test
          DATAFILE '/oracle_data/sp_test1.dbf' SIZE 5M
          DEFAULT STORAGE(
                   INITIAL 50K
                   NEXT 50K
                   MINEXTENTS 2
                   MAXEXTENTS 50
                PCTINCREASE 0) OFFLINE;
  변경후
     SQL> ALTER TABLESPACE sp_test
          DEFAULT STORAGE(
                   INITIAL 50K
                   NEXT 50K
                   MINEXTENTS 2
                   MAXEXTENTS 50
                PCTINCREASE 50);

빈 영역의 병합
Tablespace Segment 영역은 Extent(Block의 모임)에 의해 관리
Tablespace Segment 영역에 새로운 Extent를 할당하는 경우 가장 크기가 유사한 영역을 사용하므로,
큰 빈 영역은 작은 영역으로 나누어지고, 작은 빈 영역은 큰영역으로 병합되어짐
SMON(시스템 모니터) 프로세스가 Tablespace의 작은 빈 Extent를 병합
영역의 단편화가 심한 경우(연속적인 영역이 디스크 상에서 비연속적으로 저장) 빈영역을 단일 영역 트랜잭션으로 병합가능
· 8번째 병합을 하면 영역 트랜잭션을 Commit되고, 다른 트랜잭션은 영역을 할당하거나 해체함
Tablespace 병합시 ALTER TABLESPACE 권한 필요
예] Tablespace 단위로 모든 사용가능한 빈 Extent 영역을 큰 Extent 영역으로 병합
 SQL> ALTER TABLESPACE sp_test COALESCE;

Tablespace 정보보기
Tablespace 병합가능한 Extent영역에 대한 정보는 DBA_FREE_SPACE_COALESCED 뷰를 사용

 SQL> SELECT * FROM DBA_FREE_SPACE_COALESCED;

 
 TABLESPACE_NAME  TOTAL_EXTENTS EXTENTS_COALESCED PERCENT_EXTENTS_COALESCED TOTAL_BYTES
 BYTES_COALESCED  TOTAL_BLOCKS  BLOCKS_COALESCED  PERCENT_BLOCKS_COALESCED   

 SYSTEM                  8                  8                  100              1521664
 1521664                743                743                 100
 
 USER_DATA               1                  1                  100              1859584
 1859584                908                908                 100
 
 ROLLBACK_DATA           1                  1                  100              3090432
 3090432               1509               1509                 100
 
 TEMPORARY_DATA          1                  1                  100              2095104
 2095104               1023               1023                 100
 
 SP_TEST                 1                  1                  100              5240832
 5240832               2559               2559                 100

Tablespace 생성

프로그래밍/DB 2007. 11. 27. 14:26 Posted by galad
Tablespace 생성
Tablespace 생성
Temporary Tablespace 생성

Tablespace 생성
ORACLE 저장영역관리 작업을 피하고자 할때 사용
운영체제마다 테이블 생성단계 다름
SYSTEM Tablespace : 데이타베이스의 첫번째 Tablespace로 데이타베이스 생성시 자동으로 생성
새로운 Tablespace을 생성하는 경우
· 데이타베이스 확장할때(관련된 데이타베이스에 더 많은 디스크 저장 영역을 할당)
· 저장된 다른 데이타와는 별도로 특정유형의 데이타를 새로운 논리적 저장구조에 저장할때
데이타베이스 전체 크기를 늘리는 방법
· 새로운 Tablespace를 생성하는 대신 기존 Tablespace에 데이타 파일을 추가

Instance는 Tablespace에 데이타를 넣을려면 최소한 두개의 Rollback Segment필요(System Rollback Segment를 포함)

새로운 Tablespace 생성에 필요한 권한과 명령
· 사용자가 CREATE TABLESPACE 권한
· CREATE TABLESPACE 명령

예] sp_test라는 Tablespace 생성
· Tablespace 크기는 5M, 1개의 데이타 파일 가짐, Tablespace 저장영역을 'c:\temp\sp_test1', 매개변수를 명시적 설정, Tablespace를 Offline

     SQL> CREATE TABLESPACE sp_test
          DATAFILE '/oracl_data/sp_test1.dbf' SIZE 5M
          DEFAULT STORAGE(
                  INITIAL 50K
                  NEXT 50K
                  MINEXTENTS 2
                  MAXEXTENTS 50
                  PCTINCREASE 0) OFFLINE;
· 여기서 데이타파일 경로를 지정하지 않는 경우에는 현재 디렉토리에 데이타 파일을 생성

Temporary Tablespace 생성
다중 SORT 작업의 수행 속도 개선이나 오버헤드를 감소, ORACLE 저장영역관리 작업을 피하고자 할때 사용
단지 Sort Segment를 사용할 수 있게하는 Tablespace
Temporary Tablespace에는 영구적인 자료저장 불가능
v$sort_segment
Temporary Tablespace의 Sort Segment의 저장영역할당, 해제에 대한정보
   SQL> desc v$sort_segment;

     Name                            Null?    Type
     ------------------------------- -------- ----

  	TABLESPACE_NAME                          VARCHAR2(31)
  	SEGMENT_FILE                             NUMBER
	SEGMENT_BLOCK                            NUMBER
  	EXTENT_SIZE                              NUMBER
  	CURRENT_USERS                            NUMBER
  	TOTAL_EXTENTS                            NUMBER
  	TOTAL_BLOCKS                             NUMBER
  	USED_EXTENTS                             NUMBER
  	USED_BLOCKS                              NUMBER
  	FREE_EXTENTS                             NUMBER
  	FREE_BLOCKS                              NUMBER
  	ADDED_EXTENTS                            NUMBER
  	EXTENT_HITS                              NUMBER
  	FREED_EXTENTS                            NUMBER
  	FREE_REQUESTS                            NUMBER
  	MAX_SIZE                                 NUMBER
  	MAX_BLOCKS                               NUMBER
  	MAX_USED_SIZE                            NUMBER
  	MAX_USED_BLOCKS                          NUMBER
  	MAX_SORT_SIZE                            NUMBER
  	MAX_SORT_BLOCKS                          NUMBER

Tablespace를 생성하는 동안 Tablespace를Temporary Tablespace으로 설정
       SQL> CREATE TABLESPACE sp_test TEMPORARY; 
기존의 Tablespace를Temporary Tablespace으로 설정
       SQL>ALTER TABLESPACE sp_test TEMPORARY; 
Temporary Tablespace를 Offline으로 설정 가능하고 Tablespace 상태를 Online/Offline으로 바꿔도 Tablespace의 Temporary상태는 변경 안됨

'프로그래밍 > DB' 카테고리의 다른 글

Tablespace 관리에 대한 지침사항  (0) 2007.11.27
Tablespace 할당 관리  (0) 2007.11.27
[펌] 오라클 TableSpace 및 사용자 생성  (0) 2007.11.27
[펌] 오라클 9i R2의 Table Compression  (0) 2007.11.27
오라클 sysdate...  (0) 2007.11.27

/*
id : sys
pw : change_on_install
NPXTS_LDARDATA2 / NPXTS_LDARINDEX2
*/

/* 테이블 스페이스 생성(datafile의 path는 적절히) */
/* data table space 생성 */
create tablespace NPXTS_LDARDATA2
datafile 'd:\database\NPXTS_LDARDATA2.dbf' size 300m
autoextend on next 100m maxsize unlimited
default storage (initial 1m
    next 5m
    minextents 1
    maxextents unlimited
    /* pctfree 10 */
    /* pctincrease 50 */);
   
/* index table space 생성 */
create tablespace NPXTS_LDARINDEX2
datafile 'd:\database\NPXTS_LDARINDEX2.dbf' size 300m
autoextend on next 100m maxsize unlimited
default storage (initial 1m
    next 5m
    minextents 1
    maxextents unlimited
    /* pctfree 10 */
    /* pctincrease 50 */);
   

/* 사용자 생성 */
create user ldar20042
identified by ldar20042
default tablespace NPXTS_LDARDATA2
temporary tablespace temp
quota unlimited on NPXTS_LDARDATA2
quota unlimited on NPXTS_LDARINDEX2;

/* 사용자에 권한부여 */
grant connect to ldar20042;

/* 모두 지우고 다시시작할 경우 SYS로 접속하여 다음을 실행 */
/*
drop user ldar21_sm cascade;
drop tablespace ldar21_data including contents;
drop tablespace ldar21_index including contents;
*/

/*
drop user ldar2004 cascade;
drop tablespace NPXTS_ldardata including contents;
drop tablespace NPXTS_ldarindex including contents;
*/

'프로그래밍 > DB' 카테고리의 다른 글

Tablespace 할당 관리  (0) 2007.11.27
Tablespace 생성  (0) 2007.11.27
[펌] 오라클 9i R2의 Table Compression  (0) 2007.11.27
오라클 sysdate...  (0) 2007.11.27
[펌] 오라클 EXPORT 및 IMPORT 유틸리티  (0) 2007.11.27

오라클 9i R2의 Table Compression

 

RDBMS를 사용한 이래로 점점 더 많은 정보가 데이타베이스에 쌓이고 있으며 Telecom 업무와 같은 다량의 데이타를 관리하는 경우 수 테라에서 수십 테라바이트에 이르는 방대한 데이타를 관리해야 하는 어려움에 직면해 있으며 데이타의 양에 비례하여 하드웨어의 비용도 증가하고 있는 것이 현실이다.

이에 대한 대안으로 오라클 9i R2에서 새로 선보인 TABLE Compression 방법에 대해 알아보고 이를 활용하여 얼마나 물리적인 저장공간을 줄일 수 있으며 대량의 데이타를 분석해야 하는 DW 환경에서 성능상 어느 부분에 영향을 미치고 온라인의 어느 경우에 사용가능한지 성능을 비교해 보고자 한다.

TABLE Compression방법은 DB2와 같은 타 DBMS에서는 이미 사용되고 있는 방법으로 오라클은 Oracle 9i Release2에서 기능이 추가되었다.

오라클의 Table Compression의 특징은 다음과 같다.

  • TABLE, TABLE Partition, Materialized View에서 사용할 수도 있으며 Tablespace 단위로 지정 가능하다.
  • Block 단위로 I/O를 수행하므로 물리적 I/O가 감소한다.
  • Lossless dictionary-based 알고리즘을 사용하여 block내 중복값을 제거하는 압축방법을 사용한다.
  • Compression 및 Decompression은 ROW 단위로 수행되며 Row level locking은 유효하다.
  • Data의 Compression Ratio는 온라인 30~80% DW의 경우 400%까지도 가능하며 데이타 분포도에 따라 다를 수 있다.

1. Compression의 원리

오라클에서 채택하고 있는 Compression방법은 Data Segment Compression 또는 heap-organized block-level compression라고도 하며 한 block내에서 복원되어야 하는 정보는 그 Block내에 모두 존재해야 한다.

아래의 그림은 주문 Table에 고객 정보가 같이 있는 경우를 가정하고 Block내의 압축 저장원리를 설명하였다.


압축된 Block과 압축되지 않은 Block의 비교

이는 column 길이와 중복값의 정도에 따라 모든 중복값은 Symbol Table의 해당값을 참조하고 있으며 압축의 결과로 column의 순서가 해당 block내에서 재정렬 될 수도 있다. 오라클의 Symbol Table Entry는 최적의 Compression 결과를 위해 Data Loading시에 시스템에 의해 결정되어 생성되므로 Symbol Table Entrty를 사용자의 임의로 변경할 필요가 없다. 오라클 알고리즘은 압축 factor와 별도로 분포도의 변경에 대하여 동적으로 변경사항에 대하여 적용된다.


2. Compression Ratio(압축율)

압축율은 데이타의 분포도에 따라 다르지만 DW환경에서는 2:1, 4:1 많은 경우 12:1 까지도 압축되기도 한다. 각 Block의 중복값을 제거하는 알고리즘을 사용하므로 데이타 로드시에 Cardinality가 낮은 값으로 정렬해서 data를 Loading하는 방법이 좋다. DW상황의 Materialized View는 대부분 Group by에 의해 정렬된 값을 생성하는 경우가 많으므로 높은 Compression Ratio을 유지할 수 있다. 또한 block size가 클수록 한 Block내에 중복값이 많이 포함될 수 있으므로 compress Ratio에 영향을주며 Storage Parameter 인 PCTFREE가 낮을수록 Block내에 많은 양의 데이타의를 저장할 수 있으므로Compression Ratio가 높아진다. UPDATE 작업이 거의 없는 Compressed Table에는 PCTFREE를 0로 하는 것이 좋으며 compress option을 사용하여 table creation시에는 default PCTFREE 0으로 지정된다.


3. Compression 대상

Compress 대상은 Table, Materialized View, Partition table의 개별 Partition별로 Compress option지정이 가능하다. Tablespace level에서 지정한 경우 tablespace내에 생성되는 모든 Table들은 default로 Compress option이 적용된다. Table의 Compress option은 변경도 가능하지만 이후에 입력되는 데이타만 Compression의 적용 대상이 된다.

bulk insert나 bulk load시의 Compresion이 일어나는 시기는

  • Direct Path SQL*Loader 사용시
  • Create Table as SELECT(CTAS) 문장 사용시
  • Parallel INSERT ( 또는 append hint를 통한 Serial INSERT) 문장 사용시에 발생한다.

ALTER TABLE TABLE_NAME MOVE COMPRESS;

명령을 통하여 기존에 존재하는 table에 compress option을 지정할 수 있으나 table 전체에 Exclusive Lock 상태로 작업을 진행하므로 이를 고려하여 다른 DML 작업에 영향이 미치지 않도록 해야한다. Compress 적용 Data type은 LOB와 LOB에서 파생된 CLOB등을 제외한 모든 Type에 적용 가능하다.

partition table과 non-partitioned table의 compression여부를 확인하는 dicitionary는 아래의 SQL을 통해 확인해 볼 수 있다.

1) partitioned table

SELECT TABLE_NAME, PARTITION_NAME, COMPRESSION
FROM DBA_TAB_PARTITIONS
WHERE TABLE_NAME LIKE UPPER(:TAB_NAME)||"%";

2) non-partitioned table

SELECT E.OWNER, E.SEGMENT_NAME, E.SEGMENT_TYPE, S.SPARE1,
DECODE(S.SPARE1,1,"NORMAL",6145,"COMPRESSED",4097,"COMP->NOCOMP","OTHER") COMP_TYPE
FROM SYS.SEG$ S, DBA_EXTENTS E
WHERE E.SEGMENT_NAME LIKE UPPER(:seg_name)||"%"
AND E.SEGMENT_TYPE = "TABLE"
AND E.EXTENT_ID = 0
AND E.BLOCK_ID = S.BLOCK#
AND E.FILE_ID = S.FILE#;

4. Compression/non-Compress Table 성능비교

물리적인 compress ratio는 데이타의 분포도에 따라 다르다. 주로 DW의 데이타의 경우 Cardinality가 낮으나 OLTP성 Transaction 데이타의 경우 Cardinality가 높아 중복 값의 비중이 낮은 경우가 많다. Compression ratio가 높을수록 Data file size나 Redo log file Size가 줄어들게 되므로 Backup /Recovery등 유지보수 효과를 높여줄 뿐만아니라 , Database buffer cache의 Hit Ratio 향상에 도움을 주고 물리적인 DISK I/O를 줄여주는 효과가 있다.

아래의 테스트는 OLTP성 TABLE중 대리점 TABLE로 TEST한 결과이다. e-mail, fax, 주소, 전화번호등 정보등 주로 Cardinality가 높은 편이다.


<그림2> OLTP성 TABLE의 압축율과 SQL 성능비교


결과를 보면 생성시에는 압축시에 2배이상의 시간이 필요하며 압축율은 50%정도의 compression ratio를 보이고 있으며 50%의 Compress ratio에서는 SELECT시의 속도 TEST시 거의 차이가 나타나지 않음을 알 수 있다. Update시에는 40~70% 정도 더 낮은 성능이 나타나는데 이는 압축된 Table의 update시 더 복잡한 operation 과정이 필요하고 PCTFREE등의 Storage Parameter등의 영향으로 판단된다. Delete는 평균 30%정도의 성능향상을 보였는데 이는 data의 압축으로 logging data의 양도 줄어들게 되고 row의 길이가 줄어들게 되어 1 Block내에 더 많은 Row를 포함하는 등의 영향에 따른 것으로 판단된다.아래의 경우는 DW Star Schema하에서의 압축율을 보여주고 있다.


<그림3> DW Star Schema 모델상황의 Compression Ration 비교

위의 그림에서는 300%이상의 Compression Ratio를 보이고 있는데 이와 같이 중복 Value가 많아 Compression Ratio가 높고 DML작업이 적은 DW 환경에서 Compression Option을 사용하는 것이 좋으며, 이와는 반대로 update 빈도가 높은 OLTP 환경에서는 사용시 Performance에 문제를 발생시킬 수 있으므로 사전 Sampling을 통하여 최소 50%이상의 압축율을 보이는지 여부와 DML 사용정도등을 조사한 후 DML의 요구가 많지 않은 집계성 Table에 사용할 것을 권장한다.

오라클 sysdate...

프로그래밍/DB 2007. 11. 27. 14:18 Posted by galad

select to_char(t1,'yyyy-mm-dd hh24:mi:ss'), to_char(t2,'yyyy-mm-dd hh24:mi:ss') from test;

TO_CHAR(T1,'YYYY-MM TO_CHAR(T2,'YYYY-MM
------------------- -------------------
2004-11-19 10:52:35 2004-11-19 10:53:35


초단위까지 보고 싶을때...

출처 블로그 > 살아가는 이야기
원본 http://blog.naver.com/tinylass/120011094923

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가 복원 작업을 위해 자주 사용하는 매개변수입니다.

임포트 과정 순서
테이블을 임포트할 때 익스포트 파일이 읽혀지고 테이블과 데이터는 다음 순서로 생성됩니다.

  1. 새로운 테이블이 생성됩니다. 요점은 이 테이블은 기술적으로 오라클에 새로운 (NEW) 테이블들입니다. 그들은 원래 테이블들과 같은 데이터 및 성격을 가지고 있으나 사실상 이 테이블들은 데이터베이스에 새로이 생성되어 집니다. 이것은 논리적으로 아카이브 로그 파일이 이 테이블들에 적용되어 질 수 없는 이유인데, 아카이브 로그는 새로이 생성된 테이블에 기술적으로  아무런 갱신도 하지 않기 때문입니다.

  2. 인덱스 구조가 구축됩니다. DBA는 INDEXES=N으로 설정하고 임포트 과정 다음에 인덱스를 구축함으로써 임포트 과정 동안 어느 정도의 시간을 절약할 수 있습니다.이것은 임포트를 지원하기 위해 요구되는 롤백 세그먼트의 개수를 또한 제한할 것입니다.

  3. 데이터는 테이블에 임포트되나 ROWS=Y인 경우에만 그렇습니다. 인덱스는 채워집니다. INDEXES=Y가 명시될 때 인덱스는 테이블과 더불어 생성되며 따라서 데이터 임포트와 더불어 갱신됩니다.

  4. 트리거가 임포트되고 무결성 제약 조건들이 새로운 테이블에 대해 활성화됩니다.

테이블 임포트 순서는 중요할 수 있습니다. 예를 들어 외래키(foreign key)를 갖고 있는 테이블이 기본키(primary key)를 갖고 있는 테이블에 referential check을 갖고 있다면 외래키(foreign key) 테이블이 먼저 임포트 될때 아직 임포트 안된 기본키를 참조하는  모든 행은 제약조건이 활성화되어 있다면 거절될 것입니다. 전체 데이터베이스 익스포트할 때에는 문제가 안됩니다

NLS 고려사항
하나의 문자 집합을 사용하는 오라클 데이터베이스에서 다른 문자 집합을 사용하는 데이터베이스로 데이터 이동 시 데이터 전환이 적절하게 처리되어야 함을 확인하십시오. NLS_LANG 환경 변수를 데이터가 익스포트 되어질 데이터베이스의 문자 집합 정의로 설정함으로써 해결할 수 있습니다. 이것을 올바르게 설정하지 않을 때  데이터의 원치 않는 문자 전환을 야기하여 데이터의 손실을 유발할 수 있습니다.


미국 영어같은 7-bit ASCII 문자 집합에서 덴마크어 같은 8 비트 문자 집합으로 전환시 모든 문자가 덴마크어 알파벳에서와 동일한 문자를 가지고 있기 때문에 어떤 전환도 필요 없습니다. 덴마크어 같은 8 비트 ASCII 문자 집합에서 미국 영어 같은 7 비트 문자 집합으로 전환시 미국 알파벳에 없는 추가 덴마크어 문자들은 물음표(?)로 전환되게 합니다. 이 경우에 물음표는 적절한 결과인 알려지지 않은 덴마크어 문자로 치환됩니다.

지침

  • 8 비트씩 데이터 이동 시 문자들이 손실되는지 아닌지는 데이터 입력을 위해 사용되는 언어의 명세에 달려 있습니다. 예를 들어 스페인 알파벳은 덴마크 알파벳에는 없는 문자를 가지고 있으므로 스페인어 데이터베이스로부터 덴마크어 데이터베이스로 데이터 이동 시 데이터 변환을 초래할 것이며  따라서 이런 문자들의 손실도 가능하게 될 것입니다.

  • 여러 바이트씩 데이터 이동시도 다중 바이트 언어의 명세에 달려 있습니다.

요약 참조

  관련 내용

  참조

  파라미터

  None

  동적 성능 뷰

  None

  데이터 딕셔너리 뷰

  None

  명령

  Exp
  Imp

  • DEPT Table(Master Table), EMP Table(Child Table) 을 EXPORT 하려한다. 그러나 EXPORT 수행 중에 DEPT, EMP Table 모두 변경될 가능성이 많을 경우 두 Table 의 Data 일관성을 보장하기 위해 사용해야 하는 Option 은?
    A. CONSISTENT
    B. DIRECT
    C. COMPRESS
    D. ROWS
O



 

  • Direct Path EXPORT 설명 중 옳지 않은 것은?
    A. Database 자원에 대해 다른 사용자들과 경쟁하지 않는다.
    B. Database Block 을 Session 이 사용하는 Private Area 로 읽어 들인다.
    C. I/O 버퍼의 크기를 지정하기 위해 BUFFER Option 을 사용한다.
    D. 전송을 위해 TTC 버퍼로 직접 행을 전송한다.
O



 

  • Direct-path 방식의 export 에서 사용할수 없는 option 은?
    A. BUFFER
    B. RECORDLENGTH
O



 

  • EXPORT Option INCTYPE 설명 중 옳지 않은 것은?
    A. COMPLETE 는 모든 Table Data, Definition 을 Export 한다.
    B. INCREMENTAL 은 최근의 COMPLETE, CUMULATIVE, INCREMENTAL 이후에 갱신된 Table 을 Export 한다.
    C. CUMULATIVE 는 최근의 COMPLETE, CUMULATIVE 이후에 갱신된 Table 을 Export 한다.
    D. INCTYPE Option 사용 시 변경된 Record 만 Export 된다.
X 정답:D



 

  • Entire database 를 export 하려한다. 또한 export 되는 시점의 consistent 한 상태로 export 하려할때 그 명령은 다음 중 어느 것인가?
    A. EXP CONSISTENT=Y
    B. EXP FULL=Y CONSISTENT=Y
    C. EXP FULL=Y
    D. EXP FULL=Y CONSISTENT=Y TABLES=(s_emp)
X 정답:B



 

  • Export files 은 Import utility 에 위해서만 Database 에 object 를 재성성 할수 있다?
    A. TRUE
    B. FALSE
O



 

  • Export utility 에서 사용가능한 export mode 는? (multiple choice)
    A. a. Column
    B. Full database
    C. Grant
    D. User
    E. Table
O



 

  • IMPORT 시 Rollback Segment 에 관련된 Error 를 방지하기 위해 COMMIT Option 을 사용한다?
    A. TRUE
    B. FALSE
X 정답:A



 

  • IMPORT 시 Table 과 Data 가 생성되는 순서가 옳은 것은?
    A. Data Import -> Table 생성 -> Index 생성 -> Trigger, Constraints Enable
    B. Table 생성 -> Data Import -> Trigger, Constraints Enable -> Index 생성
    C. Table 생성 -> Index 생성 -> Data Import -> Trigger, Constraints Enable
X 정답:C



 

  • Logical backup 에 대해 archived redo log file 를 적용하여 복구할수 있다?
    A. TRUE
    B. FALSE
O



 

  • Table 을 Import 할때 default 로 system tablespace 에 생성된다?
    A. TRUE
    B. FALSE
O



 

  • dba.dmp export file 에 있는 모든 table 을 import 할려면 다음 중 맞는 것은?
    A. IMP system/manager FILE=DBA.DMP TABLES=FULL
    B. IMP system/manager FILE=DBA.DMP FULL=Y
    C. IMP system/manager FILE=DBA.DMP FULL,USERS=Y
    D. IMP system/manager FILE=DBA.DMP SHOW=Y
O

'프로그래밍 > DB' 카테고리의 다른 글

[펌] 오라클 9i R2의 Table Compression  (0) 2007.11.27
오라클 sysdate...  (0) 2007.11.27
오라클 사용자 계정 추가 및 테이블 스페이스 설정  (0) 2007.11.27
[펌] mysql 명령어 모음  (0) 2007.11.27
07 PL/SQL  (0) 2007.11.27