達夢表空間管理注意事項總結

始於腳下發表於2021-04-29

達夢表空間管理注意事項總結

1 、達夢資料庫表空間新增資料檔案或者建立表空間時指定資料檔案大小時,size(resize)關鍵字指定的檔案大小數字不可以帶單位,需要全部換算成MB對應的大小,比如size 100GB就是不合法的,size 100指大小為100MB,如果新增1GB的資料檔案,需要寫成size 1024。

SQL> create tablespace dm_dba datafile 'C:\dmdbms\data\DAMENG\dm_dba01.dbf' size 100M;
create tablespace dm_dba datafile 'C:\dmdbms\data\DAMENG\dm_dba01.dbf' size 100M;
create tablespace dm_dba datafile 'C:\dmdbms\data\DAMENG\dm_dba01.dbf' size 100M;
*
第 1 行, 第 114 列[M]附近出現錯誤[-2007]:
語法分析出錯.
已用時間: 0.244(毫秒). 執行號:0.
SQL> create tablespace dm_dba datafile 'C:\dmdbms\data\DAMENG\dm_dba01.dbf' size 1GB;
create tablespace dm_dba datafile 'C:\dmdbms\data\DAMENG\dm_dba01.dbf' size 1GB;
create tablespace dm_dba datafile 'C:\dmdbms\data\DAMENG\dm_dba01.dbf' size 1GB;                                                                           *
第 1 行, 第 113 列[GB]附近出現錯誤[-2007]:
語法分析出錯.
已用時間: 0.480(毫秒). 執行號:0.
SQL> create tablespace dm_dba datafile 'C:\dmdbms\data\DAMENG\dm_dba01.dbf' size 100MB;
create tablespace dm_dba datafile 'C:\dmdbms\data\DAMENG\dm_dba01.dbf' size 100MB;
create tablespace dm_dba datafile 'C:\dmdbms\data\DAMENG\dm_dba01.dbf' size 100MB;
 *
第 1 行, 第 115 列[MB]附近出現錯誤[-2007]:
語法分析出錯.
已用時間: 0.360(毫秒). 執行號:0.
SQL> create tablespace dm_dba datafile 'C:\dmdbms\data\DAMENG\dm_dba01.dbf' size 100KB;
create tablespace dm_dba datafile 'C:\dmdbms\data\DAMENG\dm_dba01.dbf' size 100KB;
create tablespace dm_dba datafile 'C:\dmdbms\data\DAMENG\dm_dba01.dbf' size 100KB;
 *
第 1 行, 第 115 列[KB]附近出現錯誤[-2007]:
語法分析出錯.
已用時間: 0.219(毫秒). 執行號:0.
SQL> create tablespace dm_dba datafile 'C:\dmdbms\data\DAMENG\dm_dba01.dbf' size 100;
操作已執行
已用時間: 78.939(毫秒). 執行號:7.
SQL> select file_name,bytes/1024/1024 from dba_data_files where file_name like '%dm_dba%';
行號       FILE_NAME                          BYTES/1024/1024
---------- ---------------------------------- --------------------
1          C:\dmdbms\data\DAMENG\dm_dba01.dbf 100
已用時間: 16.934(毫秒). 執行號:8.
SQL>


以上過程可以清晰的看到,在達夢資料庫中,size(resize)後的數字帶任何單位都是不符合規範的,大小數字的預設單位為MB,其他大小單位只能換算成MB來進行處理。

2 、達夢資料庫表空間的單個資料檔案的最小與最大大小依賴於資料庫初始化時頁的大小,單個檔案的最小值為頁大小乘以4096,最大值為頁大小乘以2147483647。

SQL> select para_name,para_value from v$dm_ini where para_name = 'GLOBAL_PAGE_SIZE';
行號       PARA_NAME        PARA_VALUE
---------- ---------------- ----------
1          GLOBAL_PAGE_SIZE 8192
已用時間: 17.564(毫秒). 執行號:4.
SQL> select para_name,para_value from v$dm_ini where para_name = 'GLOBAL_EXTENT_SIZE';
行號       PARA_NAME          PARA_VALUE
---------- ------------------ ----------
1          GLOBAL_EXTENT_SIZE 16
已用時間: 3.351(毫秒). 執行號:5.
SQL> create tablespace dm_tbs datafile 'C:\dmdbms\data\DAMENG\dm_tbs01.dbf' size 31;
create tablespace dm_tbs datafile 'C:\dmdbms\data\DAMENG\dm_tbs01.dbf' size 31;
第1 行附近出現錯誤[-2410]:資料檔案[C:\dmdbms\data\DAMENG\dm_tbs01.dbf]大小無效.
已用時間: 2.566(毫秒). 執行號:0.
SQL> create tablespace dm_tbs datafile 'C:\dmdbms\data\DAMENG\dm_tbs01.dbf' size 32;
操作已執行
已用時間: 102.853(毫秒). 執行號:6.
SQL>


從以上過程可以看出,資料檔案大小小於32MB時,會提示檔案大小無效,因為此處頁大小8KB,所以資料檔案最小大小為8KB乘以4096等於32MB。單個檔案的最大大小同理。

