WEB开发网
开发学院数据库DB2 DB2 基础: 阐明表和表空间的状态 阅读

DB2 基础: 阐明表和表空间的状态

 2009-11-20 00:00:00 来源:WEB开发网   
核心提示:目前,IBM® DB2® Universal Database™(DB2 UDB)至少支持 25 种表或表空间状态,DB2 基础: 阐明表和表空间的状态,这些状态在某些情况下被用来控制对数据的访问,或者在必要时被用来引出特定用户动作,并将它们用到自己的数据中;很快,您将真正“感知

目前,IBM® DB2® Universal Database™(DB2 UDB)至少支持 25 种表或表空间状态。这些状态在某些情况下被用来控制对数据的访问,或者在必要时被用来引出特定用户动作,以保护数据库的完整性。大多数状态产生于与某个 DB2 实用程序的操作相关的事件,例如加载实用程序,或者备份和恢复实用程序。

本文描述了每个受支持的表或表空间状态(见表 1;单击状态名跳至其描述,该描述位于后面的某个表中)。本文还提供了一些工作示例,以便准确地展示如何解释和响应管理数据库时可能碰到的状态。这些示例取自于 AIX® 上运行的命令脚本;您可以复制、粘贴并亲自运行它们。如果您在非 UNIX® 的系统上运行 DB2 UDB,请确保所有的路径名都是适合系统的正确格式。大多数示例都是以 SAMPLE 数据库中的表为基础的,该数据库是 DB2 UDB 附带的。也存在少数需要 SAMPLE 数据库中没有包含的场景的情况,但是,您可以将到 SAMPLE 数据库的连接用作为一个起始点。

表 2 和表 3 中描述了这些状态。 表 2描述了受支持的表空间状态,而 表 3 则描述了目前支持的表状态。

表 1. 到版本 8.1.4 为止的 DB2 UDB 所有支持版本中定义的表和表空间状态

状态 范围 状态 范围
Backup Pending 表空间Quiesced Update 表空间
Backup in Progress 表空间Read Access Only
Check Pending Reorg in Progress 表空间
DMS Rebalance in Progress 表空间Restore Pending 表空间
Disable Pending 表空间Restore in Progress 表空间
Drop Pending 表空间Roll Forward Pending 表空间
Load Pending Roll Forward in Progress 表空间
Load in Progress 表空间或 表 Storage May be Defined 表空间
Normal 表空间或 表 Storage Must be Defined 表空间
Not Load Restartable Table Space Creation in Progress 表空间
Offline and Not Accessible 表空间Table Space Deletion in Progress 表空间
Quiesced Exclusive 表空间Unavailable
Quiesced Share 表空间  

表空间状态

db2tbst 命令接收十六进制的状态值,并返回相应的表空间状态(参见图 1)。例如,命令 db2tbst 0x0008 返回 State = Load Pending 。而该十六进制的状态值反过来又是 LIST TABLESPACES 命令输出的组成部分(参见图 2)。


图 1. db2tbst 命令接收十六进制的表空间状态值并返回其状态。
DB2 基础: 阐明表和表空间的状态

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

State = Backup Pending 
   + Load in Progress 



图 2. 可以使用 LIST TABLESPACES 命令确定连接数据库中表空间的当前状态。
DB2 基础: 阐明表和表空间的状态

表 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 选项的载入操作(针对可恢复的数据库)时才有效的临时状态。 已知载入的输入文件 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 状态。

表状态

DB2 UDB Version 8 load 实用程序通过表状态(以及锁)来获取对表的访问,并在执行载入操作时维护数据库的一致性。即使载入操作发生了异常终止,表状态也将会被保持。您可以用 LOAD QUERY 命令(见图 3)确定特定表的状态。LOAD QUERY 命令在其运行时检查载入操作的状态,并返回表的状态。如果载入操作完成(或异常终止)了,那么该命令只返回表的状态。


图 3. 可以使用 LOAD QUERY 命令来确定指定表的状态。
DB2 基础: 阐明表和表空间的状态

虽然在载入操作之前,从属的表空间不再是静默的( quiesce是一种持久性的锁),但是 Load in Progress表空间状态会在执行载入操作时阻止对从属表进行备份。Load in Progress 表空间状态不同于 Load in Progress 表空间状态:所有的载入操作都使用 Load in Progress 表状态,但是指定 COPY NO 选项的载入操作(针对可恢复的数据库)还是使用 Load in Progress 表空间状态。

一个表可以同时处于几种状态之下。例如,如果将数据载入定义了表检查约束的表中,并指定 ALLOW READ ACCESS 选项,那么在执行载入操作期间,该表就处于 Check Pending、 Load in Progress和 Read Access Only 状态下。

表 3. 受支持的表状态

