(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