建立数据库和表空间笔记2

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

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

user1建立一个实例(默认状况下命名为user1),接着建立一个数据库,而后建立一个表空间,且/prod/user_data/container1做为该表空间的一个容器。ide

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

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

解决此冲突有两种方法:操作系统

在建立表空间以前建立目录/prod/user_data,并将许可权设置为user1和user2建立表空间所需的任何访问权。若是全部级别的表空间目录都存在,那么数据库管理器不会修改访问权。orm

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

 

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

  
  
  
  
  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
相关文章
相关标签/搜索