(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
- CREATE TABLESPACE TS1 MANAGED BY DATABASE
- 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表空间。
- CREATE TABLESPACE SMS8K PAGESIZE 8192 MANAGED BY SYSTEM
- USING ('FSMS_8K_1') BUFFERPOOL BUFFPOOL8K
注意相关联的缓冲池也必须具备相同的8KB页大小。并且只有在激活了建立的表空间所引用的缓冲池以后才能使用该表空间。
(3)
(4)
- CREATE USER TEMPORARY TABLESPACE usr_tbsp MANAGED BY DATABASE
- USING (FILE 'd:\db2data\user_tbsp' 5000, FILE 'e:\db2data\user_tbsp' 5000)
(5)
- LIST TABLESPACE CONTAINERS FOR 2
(6)一个表空间能够有多种不一样的状态,以下所示:
- 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)对SMS表空间,咱们只能增长容器
(8)当将新容器添加到表空间或扩展示有容器时,可能会发生表空间从新平衡(rebanlance),在从新平衡期间,不限制对该表空间的访问。
2个容器,1个大 1个小 当小的用满了 不会产生均衡
扩大容器,不会产生均衡
如下示例说明如何将两个新设备容器(各含10 000页)添加到Linux和UNIX系统上的表空间:
- ALTER TABLESPACE TS1 ADD (DEVICE '/dev/rhd9'
10000, DEVICE '/dev/rhd10' 10000)
将全部容器扩展10 000页
- ALTER TABLESPACE TS1 EXTEND (ALL,10000)
(9)只能将每一个操做系统裸设备用做一个容器
(10)
如下示例说明如何在Windows 系统上的表空间中缩小文件容器(原来为1000页):
- ALTER TABLESPACE PAYROLL REDUCE (FILE 'd:\hldr\finance' 200)
在此操做以后,文件大小就从1000页减小至800页。
(11)如下示例说明如何在Linux和UNIX系统上的表空间中增大两个设备容器(原来大小为1000 页):
- ALTER TABLESPACE HISTORY RESIZE (DEVICE '/dev/rhd7'
2000, DEVICE '/dev/rhd8' 2000)
在此操做以后,两个设备的大小都从1000页增长至2000页.
注意:仅当正在删除或缩小其大小的扩展数据块数目小于或等于表空间中"高水位标记"之上的可用数据块数目时,才容许删除现有表空间容器以及缩小现有容器的大小。 高水位标记是表空间中分配的最高页的页数。此标记与表空间中已使用的页的数目不一样,高水位标记下的某些扩展数据块可能可供复用。
(12)要删除容器,可在ALTER TABLESPACE语句上使用DROP选项。例如:
- ALTER TABLESPACE TS1 DROP (FILE 'file1', DEVICE '/dev/rdisk1')
(13)重命名表空间
- RENAME TABLESPACE TS1 TO TS2
(14)将表空间状态由脱机状态切换到联机状态
- ALTER TABLESPACE <name> switch online
什么状况下会处于FFLINE状态呢?我举一个实际生产中的例子。在一个双机热备HA的环境中,客户在主机上从新建立了使用裸设备的表空间后,未同步HA环境,结果致使主机故障切换到备机时,因为裸设备权限不正确而致使表空间处于OFFLINE状态。
(15)删除表空间
若是表数据再x空间,索引在y空间,那么想删除x空间,必需连带着把y空间也删除
- DROP TABLESPACE DATA_SPACE,INDEX_SPACE,LOB_SPACE
如下SQL语句建立一个称为TEMPSPACE2的新的系统临时表空间:
- CREATE SYSTEM TEMPORARY TABLESPACE TEMPSPACE2
- MANAGED BY SYSTEM USING ('d:\systemp2')
一旦建立了TEMPSPACE2,那么就可以使用如下命令删除原来的系统临时表空间 TEMPSPACE1:
- DROP TABLESPACE TEMPSPACE1