db2的操作命令使用汇总(3)

2019-08-20 18:13

Tablespace ID = 0 (系统) Name = SYSCATSPACE

Type = System managed space Contents = Any data State = 0x0000

Detailed explanation: Normal Tablespace ID = 1 (系统临时) Name = TEMPSPACE1

Type = System managed space

Contents = System Temporary data State = 0x0000

Detailed explanation: Normal Tablespace ID = 2 (用户) Name = USERSPACE1

Type = System managed space Contents = Any data State = 0x0000

Detailed explanation: Normal

上面所示的这3个表空间是通过CREATE DATABASE命令自动创建的。用户可以通过在该命令中定制表空间选项来覆盖默认的表空间创建选项。但是在创建数据库时必须创建一个系统编目表空间和至少一个常规表空间,以及至少一个系统临时表空间。通过使用CREATE DATABASE命令或以后使用CREATE TABLESPACE命令,可以创建更多的所有类型的表空间(系统表空间除外)。上述3个表空间中,系统编目表空间和系统临时表空间都是只读的,用户不可以在上面创建用户表,如下所示:

C:\\Program Files\\IBM\\SQLLIB\\BIN>db2 create table t(i int) in SYSCATSPACE DB21034E 该命令被当作SQL语句来处理,因为它是无效的\命令行处理器\命令。在SQL 处理期间,它返回:SQL0287N SYSCATSPACE 不可用于用户对象。 SQLSTATE=42838 查看表空间及容器的属性

指定LIST TABLESPACES命令的SHOW DETAIL选项将显示其他信息:

db2 list tablespaces show detail默认情况下,将列出创建数据库时所创建的那3个表空间。list tablespaces show detail命令的输出信息如下:

Tablespaces for Current Database Tablespace ID = 2

Name = USERSPACE1

Type = Database managed space Contents = Any data State = 0x0000 Detailed explanation: Normal

Total pages = 25000---------总页数 Useable pages = 24904--------可用页数 Used pages = 336--------使用页数 Free pages = 24568----空闲页数 High water mark (pages) = 336

Page size (bytes) = 4096 Extent size (pages) = 32 Prefetch size (pages) = 16 Number of containers = 1

要列出容器,我们需要使用以上输出中的Tablespace ID: db2 list tablespace containers for 2查看表空间容器的情况,使用list tablespace containers命令输出信息如下:

Tablespace Containers for Tablespace 2 Container ID = 0

Name = C:\\DB2\\NODE0000\\SQL00003\\SQLT0002.0 Type = Path

该命令将列出指定表空间中的所有容器。如上所示的路径指向容器物理上所在的位置。 5. 查看表空间的容器

db2 list tablespace containers for 1 6. 表空间状态

查看一个数据库中的表空间的状态,可以使用命令:list tablespaces show detail 一个表空间可以有多种不同的状态,如下所示:

0x0 Normal

0x1 Quiesced:SHARE 0x2 Quiesced:UPDATE 0x4 Quiesced:EXCLUSIVE 0x8 Load pending 0x10 Delete pending 0x20 Backup pending

0x40 Rollforward in progress 0x80 Rollforward pending 0x100 Restore pending

0x100 Recovery pending(not used) 0x200 Disable pending 0x400 Reorg in progress 0x800 Backup in progress

0x1000 Storage must be defined 0x2000 Restore in progress

0x4000 Offline and not accessible 0x8000 Drop pending

0x2000000 Storage may be defined

0x4000000 StorDef is in 'final' state

0x8000000 StorDef was changed prior to rollforward 0x10000000 DMS rebalancer is active 0x20000000 TBS deletion in progress 0x40000000 TBS creation in progress 0x8 For service use only 7. 修改表空间

可使用控制中心或命令行来改变表空间。要使用命令行来改变表空间,可使用ALTER TABLESPACE语句。可以改变SMS、DMS和自动存储器容器,还可以重命名表空间,并将它从脱机方式切换至联机方式。

