以oracle9i為例,可以將oracle體系結構大致分為兩個部分:
1.oracle 實例(oracle instant)
2 數據庫文件
oracle9 i instant 是指數據庫服務器的內存以及相關的處理程序
下面將對這兩個部分進行進一步說明:
--------------------------------------------------------------------------------
oracle9i instant 又包含系統全局區(SystemGlobalArea,略為sga) 和
后臺進程
--------------------------------------------------------------------------------
sga:?
?????? 是由oracle9i在啟動時,在內存中劃分的一個固定區域,用來存儲每個用戶所需存取的數據,以及oracle9i運行時所需的必要信息.
?sga可以大致分為塊緩沖區高速緩存(database buffer cache),重做日志緩沖區(redo log buffer),共享池(share pool) 以及大池(large pool) 等,下面對重要的內存區域作進一步描述:
database buffer cache: 用于存放讀取自數據文件的副本,或者用戶曾經處理過的數據.?優點:減少讀取數據庫文件的io操作,提高系統運行速度 缺點:一致占用內存.
?redo log buffer:??????? 按順序記錄用戶對數據庫的修改 優缺點與database buffer cache 相同.
?hare pool:???????????? 其中又包含兩個內存緩沖區: sql語句緩沖(Library Cache)和數據字典?緩沖??Data Dictionary?Cache?.
Library Cache:用于保存系統剛分析過的sql語句. 優點:減少系統對sql語句分析(parse)的次數,大大地提高了系統對sql語句的執行速度.?
Data dictionary Cache 用于保存oracle 數據字典.
后臺進程:
數據寫進程(dawr):負責將database buffer cache中改動過的數據塊寫到硬盤的數據文件
日志寫進程(lgwr):將redo log buffer? 中的改動寫入重做日志文件.
系統監控(smon):若oracle被不正常關閉,下次激活oracle時將會調用此進程進行必要的修復
?進程監控(pmon)?:負責在oracle啟動失敗時進行資源清理
檢查點進程(ckpt):負責更新控制文件和數據文件中的數據庫狀態信息.
歸檔進程(arch):在日志切換時把已滿的日志組進行備份或歸檔???
------------------------------------------------------------------------------
??????
?數據庫文件?
-------------------------------------------------------------------------------
?是指從物理的角度來看oracle的物理構成. 包含許多文件.?重要的有:
數據文件 重做日志文件 參數文件 控制文件 口令文件 歸檔文件
????????????????
精妙SQL語句
u?????? 復制表(只復制結構,源表名:a 新表名:b)
SQL: select * into b from a where 1<>1
u?????? 拷貝表(拷貝數據,源表名:a 目標表名:b)
SQL: insert into b(a, b, c) select d,e,f from b;