學習目標
1.描述Oracle資料庫的邏輯結構
2.建立資料表空間
3.改變資料表空間大小
4.為臨時段分配空間
5.改變資料表空間狀態
6.改變資料表空間的儲存設定
首先看一下oracle儲存結構:
1.oracle資料庫邏輯結構包含哪些東西?
1)資料表空間
a.一個Oracle資料庫邏輯上分為更小的邏輯地區叫做資料表空間
b.一個資料表空間同時只屬於一個資料庫
c.每個資料表空間由一個或多個系統檔案組成,叫做資料檔案datafile
d.一個資料表空間可以有1個或多個段組成
e.當資料庫運行時資料表空間可以是online狀態
f.除了SYSTEM資料表空間或者帶有活動復原段的資料表空間,其他資料表空間可以設定為offline狀態
g.資料表空間可以再讀寫(read-write)和唯讀(read-only)狀態間切換
2)段
a.一個段是在一個資料表空間中為指定的邏輯存數結構分配的空間。例如,分配給一個表的所有儲存就是一個段。
b.一個段只能屬於一個資料表空間,可以跨越多個資料檔案
c.一個段由一個或多個區組成
3)區
a.隨著段的增長,額外的區將分配給段
b.DBA可以為段手動增加區
c.一個區是連續的oracle塊集合
d.一個區只能在一個資料檔案中存在
4)塊
a.塊作為oracle資料庫最小的儲存單位,資料全部儲存在資料區塊中。
b.一個oracle資料區塊相當於一個或多個從已存在的資料檔案中分配的作業系統塊
c.一個標準資料區塊的大小由資料庫建立時的初始化參數DB_BLOCK_SIZE指定
d.為避免不必要的I/O,資料區塊的大小應該是作業系統塊大小的幾倍
e.最大的資料區塊大小取決於作業系統
2.系統資料表空間與非系統資料表空間的區別?
1)系統資料表空間 system tablespaces:
a.隨著資料庫的建立而建立
b.在所有資料庫中必須存在
c.系統資料表空間包含資料字典,儲存程式單元
e.包含系統復原段
f.最好不要包含使用者資料
2)非系統資料表空間 non-system tablespaces:
a.分離復原段、臨時段、應用資料區段和應用索引段
b.通過備份需求分離資料
c.分離動態和待用資料
e.控制使用者物件空間分配的數量
f.方便資料庫管理
3.如何建立資料表空間?
使用create tablespace語句,一下是官方樣本:
CREATE TABLESPACE userdata
DATAFILE '/u01/oradata/userdata01.dbf' SIZE 100M
AUTOEXTEND ON NEXT 5M MAXSIZE 200M;
CREATE TABLESPACE tablespace
[DATAFILE clause]
[MINIMUM EXTENT integer[K|M]]
[BLOCKSIZE integer [K]]
[LOGGING|NOLOGGING]
[DEFAULT storage_clause ]
[ONLINE|OFFLINE]
[PERMANENT|TEMPORARY]
MINIMUM EXTENT 指定最小區大小,使用K(千兆)或M(兆)
LOGGING 預設值,指定資料表空間中對所有表,索引和分區修改寫入到redo中
NOLOGGING 與LOGGING相反
ONLINE與OFFLINE 建立完資料表空間後是否立即可用
PERMANENT 指定資料表空間可用來保留永久對象
TEMPORARY 指定資料表空間只能來保留臨時對象
AUTOEXTEND 啟用資料檔案自動擴充
4.管理資料表空間的方式?
1)本地管理資料表空間
a.用位元影像bitmap(在每個資料檔案中維護)記錄空閑區
b.每個bit對應一個資料區塊
c.bit值指示空閑和已使用
好處:減少資料字典表的爭用;空間分配和回收不發生undo;沒有合并需求(減少片段);
用法舉例:
CREATE TABLESPACE userdata
DATAFILE '/u01/oradata/userdata01.dbf' SIZE 500M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 256K;
[ EXTENT MANAGEMENT
[ DICTIONARY | LOCAL
[ AUTOALLOCATE | UNIFORM [SIZE integer[K|M]] ] ] ]
LOCAL和DICTIONARY 就不解釋了。
AUTOALLOCATE 指定資料表空間由系統管理,使用者不能指定區大小
UNIFORM 指定資料表空間由同一的區大小管理。使用K或M指定大小。
2)資料字典管理資料表空間
a.預設管理方法
b.空閑區被記錄在資料字典表中
CREATE TABLESPACE userdata
DATAFILE '/u01/oradata/userdata01.dbf' SIZE 500M
EXTENT MANAGEMENT DICTIONARY
DEFAULT STORAGE ( initial 1M NEXT 1M );
5.undo資料表空間
1)undo資料表空間只能用來儲存復原段
2)建立undo資料表空間只能使用DATAFILE和EXTENT MANAGEMENT語句
CREATE UNDO TABLESPACE undo1
DATAFILE '/u01/oradata/undo101.dbf' SIZE 40M;
6.temporary資料表空間
1)用來進行排序操作 SORT_AREA_SIZE(用來設定排序區的大小)
2)不能包含任何永久對象
3)推薦使用本地管理
CREATE TEMPORARY TABLESPACE temp
TEMPFILE '/u01/oradata/temp01.dbf' SIZE 500M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 10M;
4)本地管理暫存資料表空間有臨時資料檔案tempfiles:
a.臨時檔案一直是NOLOGGING模式
b.不能設定臨時檔案為唯讀read-only
c.不能重新命名一個臨時檔案
d.不能使用ALTER DATABASE命令增加臨時檔案
e.臨時檔案對於唯讀資料庫是需要的
f.介質恢複不恢複臨時檔案
g.備份控制檔案時不產生任何臨時檔案的資訊
h.建立控制檔案時不能指定任何關於臨時檔案的資訊
7.預設default暫存資料表空間
1)避免使用SYSTEM資料表空間儲存臨時資料
2)可以使用CREATE DATABASE和ALTER DATABASE語句建立
3)當使用CREATE DATABSE命令建立,預設暫存資料表空間為本地管理
預設暫存資料表空間的限制:
a.沒有指定新的預設暫存資料表空間之前不能刪除現有預設暫存資料表空間
b.不能更改預設暫存資料表空間為永久類型
c.不能修改預設暫存資料表空間為offline狀態
註:SYSTEM資料表空間、帶有活動復原段和預設暫存資料表空間不能設定為離線狀態