表空間解釋:所有的資料庫物件都存放在指定的空間中;但主要存放的是表資料, 所以稱作表空間。
當我們在規劃資料庫結構時需要考慮如何管理資料庫中的相關檔案, 每個表空間儲存什麼資料,在表空間中建立幾個多大的資料檔案,以及資料檔案儲存的位置等。
下面介紹表空間的管理:
在建立 dm 資料庫時,會自動建立 5 個表空間:system 表空間、roll 表空間、main表空間、temp 表空間和 hmain 表空間。
1 . system 表空間存放了有關 dm 資料庫的字典資訊,使用者不能在 system 表空間建立表和索引。
2 . roll 表空間完全由 dm 資料庫自動維護,使用者無需干預。該錶空間用來存放事務執行過程中執行 dml 操作之前的值,從而為訪問該錶的其他使用者提供表資料的讀一致性檢視。
3 . main 表空間在初始化庫的時候,就會自動建立乙個大小為 128m 的資料檔案main.dbf。在建立使用者時,如果沒有指定預設表空間,則系統自動指定 main 表空間為使用者預設的表空間。
4 . temp 表空間完全由 dm 資料庫自動維護。當使用者的 sql 語句需要磁碟空間來完成某個操作時,dm 資料庫會從 temp 表空間分配臨時段。如建立索引、無法在記憶體中完成的排序操作、sql 語句中間結果集以及使用者建立的臨時表等都會使用到 temp表空間。
5 . hmain 表空間屬於 hts 表空間,完全由 dm 資料庫自動維護,使用者無需干涉。當使用者在建立 huge 表時,未指定 hts 表空間的情況下,充當預設 hts 表空間。
每乙個使用者都有乙個預設的表空間。對於 sys、syssso、sysauditor 系統使用者,預設的使用者表空間是 system,sysdba 的預設表空間為 main,新建立的使用者如果沒有指定預設表空間,則系統自動指定 main 表空間為使用者預設的表空間。如果使用者在建立表的時候,指定了儲存表空間 a,並且和當前使用者的預設表空間 b 不一致時,表儲存在使用者指定的表空間 a 中,並且預設情況下,在這張表上面建立的索引也將儲存在 a 中,但是使用者的預設表空間是不變的,仍為 b。
一般情況下,建議使用者自己建立乙個表空間來存放業務資料,或者將資料存放在預設的使用者表空間 main 中。
建立表空間:建立表空間時需要指定表空間名和其擁有的資料檔案列表。
例1:規劃表空間,初始大小為 31m.(會報錯的)
原因:表空間的初始大小是頁的 4096 倍,在達夢裡頁大小可以為 4kb、8kb、16kb 或者 32kb。
例2:建立名為 tbs的表空間,並指定該空間上擁有 2 個資料檔案,每個資料檔案的大小為 128m。
create tablespace tbs datafile 'd:\tbs.dbf' size 128, 'd:\tbs2.dbf' size 128;
擴充套件表空間:表空間通過資料檔案來擴充套件,表空間的大小等於構成該錶空間的所有資料檔案的大小之和。所以要擴充套件表空間可以通過新增新的資料檔案或者擴充套件表空間中已有的資料檔案完成。
例3:規劃表空間tbs,初始為128m,有2個資料檔案,每個檔案最大2g,每次擴充套件1m。
create tablespace tbs datafile '/dm8/data/dameng/tbs1_01.dbf' size 128 autoextend on next 1 maxsize 20480, '/dm8/data/dameng/tbs1_02.dbf' size 128 autoextend on next 1 maxsize 20480;
查詢表空間
select tablespace_name from dba_tablespaces;
行號 tablespace_name
------------------------------------
1 system (系統表空間,資料字典)
2 roll(回滾表空間,支援 mvcc)
3 temp(臨時表空間,臨時資料)
4 main(資料庫預設的表空間)
5 hmain(存放列存資料)
6 tbs (自己新建表空間)
注意事項:system,roll,temp 上述這3種表空間不能手動建立。
修改表空間名:可修改已存在的由使用者建立的表空間的名稱。
例4:修改 tbs表空間名為books。
alter tablespace tbs rename to books;
修改表空間狀態:使用者表空間有聯機和離線兩種狀態。系統表空間、回滾表空間、重做日誌表空間和臨時檔案表空間不允許離線。設定表空間狀態為離線狀態時,如果該錶空間有未提交的事務,則
離線失敗報錯。離線後可對錶空間的資料進行備份。
例5:修改 tbs表空間狀態為離線。
alter tablespace tbs offline;
例6:修改 bookshop 表空間狀態為聯機。
alter tablespace tbs online;
檢視表空間狀態:
select tablespace_name,status from dba_tablespaces; --0:聯機 1:離線
注意:mpp 環境下,可能發現節點間的表空間不一致情況如:ep01 為 online 狀態,ep02 為 offline 狀態,這個時候無論執行 online 還是 offline 都是報錯。需要使用者介 入 ,才 可 以 解 決 問 題 。 用 戶 local 方 式 登 陸 實 例 , 並 執 行sp_set_session_local_type(1),使得該會話可以執行 ddl 操作,再執行 online 或 者 offline 即可。
刪除表空間:只可以刪除使用者建立的表空間並且只能刪除未使用過的表空間。刪除表空間時會刪除其擁有的所有資料檔案。
例7:刪除 tbs表空間。
drop tablespace tbs;
更換儲存
表空間離線:
sql> alter tablespace tbs offline;
拷貝檔案到目的路徑(修改控制檔案):
sql> alter tablespace tbs rename datafile 『/dm8/data/dameng/tbs.dbf』 to 『/dm8/tbs/tbs.dbf』;
表空間聯機:
sql> alter tablespace tbs online;
DM資料庫表空間管理
1 檢視表空間 dba tablespaces 2 達夢資料庫表空間 system 資料字典資訊,動態效能檢視 roll 資料庫執行中的回滾記錄 main 資料庫的預設表空間,存放的真實資料。建立使用者或者建立數 據庫物件不指定表空間,就放在預設表空間中。hmain huge 表空間 temp 臨時...
DM達夢資料庫 表空間
dm達夢資料庫表空間基本介紹 主要表空間介紹 system 資料字典和全域性的系統資料。roll 存放了資料庫執行過程中產生的回滾記錄。temp 臨時表空間 main 資料庫預設的表空間,建立資料物件時,如果不指定存放的位置,預設存放在該錶空間。hmain huge表空間。undo retentio...
dm表空間管理
sql create tablespace tbs datafile home dmdba dmdbms data dameng tbs.dbf size 10 autoextend on maxsize 100 create tablespace tbs datafile home dmdba d...