728x90

archecker 유틸리티는 onbar/ontape 드라이버를 통해 아카이브(archive)에서 테이블을 추출(extract)한다.

복원을 수행하기 위해서는 다음 내용을 지정한 스키마 커맨드 파일(schema command file)을 사용한다.

  • 원본 테이블
  • 대상 테이블
  • 테이블 스키마
  • 데이터베이스
  • 외부 테이블(external table)
  • 특정 시점으로 테이블 복원
  • 기타 옵션

스키마 커맨드 파일을 설정하기 위한 두 가지 방법 :

1. archecker 구성 파일(ac_config)에 AC_SCHEMA 구성 매개 변수를 설정한다. 

2. -f cmdname 옵션을 사용하며 AC_SCHEMA 구성 매개 변수는 무시한다. (우선 순위 높음)


스키마 커맨드 파일은 다음 구문을 사용하여 작성할 수 있다.

  • CREATE TABLE
  • DATABASE
  • INSERT INTO
  • RESTORE
  • SET


CREATE TABLE은 원본 테이블과 대상 테이블을 지정하는 구문이다. 구문 형식은 IBM Informix SQL 형식을 따른다.

원본 테이블에 대한 구문은 백업을 수행했을 당시의 테이블 형상과 동일해야 한다.


Note:
원본 테이블 형상은 archecker에 의해 검증되지 않으며, 백업본의 테이블 형상과 다르게 지정하면 오류가 발생할 수 있다.


원본 테이블에는 동의어(synonym)나 뷰(view)를 지정할 수 없다. 원본 테이블의 형상에는 컬럼과 스토리지 옵션만이 필요하다. 익스텐트(extent) 크기, 잠금(lock) 모드 같은 옵션은 무시된다. 


원본 테이블이 분할(fragmented)되어 있다면, 원본 테이블의 데이터가 있는 모든 dbspace를 지정해야 한다. archecker 유틸리티는 스키마 커맨드 파일에 지정한 dbspace에서만 데이터를 추출한다. 원본 테이블에 제약조건(constraints), 인덱스, 트리거 등이 포함되어 있으면 복원하는 동안에는 자동으로 비활성화된다. 외래키(foreign constraints)의 경우에는 참조하는 테이블의 제약조건 또한 비활성화된다. 복원이 완료되면 제약조건, 인덱스, 트리거가 활성화된다. 빠른 성능으로 복원을 수행하려면 복원하기 전에 제약조건, 인덱스, 트리거를 생성하지 않도록 한다.

마찬가지로 대상 테이블도 커맨드 파일에 지정해야 한다. 대상 테이블이 복원 시점에 존재하지 않으면, 커맨드 파일에 지정한 구문이 실행된다. 대상 테이블이 존재한다면 커맨드 파일에 지정한 형상과 일치해야 한다. 데이터는 기존 테이블에 추가된다.


Examples

원본 테이블과 대상 테이블의 형상은 동일하지 않아도 된다. 다음 예제는 원본 데이터를 추출하여 대상 테이블을 분할 형태로 구성하는 방법이다. 

CREATE TABLE source (col1 integer, ...) IN dbspace1;
CREATE TABLE target (col1 integer, ...) 
   FRAGMENT BY expression
      MOD(col1, 3) = 0 in dbspace3),
      MOD(col1, 3) = 1 in dbspace4),
      MOD(col1, 3) = 2 in dbspace5);
INSERT INTO target SELECT * FROM source;


테이블을 외부 테이블로 구성하려면 CREATE EXTERNAL TABLE 구문을 사용한다.

Syntax

스키마 커맨드 파일의 CREATE EXTERNAL TABLE 구문은 Informix SQL 구문과 다르다.

Read syntax diagramSkip visual syntax diagram                                   .-,-----------------.
                                   V                   |
>>-CREATE EXTERNAL TABLE--name--(----column--data_type-+--)----->
>--USING--(--"filename"--+------------------+--)--;------------><
                         '-,--+-DELIMITED-+-'
                              '-INFORMIX--'


CREATE EXTERNAL TABLE 구문은 데이터를 외부 테이블로 복사할 때 사용한다. level-0 아카이브 데이터만 가능하며, 논리 로그(logical log)는 적용되지 않는다.

다음은 외부 테이블의 포맷을 지정하는 옵션이다.

  • DELIMITED: ASCII 구분자 파일. 기본 포맷
  • INFORMIX: 이진 포맷.

외부 테이블의 경우 성능을 최적화를 위해 조건을 적용하지 않는다. 조건을 지정해도 무시된다.



DATABASE 구문은 사용할 데이터베이스를 지정한다. 

Syntax

Read syntax diagramSkip visual syntax diagram>>-DATABASE--dbname--+-----------+--;--------------------------><
                     '-MODE ANSI-'
