当前位置:Gxlcms > 数据库问题 > DB2 表空间类型

DB2 表空间类型

时间:2021-07-01 10:21:17 帮助过:41人阅读

>[,< 路径 2>,...,< 路径 n>] 例如: db2 "alter database testdb add storage on /db2/db6test/path1, /db2/db6test/path2‘"

我们从上述命令中可以看出,通过给数据库增加存储路径就可以使数据库支持自动存储。我们需要注意:

  • 我们不能删除全部存储路径,因而也就意味着自动存储一旦启用就不能停止,如果我们试图这样做会出现 SQLSTATE 428HH 错误;
  • 在增加存储路径以后,新路径可能不会立刻被使用,需要手动重新分布数据;
  • 对于分区数据库需要保证这些新添件的路径在每个节点都存在并且有全部权限。

将 DMS 转换成自动存储表空间

使数据库支持自动存储并不会自动把过去存在数据库中的数据库管理表空间转换成为自动存储表空间,我们还需要进行一些操作才能实现表空间的转换。但 DB2 9.7 中只支持将 DMS 转换为自动存储表空间,还不能把系统管理表空间变为自动存储表空间。转换 DMS 的方法目前有两种:

  • 通过发出 ALTER TABLESPACE 命令,在线的将 DMS 转换成自动存储表空间;
  • 通过数据库恢复重定向离线的将 DMS 转换成自动存储表空间。

转换自动存储的在线方式

在线转换表空间会保持表空间可用,但需要数据重新分布,在转换前我们可以通过 GET SNAPSHOT 命令查看表空间的类型。

清单 2. 转换前的表空间信息
db2 get snapshot for tablespaces on testdb 
。。。。。。
 Tablespace name = TS1 
  Tablespace ID = 3 
  Tablespace Type = Database managed space 
  Tablespace Content Type = All permanent data. Large table space. 
。。。。。。
  Container Name = /db2/db6test/data1 
  Container ID = 0 
  。。。。。。
  Container Name = /db2/db6test/data2 
  Container ID = 1 
  。。。。。。
  Table space map: 
  Range Stripe Stripe Max Max Start End Adj. Containers 
  Number Set Offset Extent Page Stripe Stripe 
  [ 0] [ 0] 0 13 447 0 6 0 2 (0, 1) 
。。。。。。

表空间 TS1 为例,现在可以看到该表空间现在为 DMS 类型,有两个表空间容器,这两个表空间容器在一个 stripe set 里。

第一步,使用 ALTER TABLESPACE 命令,在命令选项中指定 MANAGED BY AUTOMATIC STORAGE 来转换表空间。

在我们发出 ALTER TABLESPACE 命令以后,表空间的发生了变化。

清单 3. 转换后的表空间信息
db2 alter tablespace ts1 managed by automatic storage 
 DB20000I The SQL command completed successfully. 
 
 db2 get snapshot for tablespaces on testdb 
。。。。。。
 Tablespace name = TS1 
  Tablespace ID = 3 
  Tablespace Type = Database managed space 
  Tablespace Content Type = All permanent data. Large table space. 
。。。。。。
 
 Container Name = /db2/db6test/data1 
  Container ID  = 0 
。。。。。。
 
  Container Name = /db2/db6test/data2 
  Container ID = 1 
。。。。。。
 
  Container Name = 
/db2/db6test/path1/db6test/NODE0000/TESTDB/T0000004/C0000000.LRG 
   
  Container ID = 2 
。。。。。。
 
  Container Name = 
/db2/db6test/path2/db6test/NODE0000/TESTDB/T0000004/C0000001.LRG 
   
  Container ID = 3 
。。。。。。
 
  Table space map: 
  Range Stripe Stripe Max Max Start End Adj. Containers 
  Number Set Offset Extent Page Stripe Stripe 
  [ 0] [ 0] 0 13 447 0 6 0 2 (0,1) 
  [ 1] [ 1] 7 15 511 7 7 0 2 (2,3)

从数据快照中我们看出,TS1 中又增加了两个容器,它是由数据库管理器根据数据库级别的存储路径新创建的。同时又新生成了一个 sctripe set,包含了新增加的两个容器。在数据库没有重新分布以前,新增加的容器并不会马上被使用。

第二步,使用 ALTER TABLESPACE 命令,在命令选项中制定 REBALANCE。

通过第一步我们已经将 DMS 转换为自动存储表空间,但用户以前定义的容器和自动存储生成的容器是并存的,这并不是我们想要得结果。如果用户忽略第二步,今后在使用 ALTER TABLESPACE 加 REDUCE 选项时,数据库可能会删除掉未使用的新增加的两个自动存储容器。所以我们在转换表空间以后必须执行第二步。第二步通常是个比较耗时的操作,这也是在线转换表空间的代价。

清单 4. REBALANCE 后的表空间信息
db2 alter tablespace TS1 rebalance 
 DB20000I The SQL command completed successfully. 
 db2 get snapshot for tablespaces on testdb 
。。。。。。
 Tablespace name  = TS1 
  Tablespace ID = 3 
  Tablespace Type = Database managed space 
  Tablespace Content Type = All permanent data. Large table space. 
  。。。。。。
  Rebalancer Mode = No Rebalancing 
  。。。。。。
 
  Container Name = 
/db2/db6test/path1/db6test/NODE0000/TESTDB/T0000003/C0000000.LRG 
  Container ID = 0 
  。。。。。。 
Container Name = 
/db2/db6test/path2/db6test/NODE0000/TESTDB/T0000003/C0000001.LRG 
 
  Container ID = 1 
。。。。。。
 
  Table space map: 
  Range Stripe Stripe Max Max Start End Adj. Containers 
  Number Set Offset Extent Page Stripe Stripe 
  [ 0] [ 0] 0 5 191 0 2 0 2 (0,1)

从运行完 rebalance 的表空间快照中我们看到,过去的两个数据库管理表空间的容器消失了,只剩下了自动存储的两个容器,stripe set 也变为了一个。我们还应该注意快照中的 Rebalancer Mode,当前是 No Rebalancing,表示表空间的 rebalance 已经完成了。

通过以上的步骤,我们已经成功的把一个数据库管理表空间在线的转换为了自动存储表空间。

转换表空间时的注意事项及使用技巧

我们已经了解到如何将非自动存储表空间转换为自动存储表空间的两种基本方法。在使用这两种方法的时候应该注意以下几点:

  • 自动存储一旦启用就不能更改,因此,在转换表空间前需要对使用需求进行全面考量;
  • 对于分区数据库,自动存储的路径必须存在于所有节点;
  • 在线转换表空间中的 REBALANCE 通常是一个比较耗时的过程,尤其是数据量比较大的表空间,所花费的时间会更长,系统资源消耗也很大。我们可以结合 throttling 功能来降低 REBANLANCE 对数据库性能的影响;
  • 由于以前建立的数据库中需要转换的表空间比较多,我们可以在 SQL 语句中结合 MON_GET_TABLESPACE 函数或者通过 SYSIBMADM.SNAPTBSP 表来找到 TBSP_USING_AUTO_STORAGE 不为 1,且 TBSP_TYPE 为 DMS 的表空间批量的进行在线转换;
  • l在通过数据库重定向恢复转换表空间时,我们也可以结合 GENERATE SCRIPT 选项,先生成模板脚本,然后通过改写模板脚本来实现批量转换。

 

 

DB2 表空间类型

标签:了解   span   space   创建   alt   管理   文件名   comm   bsp   

人气教程排行