建立數據庫和表空間筆記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
相關文章
相關標籤/搜索