11.管理物件空間(筆記)
11.管理物件空間
資料塊(oracle塊)是oracle在資料檔案上執行I/O操作的最小單位.
區是oracle進行空間分配的邏輯單位,它是由相鄰資料塊組成的.
段則用於儲存特定邏輯物件的所有資料.它是由一個或多個區組成的!
段
當建立表,索引和簇等物件時,oracle會為這些物件分配儲存空間,以存放他們的資料資訊,為這些物件所分配的儲存空間被稱為段.在一個表空間上可以包含一個或多個段,一個段只能存放在一個表空間上.
1,表段(Table)
表段用於儲存表的所有資料,其名稱與表名相同.建立表時,oracle會為該表建立相應的表段,並且表段只能存放在一個表空間中.
2,表分割槽段(Table Partition)
表分割槽段用於儲存分割槽表某個分割槽的資料.每個分割槽對應於一個表分割槽段.透過使用分割槽選項.可以將一張大表的資料部署到多個不同的分割槽段中,從而降低I/O次數,提供I/O效能.
3,簇段(Cluster)
簇段用於儲存簇表的資料,其名稱與簇名相同.簇用於邏輯組織相關表的資料,使用簇的目的時為了降低I/O次數,提高I/O效能.例如.如果經常執行主從表直接的連線查詢,可以將這兩張表的資料組織到簇中,一個簇可以包含一個或多個表,當將表組織到簇中時,其資料存放在簇段中,而不會為表分配專門的表段.假定在USERS表空間上建立簇ORD_ITEM_CLU,並且將表ORD和ITEM組織到簇中,此時只會分配簇段ORD_ITEM_CLU,而不會分配表段ORD和ITEM.
4,索引段(Index)
索引段用於儲存索引的資料,其名稱與索引名完全相同.當建立索引時,oracle會為索引建立相應的索引段,並且一個索引只能存放在一個表空間中.
5,索引分割槽段(Index Partition)
索引分割槽段用於儲存分割槽索引某個分割槽的資料,每個分割槽對應一個索引分割槽段..索引分割槽只能建立在分割槽表上,而不能建立在普通表上.
6,索引組織表段(Index_organized Table)
索引組織表時以B*-樹結構來組織表資料的.如果表資料經常需要引用主鍵列來檢索,可以考慮建立索引組織表,以加快訪問速度.一般情況下,表與索引資料分別存放在表段和索引段中.但是,如果建立索引組織表,表和其主鍵索引的資料會存放在索引段中,需要注意,當建立索引組織表時,必須定義主鍵列.
7,UNDO段.
UNDO段用於存放事務所修改資料的舊值.
8,臨時段(Temporary Segment)
臨時段用於存放排序操作所產生的臨時資料.
9,LOB段,
LOB段用於儲存LOB列的資料,如文獻,影像,音訊,影片等資料,建立表時,可以定義CLOB,BLOB或NCLOB型別的列,並且ORACLE會自動為這些列建立相應的LOB段,對於LOB列來說,如果資料長度低於4000位元組,該列和其他列的資料會以前存放在表段中,如果資料長度超過4000位元組,資料將會被存放到LOB段中.
10.LOB索引段
LOB索引段用於存放LOB索引的資料,定義LOB型別時,oracle不僅會為LOB列建立LOB段,還會建立LOB索引段,以加快LOB資料的檢索速度.
11.巢狀表段(Nested Table)
巢狀表段用於儲存巢狀表型別列的資料.巢狀表型別類似於高階語言中的物件資料型別.
該型別可以作為表列的資料型別使用.定義巢狀表列時,oracle會自動為改列分配巢狀表段,以存放該列的資料.
12,根引導段(Cache)
根引導段用於初始化資料字典快取記憶體,因此也被稱為Cache段,它時在建立資料庫時使用sql.bsq指令碼自動建立的,該段的維護由oralce自動完成.不需要DBA進行任何干預.
顯示段資訊
1,顯示段型別
SELECT distinct segment_type FROM dba_segments;
2,顯示段詳細資訊.
Col tablespace_name format a15
SELECT tablespace_name,extents,bytes
FROM dba_segment
WHERE owner=’scott’ AND segment_name=’EMP’;
其中,tablespace_name用於標識段所在表空間,extents用於標識段所包含的區個數,bytes用於標識段的尺寸,owner用於標識段的所有者,segment_name用於標識段名.
管理儲存引數
儲存引數
建立或修改資料物件時,透過指定儲存引數,可以設定區尺寸和區個數,對於字典管理表空間來說,區尺寸由儲存引數確定.對於本地管理表空間來說,如果在建立區域性表空間時指定了UNIFORM選項,那麼所有區尺寸完全相同,如果在建立區域性表空間時指定了AUTOALLOCATE選項,那麼區尺寸將由ORACLE SERVER自動分配.儲存引數既可以在段級定義,也可以在表空間級定義.其中段級具有最高的優先順序,表空間其次.如果在段級和表空間級都沒有指定儲存引數,那麼oracle會使用預設儲存引數.
1,INITIAL
對於字典管理表空間來說,INITIAL 用於指定為段所分配的第一個區的尺寸.對於本地管理表空間來說,如果MINEXTENTS等於1,資料庫會使用INITIAL和區尺寸確定段的初始尺寸.INITIAL只能在建立物件(CREATE TABLE,CREATE INDEX和CREATE CLUSTER)時設定.不能使用ALTER 語句進行修改.
2,NEXT
對於本地管理表空間來說,因為資料庫可以自動管理區,所以該引數沒有太大意義,對於字典管理表空間來說,NEXT用於指定為段所分配的第二個區的尺寸.
3,PCTINCREASE
對於字典管理表空間來說,PCTINCREASE用於指定從第三個區開始,每個區比前一個區所增長的百分比,取值為0~100.
4,MINEXTENTS
對於字典管理表空間來說,MINEXTENTS用於指定為段所分配的初始區的個數.
5,MAXEXTENTS
對於字典管理表空間來說,MAXEXTENTS用於指定段可以包含的最大區個數.
6.FREELIST GROUPS
FREELIST GROUPS用於指定物件的空閒列表組個數,每個空閒列表組都會佔用一個資料塊,oracle建議為Oracle Real Application Cluster的每個例程指定一個空閒列表.需要注意,FREELIST GROUPS只能在段級指定.
7,FREELISTS
FREELISTS用於指定每個空閒列表組上的空閒列表個數,空閒列表用於維護可插入資料的資料塊,注意,FREELISTS只能在段級指定.
在本地管理表空間上使用INITIAL引數.
當在本地管理表空間上建立資料物件時,透過使用INITIAL引數和區尺寸可以確定段的初始尺寸.假定在建立本地管理表空user01時指定UNIFORM選項,並且區尺寸為128k,以建立t1為例,說明確定段初始尺寸的方法.
CREATE TABLES t1(cola INT) TABLESPACE user01
STORAGE(INITIAL 500K);
TABLESPACE選項用於指定段所在表空間,STORAGE用於指定段的儲存引數,INITIAL用於指定段的初始尺寸,因為區尺寸為500k,而該值不能整除128k,因此段的初始尺寸實際為512k.
在字典管理表空間上使用儲存引數.
假定建立字典管理表空間user02時,指定預設儲存引數INITIAL和NEXT均為10k,PCTINCREASE為50,以建立表t2為例,說明在字典表管理空間上這些儲存引數的作用.
CREATE TABLE t2 (cola INT) TABLESPACE user02
STORAGE(NEXT 20K MINEXTENTS 4);
執行以上語句後,oracle會建立表T1,並且為其分配尺寸為110k的表段T1,因為MINEXTENTS為4,索引段T1包含4個區,因為建表時為指定INITIAL ,所以第一個區會使用表空間預設儲存引數(尺寸:10k),因為建表時指定NEXT為20K,索引第二個區尺寸為20K,第三和第四分別為30K和50K.
1,顯示已分配區
SELECT extent_id, file_id, block_id,bytes
FROM dba_extents
WHERE owner=’sys’ AND segment_name=’T1’;
其中,extent_id用於標識區編號(0:標識第一個區),file_id用於標識區所在的檔案號,block_id用於標識區的起始塊號,bytes用於標識區的尺寸.
2,顯示空閒區
顯示USER01表空間的剩餘表空間
SELECT sum(bytes) FROM dba_fres_space
WHERE tablespace_name=’USER01’;
管理資料塊空間
塊空間引數
1,PCTFREE
該引數用於指定在資料塊內為UPDATE操作所預留空間的百分比,預設值為10.
設定PCTFREE的原則
使用小的PCTFREE可以節省空間,如果物件的UPDATE操作非常少,應該使用較少的PCTFREE.
使用打的PCTFREE可以提供UPDATE效能,如果物件的UPDATE非常頻繁.應該使用較大的PCTFREE.
2.PCTUSED
該引數用於指定將資料塊標記為可重用塊的已用空間最低百分比,預設值為40.
設定較小的PCTUSED可以降低UPDATE和DELETE的處理開銷,但會增加資料庫的未用空間;設定較大的PCTUSED可以提高空間利用,但會增加INSERT和UPDATE的處理開銷.
3,INITRANS
INITRANS用於指定初始事務入口個數,設定了該引數後,oracle會在資料庫的塊頭上為每個事務入口預留相應的空間.需要注意,INITRANS設定的越大,資料塊的剩餘空間越少,當INITRANS預留的空間被永盡後,oracle會從剩餘空間中分配更多的空間,並且這些空間會變為塊頭空間的永久部分.在10g之前,使用引數MAXTRANS可以指定資料庫的最大事務入口個數,從10g開始,該引數已經被棄用,並且oracle所允許的最大事務入口個數為255.
使用塊空間引數.
1,建立物件時指定塊空間引數.
建立表和簇時,可以使用所有塊空間引數;建立索引時,只能設定引數PCTREEE和INITRANS.
CREATE CLUSTER dept_emp_clu(deptno NUMBER(3))
PCTFREE 20 PCTUSED 40 INITRANS 4;
CREATE TABLE department (deptno NUMBER(2),dname VARCHAR2(10))
PCTFREE 20 PCTUSED 40 INITRANS 4;
CREATE INDEX pk_deptno ON department(depot)
PCTFREE 20 INITRANS 4;
2,改變物件的塊空間引數.
建立資料物件後,如果塊空間引數不合適,可以使用ALTER命令修改塊空間引數.但需要注意,索引的PCTFREE引數不能修改.
ALTER CLUSTER dept_emp_clu PCTFREE 30 PCTUSED 40 INITRANS 4;
ALTER TABLE department PCTFREE 30 PCTUSED 40 INITRANS 4;
ALTER INDEX pk_deptno INITRANS 4;
顯示塊空間引數
1,顯示簇的塊空間引數
SELECT pct_free, pct_used, ini_trans, max_trans
FROM dba_clusters
WHERE owner=’SYSTEM’ AND cluster_name=’DEPT_EMP_CLU’;
2,顯示錶的塊空間引數.
SELECT pct_free, pct_used, ini_trans,max_trans
FROM dba_tables
WHERE owner=’SYSTEM’ AND table_name=’department’;
3,顯示索引的塊空間引數
SELECT pct_free, ini_trans, max_trans
FROM dba_indexes
WHERE owner=’SYSTEM’ AND index_name=’PK_DEPTNO’;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/312079/viewspace-245225/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 11. 名稱空間
- 10.管理UNDO表空間.(筆記)筆記
- 9.管理表空間和資料檔案(筆記)筆記
- AIX培訓筆記——交換空間AI筆記
- linux記憶體管理--使用者空間和核心空間Linux記憶體
- go 學習筆記之工作空間Go筆記
- OpenCV 名稱空間學習筆記OpenCV筆記
- 【 PHP 學習筆記 】名稱空間PHP筆記
- [ PHP 學習筆記 ] 名稱空間PHP筆記
- php名稱空間namespace使用筆記PHPnamespace筆記
- 表空間傳輸讀書筆記筆記
- oracle表空間管理(簡單記錄)Oracle
- Oracle 本地表空間管理與字典表空間管理Oracle
- oracle 表空間 資料檔案 筆記Oracle筆記
- 工作筆記 - 調整索引和表空間筆記索引
- C++筆記--名字空間和異常C++筆記
- DB2學習筆記 - 表空間DB2筆記
- 機器學習-學習筆記(一) --> (假設空間 & 版本空間)及 歸納偏好機器學習筆記
- 【筆記】時間管理《小強升職記》筆記
- 11.物件導向(3)物件
- 將字典管理表空間轉換為本地管理表空間
- 9i筆記-最佳化表空間筆記
- Linux使用者空間記憶體管理Linux記憶體
- Oracle表空間管理Oracle
- Oracle 表空間管理Oracle
- ASM表空間管理ASM
- 管理表空間(表空間的屬性)轉貼
- 表空間管理之bigfile表空間設定
- 遷移SYSTEM表空間為本地管理表空間
- TP5學習筆記一 名稱空間筆記
- SGI STL學習筆記(1):空間配置器(allocator)筆記
- ORACLE 表空間筆記-20140320Oracle筆記
- Go的棧空間管理Go
- Oracle undo 表空間管理Oracle
- Oracle 表空間的管理Oracle
- oracle undo表空間管理Oracle
- Oracle的表空間管理Oracle
- JS筆記—— 物件 (原型物件)JS筆記物件原型