Oracle臨時表結構持久化(創建到刪除期間有效),但數據存儲於臨時表空間,僅在用戶實際插入數據時分配空間,避免與永久對象爭用儲存。分為兩類:
使用 ON COMMIT DELETE ROWS 子句創建,每次事務提交後記錄自動刪除。
CREATE GLOBAL TEMPORARY TABLE tbl_user_transcation(
ID NUMBER, uname VARCHAR2(10), usex VARCHAR2(2), ubirthday DATE
) ON COMMIT DELETE ROWS;
使用 ON COMMIT PRESERVE ROWS 子句創建,用戶斷開連接後記錄自動刪除。
CREATE GLOBAL TEMPORARY TABLE tbl_user_session(
ID NUMBER, uname VARCHAR2(10), usex VARCHAR2(2), ubirthday DATE
) ON COMMIT PRESERVE ROWS;
事務級表插入數據未COMMIT可查詢,COMMIT後數據消失;會話級表COMMIT後數據保留,斷開重連後消失。注意PL/SQL Developer默認新窗口即新Session,需設置共享Session驗證。
外部表數據存儲於作業系統文件系統,僅支援讀取操作。創建步驟:
GRANT CREATE ANY DIRECTORY TO siege;CREATE DIRECTORY external_student AS 'D:\';CREATE TABLE tbl_external_student(
sid NUMBER, sname VARCHAR2(10), sclass VARCHAR2(3),
ssubject VARCHAR2(12), sscore NUMBER
) ORGANIZATION EXTERNAL (
TYPE oracle_loader
DEFAULT DIRECTORY external_student
ACCESS PARAMETERS(FIELDS TERMINATED BY ',')
LOCATION ('student.csv')
);
查詢結果與CSV文件內容一致(如:10001,siege,304,physics,80)。
大型數據庫應用面對TB級數據,分區技術將表或索引分隔為獨立可管理的小部分。分區表執行DML語句與普通表無異,Oracle根據分區鍵值自動路由數據至對應分區。分區鍵可為單欄或組合欄,創建時決定。分區是資訊生命週期管理主要手段,有效應對數據增長帶來的儲存挑戰。