3. 데이터 정의어 : CREATE MEMORY TABLESPACE

CREATE MEMORY TABLESPACE
구문
create_memory_tablespace ::=
initsize_clause ::=
autoextend_clause ::=
maxsize_clause ::=
checkpoint_path_clause ::=
splitsize_clause ::=
전제 조건
테이블스페이스는 SYS 사용자이거나 CREATE TABLESPACE 시스템 권한을 가진 사용자만이 테이블스페이스를 생성할수 있다.
설명
데이터베이스 내에 데이터베이스 객체를 저장할 수 있는 메모리 데이터 테이블스페이스를 생성하는 구문이다. 이 구문으로 생성된 테이블스페이스에는 메모리 테이블이 저장될 수 있다.
MEMORY
메모리 테이블스페이스를 생성할 것을 지정한다.
DATA
사용자의 데이터를 저장할 테이블스페이스를 생성할 것을 지정한다. DATA 키워드 없이 CREATE TABLESPACE 구문을 수행하여도 기본적으로 데이터 테이블스페이스가 생성된다.
tablespace_name
생성될 테이블스페이스의 이름을 명시한다. 테이블스페이스 이름은 1장의 "객체 이름 규칙"을 따라야 한다.
initsize_clause
생성될 테이블스페이스의 초기 크기를 지정한다.
SIZE
테이블스페이스의 초기 크기를 명시한다.
이는 메모리 테이블스페이스의 기본 확장 크기의 배수여야 한다. (즉, EXPAND_CHUNK_PAGE_COUNT 프로퍼티에 지정된 페이지 개수 * 메모리 테이블스페이스의 한 페이지 크기 (32kB))
예를 들어 EXPAND_CHUNK_PAGE_COUNT프로퍼티를 128로 지정했다면, 메모리 테이블스페이스의 기본 확장 크기는 128 * 4MB가 될 것이다. 그러므로 초기 크기는 4MB의 배수여야 한다.
이 값은 Kilobytes(K), Megabytes(M), 또는 Gigabytes(G) 단위로 명시할 수 있다. 단위를 명시하지 않을 경우 기본 단위는 Kilobytes이다.
autoextend_clause
테이블스페이스가 자동으로 확장될 지 여부를 명시한다. 이 절을 생략하면, AUTOEXTEND는 기본으로 꺼진다.
ON
AUTOEXTEND 옵션이 켜진다.
OFF
AUTOEXTEND 옵션이 꺼진다.
NEXT
테이블스페이스가 자동으로 크기가 증가될 때 증가할 양을 명시한다.
단, 이 크기는 메모리 테이블스페이스의 기본 확장 크기의 배수여야 한다. (EXPAND_CHUNK_PAGE_COUNT 프로퍼티에 지정된 페이지 개수 * 메모리 테이블스페이스의 한 페이지 크기 (32kB))
AUTOEXTEND를 ON으로 지정하고 이 값을 명시하지 않을 경우, 기본값은 EXPAND_CHUNK_PAGE_COUNT프로퍼티에 지정한 값이다.
AUTOEXTEND가 OFF일 때 이 값은 의미없다.
이 값은 Kilobytes(K), Megabytes(M), 또는 Gigabytes(G) 단위로 명시할 수 있다. 단위를 명시하지 않을 경우 기본 단위는 Kilobytes이다.
maxsize_clause
테이블스페이스 자동 확장 시 확장할 수 있는 최대 크기를 명시한다. AUTOEXTEND는 ON 으로 지정하고 이 값을 명시하지 않을 경우 기본값은 UNLIMITED이다.
AUTOEXTEND가 OFF이면 이 값은 의미없다.
이 값은 Kilobytes(K), Megabytes(M), 또는 Gigabytes(G) 단위로 명시할 수 있다. 단위를 명시하지 않을 경우 기본 단위는 Kilobytes이다.
UNLIMITED
테이블스페이스가 자동 확장되는 크기에 제한이 없음을 명시한다.
이 옵션이 사용되면, 테이블스페이스는 그 크기가 데이터베이스내의 모든 메모리 테이블스페이스와 모든 휘발성 테이블스페이스의 총 크기가 MEM_MAX_DB_SIZE 프로퍼티에 지정된 크기에 도달할 때까지 자동으로 증가될 것이다.
checkpoint_path_clause
메모리 테이블스페이스에 저장된 데이터의 영속성을 보장하기 위해 데이터는 파일에 저장되어야 한다. 이러한 메모리 테이블스페이스의 데이터 저장 파일을 “체크포인트 이미지”라고 한다.
checkpoint_path절은 체크포인트 이미지 파일이 저장될 체크포인트 경로(Path)들을 지정한다.
체크포인트 경로를 지정하지 않은 경우 MEM_DB_DIR 프로퍼티에 지정한 경로가 기본 경로로 사용된다.
checkpoint_path
메모리 테이블스페이스의 체크포인트시 체크포인트 이미지가 저장되는 경로이다. 체크포인트 및 테이블스페이스 로딩시 디스크 입출력 비용을 분산할 수 있도록 다수의 경로가 지정될 수 있다.
split_each_clause
이 절은 체크포인트 파일을 좀 더 작은 파일로 분리시키기 위해 사용된다. 이는 메모리 테이블스페이스의 크기가 운영체제에서 지원하는 최대 파일 크기를 초과할 때, 또는 입출력 비용을 분산하기 위해서 유용하다. 분할된 파일의 크기는 사용자가 지정할 수 있다. 크기를 지정하지 않을 경우 DEFAULT_MEM_DB_FILE_SIZE 프로퍼티에 지정된 값이 기본으로 사용된다.
이 값은 Kilobytes(K), Megabytes(M), 또는 Gigabytes(G) 단위로 명시할 수 있다. 단위를 명시하지 않을 경우 기본 단위는 Kilobytes이다.
예제
<질의 1> 초기 크기가 512MB이고, 자동 확장되지 않는 사용자 정의 메모리 데이터 테이블스페이스를 생성한다. (체크포인트 이미지는 MEM_DB_DIR 프로퍼티에 지정된 경로에 저장된다. 분할될 체크포인트 이미지 파일의 크기는 DEFAULT_MEM_DB_FILE_SIZE 프로퍼티의 값을 따른다.)
iSQL> CREATE MEMORY DATA TABLESPACE user_data SIZE 512M;
Create success.
<질의 2> 초기 크기가 512MB이고, 128MB 단위로 자동 확장되는1 사용자 정의 메모리 데이터 테이블스페이스를 생성한다. (체크포인트 이미지는 MEM_DB_DIR 프로퍼티에 지정된 경로에 저장된다. 분할될 체크포인트 이미지 파일의 크기는 DEFAULT_MEM_DB_FILE_SIZE 프로퍼티의 값을 따른다.)
iSQL> CREATE MEMORY DATA TABLESPACE user_data
SIZE 512M
AUTOEXTEND ON NEXT 128M;
Create success.
<질의 3> 초기 크기가 512MB 이고, 최대 1GB까지 128MB 단위로 자동 확장되는 사용자 정의 메모리 데이터 테이블스페이스를 생성한다. (체크포인트 이미지는 다중화를 위해 3개의 디렉토리에 나누어 저장하고, 분할될 체크포인트 이미지 파일의 크기를 256M로 한다.)
iSQL> CREATE MEMORY DATA TABLESPACE user_data
SIZE 512M AUTOEXTEND ON NEXT 128M MAXSIZE 1G
CHECKPOINT PATH ‘/dbs/path1’, ‘/dbs/path2’, ‘/dbs/path3’
SPLIT EACH 256M;
Create success.

1
테이블스페이스의 최대 크기를 MAXSIZE절을 이용하여 지정하지 않았으므로, 기본적으로 UNLIMITTED를 지정한 것과 같다. 이 경우 시스템에 존재하는 모든 메모리 테이블스페이스와 휘발성 테이블스페이스의 크기의 총합이 MEM_MAX_DB_SIZE 프로퍼티에 지정된 값을 벗어나지 않는 한도 내에서 테이블스페이스의 확장이 이루어진다.