对SMS表空间,我们只能增加容器,对于DMS表空间,可以添加、扩展、重新平衡、删除或减少容器,或者调整容器大小。我们重点讲解DMS表空间的修改。

5.1、添加或扩展DMS容器

通过将一个或多个容器添加至DMS表空间(即使用MANAGED BY DATABASE子句创建的表空间),可以增大该表空间的大小。

当将新容器添加到表空间或扩展现有容器时,可能会发生表空间重新平衡(rebanlance)。重新平衡过程涉及将表空间扩展数据块从一个位置移至另一位置。在此过程中,将尝试在表空间内分割数据。重新平衡不必在所有容器上进行,但这取决于许多因素,例如现有容器配置、新容器的大小和表空间满的程度。

在重新平衡期间,不限制对该表空间的访问。如果需要添加多个容器,那么应该同时添加这些容器,以减少重新平衡的次数。虽然重新平衡期间表空间仍然可以访问,但是我们还是尽量避免在业务高峰期间增加容器,因为数据重新平衡期间系统上有很大的I/O活动。关于表空间重新平衡其实DB2还有一些高级选项,但这部分内容超出了本书讲解范围。如果读者感兴趣可以参见《深入解析DB2》一书。

要使用命令行将容器添加到DMS表空间,请输入以下内容: ALTER TABLESPACE ADD (DEVICE '' , FILE '' )

以下示例说明如何将两个新设备容器(各含10 000页)添加到Linux和UNIX系统上的表空间:

ALTER TABLESPACE TS1 ADD (DEVICE '/dev/rhd9' 10000, DEVICE '/dev/rhd10' 10000) 添加容器会涉及到表空间容器的重新平衡,如果您不想这样,可以使用表空间扩展来修改容器大小,因为extend不会重新平衡表空间数据。

以下示例说明如何将所有容器扩展10 000页(各含10 000页)添加到Linux和UNIX系统上的表空间:

ALTER TABLESPACE TS1 EXTEND (ALL,10000)

调整DMS容器的大小不能手动调用自动存储器表空间中容器的大小,否则将报错,如下所示:

C:\\>db2 alter tablespace userspace1 extend (all 20) DB21034E 该命令被当作SQL语句来处理,因为它是无效的\命令行处理器\命令。在SQL 处理期间,它返回:SQL20318N 不能使用\操作改变类型为\的表空间\。 SQLSTATE=42858

只能将每个操作系统裸设备用作一个容器。创建了裸设备之后,其大小是固定的。当您考虑使用调整大小或扩展选项来增大裸设备容器时,应先用操作系统命令检查裸设备大小以确保您使用ALTER TABLESPACE命令并未将裸设备容器大小增大到大于裸设备大小。

要缩小现有容器的大小,可使用RESIZE选项或 REDUCE选项。使用RESIZE选项时,作为语句的一部分列示的所有容器都必须增大大小或减小大小。不能在同一语句中增大某些容器而缩小其他容器。如果知道容器大小的新下限,应考虑调整大小方法。如果不知道(或不关心)容器的当前大小,那么应该考虑缩小方法。

要使用命令行来缩小DMS表空间中一个或多个容器的大小,请输入: ALTER TABLESPACE REDUCE (FILE '' )

以下示例说明如何在Windows 系统上的表空间中缩小文件容器(原来为1000页): ALTER TABLESPACE PAYROLL REDUCE (FILE 'd:\\hldr\\finance' 200) 在此操作之后,文件大小就从1000页减少至800页。

要使用命令行来增大DMS表空间中一个或多个容器的大小,请输入: ALTER TABLESPACE RESIZE (DEVICE '' )

以下示例说明如何在Linux和UNIX系统上的表空间中增大两个设备容器(原来大小为1000 页):

ALTER TABLESPACE HISTORY RESIZE (DEVICE '/dev/rhd7' 2000, DEVICE '/dev/rhd8' 2000) 在此操作之后,两个设备的大小都从1000页增加至2000页。

要使用命令行来扩展DMS表空间中一个或多个容器,请输入:

ALTER TABLESPACE EXTEND (FILE '' )