DATABASE 구문을 여러번 사용할 수도 있다. 이 구문 아래의 명시된 테이블 이름은 지정한 데이터베이스의 테이블을 가리킨다. 데이터베이스의 로깅 모드가 ANSI이고 decimal 데이터 타입을 사용하는 경우, 로깅 모드를 명시해야 한다.

Note:
로깅모드를 지정하지 않고 복원 수행시 오류가 발생하지 않더라도, 데이터는 보장할 수 없다.

Examples

다음 예제는 dbs 데이터베이스에 원본 테이블과 대상테이블이 모두 존재하는 경우의 구문이다.

DATABASE dbs;
CREATE TABLE source (...);
CREATE TABLE target (...);
INSERT INTO target SELECT * from source;

어떤 데이터베이스에서 테이블을 추출하여 다른 데이터베이스로 복사할 때는 여러개의 DATABASE 구문을 사용한다.

DATABASE dbs1;
CREATE TABLE source (...) IN dbspace1;
DATABASE dbs2;
CREATE TABLE target (...) IN dbspace2;
INSERT INTO dbs2:target SELECT * FROM dbs1:source;


INSERT 구문은 아카이브에서 추출한 데이터를 어느 테이블에 넣을지 지정한다. 

Syntax

Read syntax diagramSkip visual syntax diagram>>-INSERT INTO--target_table--+-----------------------+--------->
                              |   .-,-------------.   |
                              |   V               |   |
                              '-(---target_column-+-)-'
             .-,----------.
             V            |
>--SELECT--+---src_column-+-+--FROM--src_table------------------>
           '-*--------------'
>--+---------------+-------------------------------------------><
   '-WHERE--filter-'
ElementDescription
filterThe following filters are supported by the INSERT statement:

  • =, !=, <>
  • >, >=, <, <=
  • [NOT] MATCH, [NOT] LIKE
  • IS [NOT] NULL
  • AND, OR
  • TODAY, CURRENT

The following operators are not supported by thearchecker utility:

  • Aggregates
  • Functions and procedures
  • Subscripts
  • Subqueries
  • Views
  • Joins

Filters can only be applied to physical-only restore.

src_columnA list of columns to be extracted.
src_tableThe source table on the archive where the data is restored from.
target_columnThe destination column or columns where the data will be restored.
target_tableThe destination table where the data will be restored.

Examples

다음 구문으로 원본 테이블의 모든 데이터를 대상 테이블에 입력할 수 있다.

INSERT INTO target SELECT * FROM source;

원본 테이블의 일부 컬럼만을 추출할 수도 있다. 다음 예제는 원본 테이블의 두 컬럼을 대상 테이블에 입력하는 구문이다.

CREATE TABLE source (col1 integer, col2 integer, col3 integer, col4 integer);
CREATE TABLE target (col1 integer, col2 integer);
INSERT INTO target (col1, col2) SELECT (col3, col4) FROM source;


RESTORE는 선택적 명령으로 테이블을 특정 시점으로 복원할 때 사용한다.

Syntax

Read syntax diagramSkip visual syntax diagram>>-RESTORE--+----------------------------------+---------------><
            '-TO--+-"time"--+--+-------------+-'
                  '-CURRENT-'  '-WITH NO LOG-'
ElementDescription
"time"The date and time the table is to be restored to.

Usage

TO절에서 테이블을 복원할 특정 시점을 지정한다. 날짜와 시간 또는 CURRENT 키워드를 사용할 수 있다.

RESTORE 구문은 커맨드 파일에서 한 번만 사용할 수 있다. 커맨드 파일에 RESTORE를 명시하지 않으면 복원시 현재 시점의 논리 로그까지 적용한다. WITH NO LOG 절을 명시하면 물리(physical) 복원만 수행된다. 물리 복원은 level-0 아카이브만을 사용한다.

Example

RESTORE TO CURRENT WITH NO LOG;

SET 구문을 사용하여 테이블 레벨 로드(unload,load) 라이브러리의 다양한 기능을 제어할 수 있다.

Syntax

Read syntax diagramSkip visual syntax diagram>>-SET--+-COMMIT TO--number------------------+-----------------><
        |               .-,----------------. |
        |               V                  | |
        '-WORKSPACE TO----+-dbspace------+-+-'
                          |         (1)  |
                          '-dbslice------'
Notes:
  1. Extended Parallel Server only
ElementDescription
numberSets the number of records to insert before committing during a physical restore. The default is 1000.
dbspaceThe dbspaces to use for the working storage space. The default is the root dbspace. You cannot use temporary dbspaces for the working storage space.
dbsliceThe dbslices to use for the working storage space.

archecker 유틸리티는 논리 복원을 수행하는 동안 논리 로그 레코드를 준비하기 위한 테이블을 여러개 만든다. 이 테이블들은 sysutils 데이터베이스에 생성되며 작업 저장 공간(dbspace)에 저장된다.

Examples

SET COMMIT TO 20000;
SET WORKSPACE to dbspace1;

728x90

+ Recent posts