| 상태 |
16진수 상태 값 |
설명 |
예제 |
| Backup Pending |
0x20 |
테
이블 공간은 지정시점(point-in-time) 테이블 공간 롤포워드(rollforward) 연산 후 또는 COPY NO 옵션이
지정된 (복구 가능한 데이터베이스에 대한) 로드 연산 후에 이 상태가 된다. 이 상태가 되면 테이블 공간 (또는 전체
데이터베이스)는 사용되기 전에 백업되어야 한다. 테이블 공간이 백업되지 않으면 그 테이블 공간 안에 있는 테이블들은 쿼리 될 수는
있지만 업데이트는 되지 않는다. 주: 데이터베이스의 복구 모드를 롤포워드로 변경하게 되면 변경한 즉시 백업해야 한다. logretain 데이터베이스 설정 매개변수가 RECOVERY로 설정되거나 userexit 데이터베이스 설정 매개변수가 YES로 설정되면 데이터베이스는 복구 가능하다. 데이터베이스가 백업되기 전까지는 데이터베이스를 활성화 하거나 데이터베이스로 연결할 수 없다. 백업이 완료되면 backup_pending 정보형 데이터베이스 설정 매개변수가 NO로 설정된다. |
1. 로드를위한 데이터 파일 staff_data.del 과 내용
11, "Melnyk",20,"Sales",10,70000,15000:
update db cfg for sample using logretain recovery;
backup db sample;
connect to sample;
load from staff_data.del of del messages load.msg insert into staff copy no;
update staff set salary = 69000 where id = 11;
2. update db cfg for sample using logretain recovery;
connect to sample; |
| Backup in Progress |
0x800 |
이것은 백업 연산 동안에만 유효한 일시적인 상태이다. |
온라인 BACKUP DATABASE 명령어를 실행한다.:
backup db sample online;
백업 연산이 실행될 때 또 다른 세션에서 다음 스크립트를 실행한다.:
connect to sample;
1. list tablespaces show detail; or
2. get snapshot for tablespaces on sample;
connect reset;
USERSPACE1에서 리턴된 정보를 통해 이 테이블 공간이 Backup in Progress 상태에 있다는 것을 알 수 있다. |
| DMS Rebalance in Progress |
0x10000000 |
데
이터 리밸런싱(rebalancing) 연산 동안에만 유효한 일시적 상태이다. 새로운 컨테이너들이 데이터베이스 관리형
공간(DMS)로 정의된 테이블 공간에 추가되거나 기존 컨테이너들이 확장될 때 테이블 공간 데이터의 리밸런싱이 발생한다. 리밸런싱은
데이터가 게속 스트라이핑 되도록 테이블 공간의 Extent 들을 또 다른 위치로 옮기는 작업이다. Extent 는 컨테이너
공간( 페이지로 측정됨 ) 의 단위이고 스트라이프는 테이블 공간 컨테이너 집합의 Extent Layer 이다. |
2만개 이상의 레코드를 가진 데이터 파일 sfaffdata.del :
connect to sample;
create tablespace ts1 managed by database using (file '/home/melnyk/melnyk/NODE0000/SQL00001/ts1c1' 1024);
create table newstaff like staff in ts1;
load from staffdata.del of del insert into newstaff nonrecoverable;
alter tablespace ts1 add (file '/home/melnyk/melnyk/NODE0000/SQL00001/ts1c2' 1024);
list tablespaces;
connect reset;
TS1에서 리턴된 정보를 통해 이 테이블 공간이 DMS Rebalance in Progress 상태에 있음을 알 수 있다. |
| Disable Pending |
0x200 |
이
상태는 데이터베이스 롤포워드 연산중에 발생될 수 있으며 롤포워드 연산이 완료될 때는 이 상태에서 벗어난다. 이 상태는 테이블
공간이 오프라인이 되고 Transaction을 위한 로그가 아직 쓰여지지 않은 상황에서 발생될 수 있다. 이 상태는 일시적으로
생겼다가 사라질 수 있으므로 사용자에게는 보여지지 않을 수도 있다. |
예제 없음. |
| Drop Pending |
0x8000 |
데
이터베이스를 재시작할 때 한 개이상의 컨테이너에 문제가 있을 경우 테이블 공간은 이 상태가 된다. ( 이전 세션에서 전원 오류등
비정상적으로 데이터베이스가 종료되었다면 데이터베이스는 재시작 되어야 한다. ) 테이블 공간이 Drop Pending 상태에 있다면
사용은 불가능 하고 삭제만 가능하다. |
예제 없음. |
| Load in Progress |
0x20000 |
COPY NO 옵션을 지정한 (복구 가능한 데이터베이스에 대한) 로드 연산 중에만 유효한 일시적인 상태이다. Load in Progress 테이블 상태를 참조한다. |
로드 인풋 파일 staffdata.del과 상당량의 데이터 (약 20000 개 이상의 레코드):
update db cfg for sample using logretain recovery;
backup db sample;
connect to sample;
create table newstaff like staff;
load from staffdata.del of del insert into newstaff copy no;
connect reset;
로드 연산이 실행될 때 또 다른 세션에서 다음 스크립트를 실행한다.:
connect to sample;
list tablespaces;
connect reset;
USERSPACE1에서 리턴된 정보는 이 테이블 공간이 Load in Progress (그리고 Backup Pending) 상태에 있음을 나타내고 있다. |
| Normal |
0x0 |
테이블 공간은 문제가 없다면 Normal 상태에 놓여진다. Normal 상태는 테이블 공간이 생성된 후의 초기 상태이다. |
connect to sample;
create tablespace ts1 managed by database using (file '/home/melnyk/melnyk/NODE0000/SQL00001/tsc1' 1024);
list tablespaces show detail; |
| Offline and Not Accessible |
0x4000 |
한
개 이상의 컨테이너에 문제가 있다면 테이블 공간은 이 상태에 머무르게 된다. 컨테이너는 부주의하게 재명명, 이동, 또는 손상을
입었을 것이다. 문제가 해결되면 이 테이블 공간에 속하는 컨테이너에 다시 액세스 할 수 있고, 데이터베이스에 연결된 모든
애플리케이션의 접속을 끊었다 다시 연결하면 이 비정상적인 상태에서 벗어날 수 있다. 또는 SWITCH ONLINE 구문이 지정된
ALTER TABLESPACE 문을 실행하면 Offline and Not Accessible 상태에서 벗어날 수 있다. |
connect to sample;
create tablespace ts1 managed by database using (file '/home/melnyk/melnyk/NODE0000/SQL00001/tsc1' 1024);
alter tablespace ts1 add (file '/home/melnyk/melnyk/NODE0000/SQL00001/tsc2' 1024);
export to st_data.del of del select * from staff;
create table stafftemp like staff in ts1;
import from st_data.del of del insert into stafftemp;
connect reset;
테이블 공간 컨테이너를 tsc1 에서 tsc3 으로 바꾸고 STAFFTEMP 테이블을 쿼리한다.:
connect to sample;
select * from stafftemp;
이 쿼리는 SQL0290N (테이블 공간 액세스는 허용되지 않음)을 리턴하고 LIST TABLESPACES 명령어는
TS1에 대해 상태 값 0x4000 (Offline and Not Accessible)을 리턴한다. 다시 테이블 공간 컨테이너
이름을 tsc3에서 tsc1로 바꾼다. 이번에는 쿼리가 성공적이다. |
| Quiesced Exclusive |
0x4 |
애
플리케이션이 테이블 공간에 대해 Quiesce 함수를 호출하여 그 테이블 공간에 배타적( 읽기 또는 쓰기) 권한을 가질 때 이
상태가 된다. QUIESCE TABLESPACES FOR TABLE 명령어를 실행하여, 테이블 공간을 Quiesced
Exclusive 상태에 둘 수 있다. |
Quiesced Exclusive로 설정하기 전에 테이블 공간 상태가 Normal로 되어 있는지 확인한다.
connect to sample;
quiesce tablespaces for table staff reset;
quiesce tablespaces for table staff exclusive;
connect reset;
또 다른 세션에서 다음 스크립트를 실행한다.:
connect to sample;
select * from staff where id=60;
update staff set salary=50000 where id=60;
list tablespaces;
connect reset;
USERSPACE1에서 리턴된 정보는 이 테이블 공간이 Quiesced Exclusive 상태에 있다는 것을 말해주고 있다. |
| Quiesced Share |
0x1 |
Quiesce
함수를 호출하는 애플리케이션과 동시에 접속한 애플리케이션이 읽기 ( 쓰기는 아님) 액세르를 할 때 이 상태가 된다.
QUIESCE TABLESPACES FOR TABLE 명령어를 실행하여 Quiesced Share 상태에 테이블 공간을 둘 수
있다. |
Quiesced Share로 설정하기 전에 테이블 공간 상태가 Normal로 되어 있는지 확인한다.
connect to sample;
quiesce tablespaces for table staff reset;
quiesce tablespaces for table staff share;
connect reset;
또 다른 세션에서 다음 스크립트를 실행한다.:
connect to sample;
select * from staff where id=40;
update staff set salary=50000 where id=40;
list tablespaces;
connect reset;
USERSPACE1에 리턴된 정보는 이 테이블 공간이 Quiesced Share 상태에 있다는 것을 나타내고 있다. |
| Quiesced Update |
0x2 |
Quiesce
함수를 호출하는 애플리케이션이 테이블 공간에 대해 배타적인 쓰기 액세스를 할 때 이 상태가 된다. QUIESCE
TABLESPACES FOR TABLE 명령어를 실행하여 Quiesced Update 상태가 되게 할 수 있다. |
Quiesced Update로 설정하기 전에 테이블 공간 상태가 Normal로 되어 있는지 확인한다.
connect to sample;
quiesce tablespaces for table staff reset;
quiesce tablespaces for table staff intent to update;
connect reset;
또 다른 세션에서 다음 스크립트를 실행한다.:
connect to sample;
select * from staff where id=50;
update staff set salary=50000 where id=50;
list tablespaces;
connect reset;
USERSPACE1에 리턴된 정보는 이 테이블 상태가 Quiesced Update 상태에 있다는 것을 알려주고 있다. |
| Reorg in Progress |
0x400 |
reorg 연산 중에만 일어 나는 일시적인 상태이다. |
REORG TABLE 명령어를 실행한다:
connect to sample;
.
reorg table staff;
connect reset;
reorg 연산이 실행될 때, 또 다른 세션에서 다음 스크립트를 실행한다.:
connect to sample;
1. list tablespaces show detail; or
2. get snapshot for tablespaces on sample;
connect reset;
USERSPACE1에 리턴된 정보를 통해 이 테이블 공간이 Reorg in Progress 상태에 있다는 것을 알 수
있다. 주: 테이블 재구성 연산은 매우 짧은 시간 동안 수행된다. 따라서 이 방식을 사용하면 Reorg in Progress
상태를 관찰하기 힘들다. |
| Restore Pending |
0x100 |
리
다이렉션 된 복구 연산의 첫 번째 부분이 수행된 후에 (SET TABLESPACE CONTAINERS 명령어가 실행되기 전에)
데이터베이스의 테이블 공간은 이 상태가 된다. 테이블 공간(또는 전체 데이터베이스)은 테이블 공간이 사용되기 전에 복구되어야
한다. 복구 연산이 성공적으로 완료될 때까지 데이터베이스에 연결할 수 없다. 복구연산이 성공적으로 완료되면
rollfwd_pending 정보형 데이터베이스 연산 매개변수의 값이 NO 로 설정된다. |
Storage May be Defined에서 리다이렉션된 복구 연산의 첫 번째 부분이 완료되면 모든 테이블 공간은 Restore Pending 상태가 된다. |
| Restore in Progress |
0x2000 |
복구 연산 중에만 일어 나는 일시적인 상태이다. |
update db cfg for sample using logretain recovery;
backup db sample;
backup db sample tablespace (userspace1);
백업 이미지용 타임스탬프: 20040611174124
restore db sample tablespace (userspace1) online taken at 20040611174124;
복구 연산이 실행될 때, 또 다른 세션에서 다음 스크립트를 실행한다.:
connect to sample;
1. list tablespaces show detail; or
2. get snapshot for tablespaces on sample;
connect reset;
USERSPACE1에 리턴된 정보는 이 테이블 공간이 Restore in Progress 상태에 있다는 것을 알려주고 있다.
|
| Roll Forward Pending |
0x80 |
복구 가능한 데이터베이스에 대해 복구 연산이 수행된 후에 테이블 공간은 이 상태에 놓이게 된다. 테이블 공간(또는 전체 데이터베이스)는 테이블 공간이 사용되기 전에 롤포워드 되어야 한다. logretain 데이터베이스 설정 매개변수가 RECOVERY로 설정되거나 userexit 데이터베이스 설정 매개변수가 YES로 설정되면 데이터베이스는 복구 가능하다. 롤포워드 연산이 성공적으로 완료될 때까지는 데이터베이스를 활성화 하거나 데이터베이스에 연결할 수 없다. 롤포워드 연산이 완료되면 rollfwd_pending 정보형 데이터베이스 연산 매개변수의 값이 NO로 설정된다. |
Restore in Progress에 있는 온라인 테이블 공간 복구 연산이 완료되면 테이블 공간 USERSPACE1은 Roll Forward Pending 상태가 된다. |
| Roll Forward in Progress |
0x40 |
롤포워드 연산 중에만 일어 나는 일시적인 상태이다. |
로드 인풋 파일 staffdata.del과 상당량의 데이터 (for example, 20000 or more records):
update db cfg for sample using logretain recovery;
backup db sample;
connect to sample;
create tablespace ts1 managed by database using (file '/home/melnyk/melnyk/NODE0000/SQL00001/ts1c1' 1024);
create table newstaff like staff in ts1;
connect reset;
backup db sample tablespace (ts1) online;
백업 이미지용 타임스탬프: 20040630000715
connect to sample;
load from staffdata.del of del insert into newstaff copy yes to /home/melnyk/backups;
connect reset;
restore db sample tablespace (ts1) online taken at 20040630000715;
rollforward db sample to end of logs and stop tablespace (ts1) online;
롤포워드 연산이 실행될 때, 또 다른 세션에서 다음 스크립트를 실행한다.:
connect to sample;
1. list tablespaces show detail; or
2. get snapshot for tablespaces on sample;
connect reset;
TS1에 리턴된 정보는 이 테이블 공간이 Roll Forward in Progress 상태에 있다는 것을 알려준다. |
| Storage May be Defined |
0x2000000 |
리다이렉션된 복구 연산의 첫 번째 부분이 수행된 후에(SET TABLESPACE CONTAINERS 명령어가 실행되기 전에) 데이터베이스의 테이블 공간은 이 상태에 놓이게 된다. 원한다면 컨테이너를 재정의 할 수 있다. (Cloning DB2 Databases Using Redirected Restore참조) |
backup db sample;
백업 이미지용 타임스탬프 20040613204955:
restore db sample taken at 20040613204955 redirect;
list tablespaces;
LIST TABLESPACES 명령어에 의해 리턴된 정보는 모든 테이블 공간이 Storage May be Defined 와 Restore Pending 상태에 있다는 것을 말해주고 있다. |
| Storage Must be Defined |
0x1000 |
테
이블 공간 컨테이너 설정 단계가 생략되거나, 테이블 공간 컨테이너 설정 단계 동안 지정된 컨테이너를 얻을 수 없다면, 새로운
데이터베이스에 대한 리다이렉션된 복구 연산 동안 테이블 공간은 이 상태에 있다. 후자의 경우 무효 경로 이름이 지정정되었거나
디스크 공간이 부족할 때 발생할 수 있다. |
backup db sample;
백업 이미지용 타임스탬프 20040613204955:
restore db sample taken at 20040613204955 into mydb redirect;
set tablespace containers for 2 using (path 'ts2c1');
list tablespaces;
LIST TABLESPACES 명령어에 의해 리턴된 정보는 테이블 공간 SYSCATSPACE와 테이블 공간 TEMPSPACE1이 Storage May be Defined와 Restore Pending상태에 있다는 것을 말해주고 있다. Storage Must be Defined 상태는 Storage May be Defined 상태 보다 앞선다. |
| Table Space Creation in Progress |
0x40000000 |
테이블 공간 생성 연산 중에만 일어 나는 일시적인 상태이다. |
connect to sample;
create tablespace ts1 managed by database using (file '/home/melnyk/melnyk/NODE0000/SQL00001/tsc1' 1024);
create tablespace ts2 managed by database using (file '/home/melnyk/melnyk/NODE0000/SQL00001/tsc2' 1024);
create tablespace ts3 managed by database using (file '/home/melnyk/melnyk/NODE0000/SQL00001/tsc3' 1024);
테이블 공간 생성 연산이 실행될 때, 또 다른 세션에서 다음 스크립트를 실행한다.:
connect to sample;
1. list tablespaces show detail; or
2. get snapshot for tablespaces on sample;
connect reset;
TS1, TS2, TS3에 리턴된 정보는 이 테이블 공간이 Table Space Creation in Progress 상태에 있다는 것을 알려준다. |
| Table Space Deletion in Progress |
0x20000000 |
테이블 공간 삭제 연산 중에만 일어 나는 일시적인 상태이다. |
connect to sample;
create tablespace ts1 managed by database using (file '/home/melnyk/melnyk/NODE0000/SQL00001/tsc1' 1024);
create tablespace ts2 managed by database using (file '/home/melnyk/melnyk/NODE0000/SQL00001/tsc2' 1024);
create tablespace ts3 managed by database using (file '/home/melnyk/melnyk/NODE0000/SQL00001/tsc3' 1024);
drop tablespace ts1;
drop tablespace ts2;
drop tablespace ts3;
테이블 공간 삭제 연산이 실행될 때, 또 다른 세션에서 다음 스크립트를 실행한다.:
connect to sample;
1. list tablespaces show detail; or
2. get snapshot for tablespaces on sample;
connect reset;
TS1, TS2, TS3에 리턴된 정보는 이 테이블 공간이 Table Space Deletion in Progress 상태에 있다는 것을 알려준다. |