ORACLE开发:创建与管理表空间和数据文件1
Oracle在邏輯上以表空間存儲數據,而實際上是以數據文件存儲數據。
表空間和數據文件
表空間:某一時刻只屬于一個數據庫;由一個或多個數據文件組成;可近一步劃分邏輯存儲單元
數據文件:只能屬于一個表空間和一個數據庫
表空間類型
system表空間:
– 隨數據庫創建
– 包含數據字典
– 包含 SYSTEM 還原段
? 非SYSTEM表空間:
– 用于分開存儲段
– 易于空間管理
– 控制分配給用戶的空間量
創建表空間
創建表空間的命令:create tablespace
CREATE TABLESPACE tablespace
[DATAFILE clause]
[MINIMUM EXTENT integer[K|M]]
[BLOCKSIZE integer [K]]
[LOGGING|NOLOGGING]
[DEFAULT storage_clause ]
[ONLINE|OFFLINE]
[PERMANENT|TEMPORARY]
[extent_management_clause]
[segment_management_clause]
其中:
Tablespace:是要創建的表空間的名稱
DATAFILE:指定組成表空間的一個或多個數據文件
MINIMUM EXTENT:確保表空間內每個占用區的大小是整數 (integer) 的倍數。使用 K 或M以千字節或兆字節為單位指定該大小。
BLOCKSIZE:BLOCKSIZE 指定表空間的非標準塊大小。要指定該子句,必須具有DB_CACHE_SIZE,并至少設置一個 DB_nK_CACHE_SIZE參數,在該 子句中指定的整數(integer) 必須與一個DB_nK_CACHE_SIZE 參數設置相對應。
LOGGING:指定在缺省情況下,表空間內的所有表、索引和分區的所有更改都寫入重做日志文件。LOGGING為缺省設置。
NOLOGGING:指定在缺省情況下,表空間內的所有表、索引和分區的所有更改都不寫入重做日志文件。
NOLOGGING只影響某些DML 和DDL 命令,如直接加載。
DEFAULT:DEFAULT指定表空間內創建的所有對象的缺省存儲參數。
OFFLINE:指定表空間從創建后就不可用。
PERMANENT:指定表空間可用于保留永久對象。
TEMPORARY:指定表空間僅用于保留臨時對象,如:由 ORDER BY子句引起的隱式排序所使用的段。不能指定 EXTENT MANAGEMENT LOCAL BLOCKSIZE 子句。
extent_management_clause:該子句指定如何管理表空間內的區。
segment_management_clause:這只與永久的、且在本地管理的表空間相關。通過它可指定Oracle 是否應使用空閑列表或位圖來跟蹤表空間段中的已占用空間和空閑空間 ? ? ? ? ?
datafile_clause:== filename [SIZE integer[K|M] [REUSE] [ autoextend_clause ]
filename:是表空間中的數據文件的名稱。
SIZE:指定文件大小。使用K 或 M 以千字節或兆字節為單位指定大小。
REUSE:允許 Oracle 服務器重新使用現有文件。
autoextend_clause:該子句啟用或禁用數據文件的自動擴展。
NEXT:以字節為單位指定在需要更多區時自動分配的磁盤空間下一增量的大小
其中:
MAXSIZE:指定數據文件可以自動擴展到的最大磁盤空間。
UNLIMITED:指定可分配給數據文件或Tempfile 的磁盤空間是不受限制的。? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
驗證上述參數,示例如下:
SQL> CREATE TABLESPACE userdata DATAFILE '/disk4/ora10/oradata/ora1/userdata01.dbf' SIZE 20M
2 AUTOEXTEND ON NEXT 500K MAXSIZE 100M
3 LOGGING ONLINE
4 EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128K;
Tablespace created.
表空間的空間管理
表空間以區(extent)為單位分配空間。可使用以下兩種不同方法來跟蹤創建的表空間中的空閑空間和已占用空間
本地管理的表空間:在表空間內通過位圖管理區。位圖中的每個位對應于一個塊或一組塊。分配了某個區或釋放了某個區可重新使用時,Oracle 服務器更改位 圖值以顯示塊的新狀態。從 Oracle9i 開始,在本地管理已成為缺省設置。
字典管理的表空間:由數據字典管理區。Oracle 服務器將在分配或回收區時更新數據字典中對應的表。
本地管理的表空間:減少了對數據字典表的爭用;分配或回收空間時不生成還原數據
示例:
CREATE TABLESPACE userdata
DATAFILE '/u01/oradata/userdata01.dbf' SIZE 500M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128K;
EXTENT MANAGEMENT 子句的 LOCAL 選項指定表空間在本地管理。缺省情況下,表空間在本地管理。
extent_management_clause:
[ EXTENT MANAGEMENT [ DICTIONARY | LOCAL
[ AUTOALLOCATE | UNIFORM [SIZE integer[K|M]] ] ] ]
其中:
DICTIONARY:指定使用字典表來管理表空間。
LOCAL:指定在本地通過位圖管理表空間。如果指定了LOCAL,則不能再指定 DEFAULT
storage_clause、MINIMUM EXTENT或 TEMPORARY。
AUTOALLOCATE:指定表空間由系統管理。用戶無法指定區大小。這是缺省設置。
UNIFORM:指定按照大小統一為 SIZE 字節數的各個區來管理表空間。使用K 或 M 以千字節或兆字節來指定區大小。缺省大小為 1 MB
在本地管理表空間的優點:
1.本地管理的表空間相對于字典管理的表空間有如下優點:
2.本地管理可以避免循環空間管理操作,但是這種操作在字典管理的表空間中卻有可能發生。一旦消耗或釋放某個區的空間會
3.產生另一個消耗或釋放操作(消耗或釋放還原段或數據字典表內的空間)時,它就會發生。
4.由于本地管理的表空間在數據字典表中不記錄空閑空間,從而減少了對這些表的爭用。
5.區的本地管理可自動跟蹤鄰近的空閑空間,因而無須合并空閑區。
6.本地管理的區大小可由系統自動確定。
7.對區的位圖進行更改不會生成還原信息,因為它們不更新數據字典中的表(表空間限額信息等特殊情況除外)。
總結
以上是生活随笔為你收集整理的ORACLE开发:创建与管理表空间和数据文件1的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Silverlight BUG
- 下一篇: 防止P2P终结者的方法