3 、達夢資料庫的資料檔案,可以配置自動擴充套件屬性,但是有範圍限制,自動擴充套件的範圍為1-2048,單位為MB,若不指定自動擴充套件大小,預設為1MB。如果不指定autoextend子句,系統預設是開啟自動擴充套件的。

SQL> select file_name,autoextensible,increment_by from dba_data_files where tablespace_name like 'DM_%';
行號       FILE_NAME                  AUTOEXTENSIBLE INCREMENT_BY
---------- -------------------------- -------------- ------------
1          C:\dmdbms\data\DAMENG\DMHR.DBF     YES            0
2          C:\dmdbms\data\DAMENG\dm_dba01.dbf YES            0
3          C:\dmdbms\data\DAMENG\dm_tbs01.dbf YES            0
已用時間: 4.138(毫秒). 執行號:12.
SQL> alter tablespace dm_tbs datafile 'C:\dmdbms\data\DAMENG\dm_tbs01.dbf' autoextend on next 10;
操作已執行
已用時間: 21.822(毫秒). 執行號:13.
SQL>
SQL> alter tablespace dm_dba datafile 'C:\dmdbms\data\DAMENG\dm_dba01.dbf' autoextend on next 2049;
alter tablespace dm_dba datafile 'C:\dmdbms\data\DAMENG\dm_dba01.dbf' autoextend on next 2049;
第1 行附近出現錯誤[-2409]:資料檔案[C:\dmdbms\data\DAMENG\dm_dba01.dbf]的NEXT值無效,必須小於等於2048.
已用時間: 0.762(毫秒). 執行號:0.
SQL> alter tablespace dm_dba datafile 'C:\dmdbms\data\DAMENG\dm_dba01.dbf' autoextend on next 2048;
操作已執行
已用時間: 18.471(毫秒). 執行號:14.
SQL> select file_name,autoextensible,increment_by from dba_data_files where tablespace_name like 'DM_%';
行號       FILE_NAME                     AUTOEXTENSIBLE INCREMENT_BY
---------- ---------------------------- -------------- ------------
1          C:\dmdbms\data\DAMENG\DMHR.DBF     YES            0
2          C:\dmdbms\data\DAMENG\dm_dba01.dbf YES            2048
3          C:\dmdbms\data\DAMENG\dm_tbs01.dbf YES            10
已用時間: 1.627(毫秒). 執行號:15.
SQL>


4 、system,roll,temp不能進行offline操作的,也就是不能在資料庫聯機狀態下進行資料檔案儲存位置變更操作,而其他表空間是可以進行offline操作的。

SQL> alter tablespace system offline;
alter tablespace system offline;
第1 行附近出現錯誤[-3409]:表空間[SYSTEM]不能置為離線狀態.
已用時間: 0.436(毫秒). 執行號:0.
SQL> alter tablespace roll offline;
alter tablespace roll offline;
第1 行附近出現錯誤[-3409]:表空間[ROLL]不能置為離線狀態.
已用時間: 0.376(毫秒). 執行號:0.
SQL> alter tablespace temp offline;
alter tablespace temp offline;
第1 行附近出現錯誤[-3409]:表空間[TEMP]不能置為離線狀態.
已用時間: 0.623(毫秒). 執行號:0.
SQL> alter tablespace main offline;
操作已執行
已用時間: 109.541(毫秒). 執行號:18.
SQL> alter tablespace dm_tbs offline;
操作已執行
已用時間: 102.130(毫秒). 執行號:19.
SQL>


5 、達夢資料庫表空間的名稱不能超過128個位元組。表空間的名字超過128個位元組就會提示標識長度非法的資訊。其實這個限制也是可以從dba_tablespaces中tablespace_name列的長度可以看出,超過128個位元組後是無法將表空間資訊記錄到資料庫資料字典中的。

SQL> create tablespace dm_12888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 datafile 'C:\dmdbms\dm_128.dbf' size 10;
create tablespace dm_1288888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 datafile 'C:\dmdbms\dm_128.dbf' size 10;
第 1 行, 第 571 列[dm_128888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888]附近出現錯誤[-2051]:
標示符長度非法.
已用時間: 0.260(毫秒). 執行號:0.
SQL>


6 、單個表空間最多可以新增256個資料檔案。這個可以從TS_MAX_ID和TS_FIL_MAX_ID這兩個引數的值來確定。TS_FIL_MAX_ID:限制每個表空間所支援的最大檔案個數,範圍(2 ~255);TS_MAX_ID:限制系統所支援的最大表空間ID,有效值範圍(5 ~ 65517),與系統實際最大ID比較,取最大值。

SQL> select para_name,para_value,description from v$dm_ini where para_name in ('TS_MAX_ID','TS_FIL_MAX_ID');
行號    PARA_NAME     PARA_VALUE DESCRIPTION
-----  ------------- ---------- --------------------------------------------
 
1      TS_MAX_ID     8192       Maximum ID value for tablespaces in database
2      TS_FIL_MAX_ID 255        Maximum ID value for files in tablespace
已用時間: 3.344(毫秒). 執行號:24.
SQL>


 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31403259/viewspace-2770405/,如需轉載,請註明出處,否則將追究法律責任。

相關文章