状态 |
十六进制状态值 |
描述 |
示例 |
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 选项的载入操作(针对可恢复的数据库)时才有效的临时状态。 |
已知载入的输入文件 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 的状态值 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; Information returned for 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; 在执行重组操作时,从另一会话执行下列脚本: connect to sample; 1.list tablespaces show detail; 或者 2.get snapshot for tablespaces on sample; connect reset; USERSPACE1 返回的信息显示,该表空间处于 Reorg in Progress 状态。注意:涉及 SAMPLE 数据库的表重组操作很可能在极短的时间内就可以完成,因此,使用这种方法来观察 Reorg in Progress 状态可能比较困难。 |
Restore Pending |
0x100 |
在执行了重定向恢复操作的第一部分之后(即在发出 SET TABLESPACE CONTAINERS 命令之前),数据库的表空间就处于这种状态。在使用表空间之前,必须恢复表空间(或者是整个数据库)。直到成功完成恢复操作,您才可以连接到数据库,此时, restore_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; 或者 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 拥有大量数据(例如,20000 条或更多记录): 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; 或者 2.get snapshot for tablespaces on sample; connect reset; TS1 返回的信息显示,该表空间处于 Roll Forward in Progress 状态。 |
Storage May be Defined |
0x2000000 |
在执行了重定向恢复操作的第一部分之后(即在发出 SET TABLESPACE CONTAINERS 命令之前),数据库的表空间就处于这种状态。 |
backup db sample; 假定该备份映像的时间戳为:20040613204955 restore db sample taken at 20040613204955 redirect; list tablespaces; Information returned by the 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 Must be Defined、 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; 或者 2.get snapshot for tablespaces on sample; connect reset; TS1、TS2 和 TS3 返回的信息显示,这些表空间处于 Table Space Deletion in Progress 状态。 |