(1)在Linux/UNIX上,数据库管理器创建的任何目录都是使用权限位700创建的。这意味着只有实例所有者才拥有读写访问权和执行访问权。因为只有实例所有者具有这种访问权,所以当正在创建多个实例时,可能会出现下列情况:

使用与上面描述的相同的目录结构,假定目录级别/prod/user_data不存在。

user1创建一个实例(默认情况下命名为user1),接着创建一个数据库,然后创建一个表空间,且/prod/user_data/container1作为该表空间的一个容器。

user2创建一个实例(默认情况下命名为user2),接着创建一个数据库,然后尝试创建一个表空间,且/prod/user_data/container2作为该表空间的一个容器。

因为数据库管理器根据第一个请求使权限位700创建了目录级别/prod/user_data,所以 user2没有对这些目录级别的访问权,因此不能在这些目录中创建container2。在这种情况下,CREATE TABLESPACE操作将失败。

解决此冲突有两种方法:

在创建表空间之前创建目录/prod/user_data,并将许可权设置为user1和user2创建表空间所需的任何访问权。如果所有级别的表空间目录都存在,那么数据库管理器不会修改访问权。

在user1创建/prod/user_data/container1之后,将/prod/user_data的许可权设置为user2创建表空间所需的任何访问权。

 

(2)下列SQL语句在AIX系统上创建了一个使用具有10 000页的3个裸设备作为表空间容器的DMS表空间,并指定它们的I/O特征。

  1. CREATE TABLESPACE TS1  MANAGED BY DATABASE 
  2.  USING (DEVICE '/dev/rdblv6' 10000, DEVICE '/dev/rdblv7' 10000, 
    DEVICE 
    '/dev/rdblv8' 10000) OVERHEAD 7.5  TRANSFERRATE 0.06 

在此SQL语句中提到的裸设备必须已经存在,且实例所有者和SYSADM组必须能够写入这些设备。

您还可以创建一个表空间,它使用的页大小比默认的4KB更大。下列SQL语句在Linux和UNIX系统上创建一个具有8KB页大小的SMS表空间

  1. CREATE TABLESPACE SMS8K  PAGESIZE 8192  MANAGED BY SYSTEM  
  2.             USING ('FSMS_8K_1')   BUFFERPOOL BUFFPOOL8K 

注意相关联的缓冲池也必须具有相同的8KB页大小。而且只有在激活了创建的表空间所引用的缓冲池之后才能使用该表空间。

(3)

    1. CREATE SYSTEM TEMPORARY TABLESPACE tmp_tbsp   
    2. MANAGED BY SYSTEM      USING ('d:\tmp_tbsp','e:\tmp_tbsp')

(4)

  1. CREATE USER TEMPORARY TABLESPACE usr_tbsp  MANAGED BY DATABASE 
  2. USING (FILE 'd:\db2data\user_tbsp' 5000,  FILE 'e:\db2data\user_tbsp' 5000)

(5)

  1. LIST TABLESPACE CONTAINERS FOR 2

(6)一个表空间可以有多种不同的状态,如下所示:

  1. 0x0              Normal  
  2. 0x1              Quiesced:SHARE  
  3. 0x2              Quiesced:UPDATE 
  4. 0x4              Quiesced:EXCLUSIVE  
  5. 0x8              Load pending  
  6. 0x10             Delete pending  
  7. 0x20             Backup pending  
  8. 0x40             Rollforward in progress  
  9. 0x80             Rollforward pending  
  10. 0x100            Restore pending  
  11. 0x100            Recovery pending(not used)  
  12. 0x200            Disable pending  
  13. 0x400            Reorg in progress  
  14. 0x800            Backup in progress  
  15. 0x1000           Storage must be defined  
  16. 0x2000           Restore in progress  
  17. 0x4000           Offline and not accessible  
  18. 0x8000           Drop pending  
  19. 0x2000000        Storage may be defined  
  20. 0x4000000        StorDef is in 'final' state  
  21. 0x8000000        StorDef was changed prior to rollforward  
  22. 0x10000000       DMS rebalancer is active  
  23. 0x20000000       TBS deletion in progress  
  24. 0x40000000       TBS creation in progress  
  25. 0x8              For service use only

(7)对SMS表空间,我们只能增加容器

(8)当将新容器添加到表空间或扩展现有容器时,可能会发生表空间重新平衡(rebanlance),在重新平衡期间,不限制对该表空间的访问。

2个容器,1个大 1个小 当小的用满了 不会产生均衡

扩大容器,不会产生均衡

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

  1. ALTER TABLESPACE TS1  ADD (DEVICE '/dev/rhd9'  
    10000,  DEVICE  
    '/dev/rhd10' 10000)

将所有容器扩展10 000页

  1. ALTER TABLESPACE TS1   EXTEND (ALL,10000)

(9)只能将每个操作系统裸设备用作一个容器

(10)

以下示例说明如何在Windows 系统上的表空间中缩小文件容器(原来为1000页):

  1. ALTER TABLESPACE PAYROLL     REDUCE  (FILE 'd:\hldr\finance'  200) 

在此操作之后,文件大小就从1000页减少至800页。

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

  1. ALTER TABLESPACE HISTORY  RESIZE (DEVICE '/dev/rhd7'
      2000,  DEVICE  '/dev/rhd8' 2000) 

在此操作之后,两个设备的大小都从1000页增加至2000页.

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

(12)要删除容器,可在ALTER TABLESPACE语句上使用DROP选项。例如:

  1. ALTER TABLESPACE TS1 DROP (FILE 'file1', DEVICE '/dev/rdisk1')

(13)重命名表空间

  1. RENAME TABLESPACE TS1 TO TS2

(14)将表空间状态由脱机状态切换到联机状态

  1. ALTER TABLESPACE <name>  switch online

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

(15)删除表空间

如果表数据再x空间,索引在y空间,那么想删除x空间,必需连带着把y空间也删除

  1. DROP TABLESPACE DATA_SPACE,INDEX_SPACE,LOB_SPACE

以下SQL语句创建一个称为TEMPSPACE2的新的系统临时表空间:  

  1. CREATE SYSTEM TEMPORARY TABLESPACE TEMPSPACE2  
  2. MANAGED BY SYSTEM USING ('d:\systemp2'

一旦创建了TEMPSPACE2,那么就可使用以下命令删除原来的系统临时表空间 TEMPSPACE1:

  1. DROP TABLESPACE TEMPSPACE1