oracle表空间于表数据啥意思,初识Oracle表空间与数据文件
初識Oracle表空間與數據文件,描述oracle數據庫的邏輯結構,創建表空間,改變表空間大小,為臨時段分配空間,改變表空間狀態,改
學習目標
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表空間、帶有活動回滾段和默認臨時表空間不能設置為離線狀態
本文原創發布php中文網,轉載請注明出處,感謝您的尊重!
總結
以上是生活随笔為你收集整理的oracle表空间于表数据啥意思,初识Oracle表空间与数据文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php unserialize 实例,P
- 下一篇: php odbc连接sqlserver,