表空間
數據庫的表空間可以分爲四種:系統表空,臨時表空間,撤銷表空間,應用表空間。
Ø 系統表空間:包括system,sysaux兩個表空間
Ø 臨時表空間:執行order by,group by,create index等sql語句,會產生大量的臨時數據。這些會先數據保存到PGA中,如果PGA空間不足就會寫到臨時段中。如果沒有指定默認表空間,就存放在臨時表空間。如果沒有臨時表空間就會在system表空間中創建臨時段。這樣的弊端就是吃了system表空間,產生了大量的碎片,甚至宕機。
Ø 撤銷表空間:回退事務
Ø 應用表空間:沒啥說的
大文件表空間:只能包含一個數據文件,但是可以包含4G個數據塊。Create bigfile tablespace spacename….
小文件表空間:最多1024個比數據文件,關鍵字:samllfile, 默認是這種表空間。
表空間的區、段管理
區管理方式:
Ø 數據字典管理方式:空間表中分配、回收區空間時,對數據字典中的相關基礎表進行更新
Ø 本地管理方式:表空間中區的分配與回收信息保存在表空間的數據文件中。此方式可以指定2鍾區分配方式:
l Uniform:統一分配,所有區的大小是相同的
l Autoallocate:自動分配,區的大小隨表的大小自動地動態改變,這種方式可以簡化DBA工作。
段管理方式:
Ø MANUAL:默認設置。使用可用列表來管理段的空閒數據塊。空閒的數據塊都存在列表中,需要存儲空間時就從列表中進行搜索。
Ø AUTO:使用位圖來管理段的已用數據塊和空閒數據塊,能提供更哈偶的存儲利用率。
Ø 使用uniform區分配方式:
Create tablespace space1
Datafile “c:\da\space\space1.dbf’ size 2M uniform size 128k;
Ø 使用autoallocate區分配方式:
Create tablespace space2
Datafile “c:\da\space\space2.dbf’ size 2M autoallocate;
Ø 使用auto段管理方式
Create tablespace space3
Datafile “c:\da\space\space3.dbf’ size 2M uniform size 128k segment space management auto;
修改表空間
修改表空間大小
表空間是個數據文件大小之和,修改表空間的大小有三種方式:
Ø 增加數據文件
Alter tablespace space1
Add datafile “c:\da\space\space1.1.dbf’ size 2 M
Ø 修改數據文件的大小
Alter tablespace
Datafile “c:\da\space\space1.dbf’ resize 4M
Ø 允許數據文件自動擴展
Alter database
Datafile “c:\da\space\space1.1.dbf’ autoextend on next 1M maxsize 20M
設置默認表空間
Ø 默認表空間
alter database default tablespace space1;
Ø 默認臨時表空間
Alter database default temporary tablespace space2;