状态 描述 示例
Check Pending 如果在一个表上定义了表检查约束,但还未验证新数据与那些已定义约束的兼容性,那么该表就处于这种状态。例如,DB2 load 实用程序当开始在定义了表检查约束的表上执行载入操作时,就将表的状态设置为 Check Pending 状态。如果想使该表恢复为 Normal状态,则需要执行一条 SET INTEGRITY 语句。要想获得更多的信息,请参阅 约束。 已知载入的输入文件 staff_data.del 拥有以下内容: 11,"Melnyk",20,"Sales",10,70000,15000:
connect to sample;
alter table staff add constraint max_salary check (100000 - salary >0);
load from staff_data.del of del insert into staff;
load query table staff;
LOAD QUERY 命令返回的信息显示,STAFF 表处于 Check Pending 状态。
Load Pending 如果在可提交数据之前,表上的正在执行的载入操作被异常终止,那么该表就处于这种状态。若要使该表恢复 Normal状态,则需要调用 load terminate、load restart 或 load replace 操作。 已知载入的输入文件 staffdata.del 拥有大量数据(例如,20000 条或更多记录),创建一个包含载入操作目标表的小型表空间,新建一个名为 NEWSTAFF 的表:
connect to sample;
create tablespace ts1 managed by database using (file '/home/melnyk/melnyk/NODE0000/SQL00001/ts1c1' 256);
create table newstaff like staff in ts1;
load from staffdata.del of del insert into newstaff;
load query table newstaff;
load from staffdata.del of del terminate into newstaff;
load query table newstaff;
connect reset;
LOAD QUERY 命令返回的信息显示,NEWSTAFF 表处于 Load Pending 状态;在执行 load terminate 操作之后,该表就重新处于 Normal状态。
Load in Progress 这是一种只在执行载入操作期间才有效的临时状态。关于当载入操作失败或被中断时,如何解除表的 Load in Progress 状态的信息,请参阅 IBM DB2 Universal Database Data Movement Utilities Guide and Reference 中关于载入操作之后的暂挂状态的小节。还请参阅 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;
load query table newstaff;
connect reset;
LOAD QUERY 命令返回的信息显示,NEWSTAFF 表处于 Load in Progress 状态。
Normal 如果表不是处于任何其他(异常的)表状态,那么它就处于 Normal 状态。Normal 状态是表被创建之后的初始状态。connect to sample;
create table newstaff like staff;
load query table newstaff;
LOAD QUERY 命令返回的信息显示,NEWSTAFF 表处于 Normal 状态。
Not Load Restartable 当执行完前滚操作,接着出现一个失败的载入操作,而该操作未被成功地重新启动或者终止时,表就处于这种状态。该表还将处于 Load Pending状态。若要使该表恢复 Normal状态,则需要执行一条 LOAD TERMINATE 命令。 已知载入的输入文件 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' 256);
create table newstaff like staff in ts1;
connect reset;
backup db sample;
该备份映像的时间戳为:20040629205935
connect to sample;
load from staffdata.del of del insert into newstaff copy yes to /home/melnyk/backups;
connect reset;
restore db sample taken at 20040629205935;
rollforward db sample to end of logs and stop;
connect to sample;
load query table newstaff;
connect reset;
LOAD QUERY 命令返回的信息显示,NEWSTAFF 表处于 Not Load Restartable 和 Load Pending状态。
connect to sample;
load from staffdata.del of del terminate into newstaff copy yes to /home/melnyk/backups;
load query table newstaff;
connect reset;
LOAD QUERY 命令返回的信息显示,NEWSTAFF 表现在处于 Normal状态。
Read Access Only 在执行载入操作时,如果指定了 ALLOW READ ACCESS 选项,那么表就处于这种状态。Read Access Only 是一个临时状态,它允许其他应用程序和实用程序读访问在执行载入操作 之前就存在的数据。 已知载入的输入文件 staffdata.del 拥有大量数据(例如,20000 条或更多记录):
connect to sample;
export to st_data.del of del select * from staff;
create table newstaff like staff;
import from st_data.del of del insert into newstaff;
load from staffdata.del of del insert into newstaff allow read access;
在执行载入操作时,从另一会话执行下列脚本:
connect to sample;
load query table newstaff;
select * from newstaff;
connect reset;
LOAD QUERY 命令返回的信息显示,NEWSTAFF 表处于 Read Access Only 和 Load in Progress状态。该查询返回 STAFF 表所导出的内容,以及在执行载入操作之前,就存在于 NEWSTAFF 表中的数据。
Unavailable 当前滚一个无法恢复的载入操作时,表就处于这种状态;这样的表只能被删除,或者从备份映像恢复它。已知载入的输入文件 staff_data.del 拥有下列内容: 11,"Melnyk",20,"Sales",10,70000,15000:
update db cfg for sample using logretain recovery;
backup db sample;
该备份映像的时间戳为:20040629182012
connect to sample;
load from staff_data.del of del insert into staff nonrecoverable;
connect reset;
restore db sample taken at 20040629182012;
rollforward db sample to end of logs and stop;
connect to sample;
load query table staff;
connect reset;
LOAD QUERY 命令返回的信息显示,STAFF 表处于 Unavailable 状态。

结束语

DB2 UDB 用表状态和表空间状态来控制对数据的访问,或者在特定情况下帮助保护数据库的完整性。本文通过工作示例展示了可能引出特定状态的更常见的一些条件,您可以用它们来识别哪些状态是有效,以及如何作出正确响应,以便可以继续使用数据,而不会出现漏拍(miss a beat)现象。您会很容易就适应这些示例,并将它们用到自己的数据中;很快,您将真正“感知到周围的”各种状态,并可使用它们来更好地理解数据库的行为。

Tags:DB 基础 阐明

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接