以下示例说明如何在Windows系统上的表空间中增大文件容器(原来大小为1000页): ALTER TABLESPACE PERSNEL EXTEND (FILE 'e:\\wrkhist1' 200 FILE 'f:\\wrkhist2' 200)

5.2、删除或减少DMS容器

对于DMS表空间,可以使用ALTER TABLESPACE语句从表空间中删除容器或缩小容器的大小。要缩小容器,在ALTER TABLESPACE语句上使用REDUCE或RESIZE选项。要删除容器,在ALTER TABLESPACE语句上使用DROP选项。

仅当正在删除或缩小其大小的扩展数据块数目小于或等于表空间中\高水位标记\之上的可用数据块数目时,才允许删除现有表空间容器以及缩小现有容器的大小。高水位标记是表空间中分配的最高页的页数。此标记与表空间中已使用的页的数目不同,高水位标记下的某些扩展数据块可能可供复用。

表空间中高水位标记之上的可用扩展数据块数非常重要,原因是直至高水位标记(包括高水位标记)的所有扩展数据块必须位于表空间内的同一逻辑位置。结果表空间必须有足够的空间才能容纳所有数据。如果没有足够的可用空间,那么会产生一条错误消息(SQL20170N或SQLSTATE 57059)。

要删除容器,可在ALTER TABLESPACE语句上使用DROP选项。例如: ALTER TABLESPACE TS1 DROP (FILE 'file1', DEVICE '/dev/rdisk1')

改变自动存储器表空间: 对于自动存储器表空间,不能手动调整自动存储器表空间的大小,数据库管理器将在需要时自动调整容器大小。

8. 重命名表空间

可以使用RENAME TABLESPACE语句来重命名表空间。不能重命名 SYSCATSPACE表空间。不能重命名处于\前滚暂挂\或\正在前滚\状态的表空间。

可以给予现有表空间新名称,而无需关心该表空间中的个别对象。重命名表空间时,将更改所有引用该表空间的目录记录。例如:

RENAME TABLESPACE TS1 TO TS2 注意:

当复原在备份后已被重命名的表空间时,必须在RESTORE DATABASE命令中使用新的表空间名。如果使用先前的表空间名,那么将找不到该名称。同样,如果使用ROLLFORWARD DATABASE命令前滚该表空间,也需确保使用新名称。如果使用先前的表空间名,那么将找不到该名称。

9. 将表空间从脱机状态切换至联机状态

如果与表空间相关的容器不可访问,这时表空间处于OFFLINE状态,要使用命令行从表空间中除去OFFLINE状态,请输入:

ALTER TABLESPACE SWITCH ONLINE 什么情况下会处于OFFLINE状态呢?我举一个实际生产中的例子。在一个双机热备HA的环境中,客户在主机上重新创建了使用裸设备的表空间后,未同步HA环境,结果导致主机故障切换到备机时,由于裸设备权限不正确而导致表空间处于OFFLINE状态。

10. 删除表空间

当删除表空间时,也会删除该表空间中的所有数据,释放容器,除去目录条目,并导致该表空间中定义的所有对象都被删除或标记为无效。可以通过删除表空间来重用空表空间中的容器,但是,在试图重用这些容器之前,必须落实DROP TABLESPACE语句。

8.1用户表空间

可删除一个包含所有表数据的用户表空间,包括在该单个用户表空间中的索引和LOB数据。也可删除所包含的表跨几个表空间的用户表空间。即,可能表数据在一个表空间,索引在另一个表空间且任何LOB数据在第3个表空间。必须在一条语句中同时删除所有3个表空间。包含跨越的表的所有表空间必须全部纳入此单条语句中,否则该删除请求将失败。例如创建表的定义如下:

create table yang_pic(picno int,pic clob(1g)) in data_space index in index_space long in lob_space

只能同时删除3个表空间:

DROP TABLESPACE DATA_SPACE,INDEX_SPACE,LOB_SPACE

8.2、删除用户临时表空间


db2的操作命令使用汇总(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:青春期的生理和心理健康讲座课件课稿

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: