自己整理的学习资料——DB2 V8数据库基础(二十三)

接上节。

 

表空间状态
db2tbst
命令接收十六进制的状态值,并返回相应的表空间状态(参见图 1)。例如,命令 db2tbst 0x0008 返回 State = Load Pending 。而该十六进制的状态值反过来又是 LIST TABLESPACES 命令输出的组成部分(参见图 2)。关于这些以及其他 DB2 命令的更多信息,请参阅 IBM DB2 Universal Database Command Reference

1. db2tbst 命令接收十六进制的表空间状态值并返回其状态。

9524210_200810231105031.jpg

表空间的外部可见状态是由单个状态值的十六进制总和构成的。例如,如果表空间的状态是 Backup Pending Load in Progress,那么所返回的十六进制值就是 0x200200x00020 + 0x20000)。本例中,命令 db2tbst 0x20020 返回:

 

State = Backup Pending

      + Load in Progress

2. 可以使用 LIST TABLESPACES 命令确定连接数据库中表空间的当前状态。

9524210_200810231105032.jpg

2. 受支持的表空间状态

 

状态

十六进制状态值

描述

示例

Backup Pending

0x20

在执行指定时间点的(point-in-time)表空间前滚操作之后,或者在执行指定了 COPY NO 选项的 LOAD 操作(针对可恢复的数据库)之后,表空间处于这种状态。在使用该表空间之前,必须备份该表空间(或者是整个数据库)。如果没有备份这个表空间,那么只能对其中包含的表进行查询,而无法更新它们。注意:在启用数据库进行前滚恢复之后,还必须立即对该数据库进行备份。如果 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;
或者
2.get snapshot for tablespaces on sample;
connect reset;
USERSPACE1
返回的信息显示,该表空间处于 Backup in Progress 状态。

DMS Rebalance in Progress

0x10000000

这是一种只在执行数据重新平衡操作期间才有效的临时状态。当向定义为数据库管理空间(DMS)的表空间添加新的容器时,或者当扩展现有的容器时,就可能发生表空间数据的重新调整。 重新调整(Rebalancing是指将表空间区段(extent)从某一位置移动到另一位置,试图保持数据成一整块的过程。一个 区段(extent就是一个容器空间单元(以页面为单位),而一个 条带(stripe就是用于表空间的 跨容器集的一层区段。

已知载入的输入文件 staffdata.del 拥有大量数据(例如,20000 条或更多记录):
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

在执行数据库前滚操作期间,表空间可能处于这种状态,但在前滚操作结束之时,就不应再处于该状态。当出现表空间脱机以及对没有被写入硬盘的事务补偿日志记录时,就可能触发这种状态。该表空间状态的出现以及随后状态的消失对用户都是透明的。

至于说明该表空间状态的示例,已经超出了本文的范围。

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;
connect to sample;
load from staffdata.del of del insert into newstaff copy no;
在执行载入操作时,从另一会话执行下列脚本:
connect to sample;
list tablespaces;
connect reset;
Information returned for 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

如果表空间的一个或多个容器存在问题,那么表空间就处于这种状态。容器偶然可能会被重命名、移动或损坏。在该问题被纠正,且再次可以访问与该表空间相关的容器之后,可以通过断开数据库与应用程序的连接,然后重新连接数据库来消除该异常状态。或者,您可以执行一条 ALTER TABLESPACE 语句,指定 SWITCH ONLINE 子句来消除表空间的 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 的状态值 0x4000Offline 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;
Information returned for USERSPACE1
返回的信息显示,该表空间处于 Quiesced Exclusive 状态。

 

表太长,未完。

fj.pngimage014.jpg

fj.pngimage016.jpg

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9524210/viewspace-475035/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/9524210/viewspace-475035/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值