文章目錄
- SGA(System Global Areas)
- PGA(Program Global Areas)
- Background Process
執行個體與資料庫
Oracle Server = Oralce Instance + Oracle Databse
DBMS(Data Base Management System)資料庫管理系統,顧名思義是一個管理資料的系統,那麼首先得有資料,然後管理就是通過Instance(執行個體)來體現,執行個體就是一些記憶體結構和後台進程,其實簡單的說就是一個在啟動並執行程式,程式在作業系統上運行時會產生一個個的進程. 資料(database)其實就是作業系統中一個個檔案,和平時我們接觸的txt,word檔案沒啥大區別.當初沒資料庫的時候資料就是儲存在像txt這樣的檔案中,然後是直接去手工編輯或通過一些應用程式去編輯.但普通檔案有資料冗餘,不一致,安全性等問題.
Oracle 記憶體結構
Oracle Instance(執行個體)就是一些記憶體結構:Oracle Instance = SGA + Background Process
如果沒有使用者串連Server,可以認為Server的記憶體結構就是Oracle Instance了.不過當有使用者串連Server時會單獨分配一些記憶體PGA.
Oracle 記憶體結構 = SGA + PGA + Background Process
= Oracle Instance + PGA
SGA(System Global Areas)
SGA = Database buffer cache + Redo log buffer cache + Shared pool + Java pool + Large pool
SGA大小由參數SGA_MAX_SIZE決定,可用show parameter sga_max_size查看大小.可用alter system set sga_max_size = 1000m scope = spfile這樣來修改大小.重啟資料庫才會生效.
PGA(Program Global Areas)
由排序區,遊標狀態區,會話資訊工,堆棧區組成.可通過參數pga_aggregate_target改變大小
Background Process
PMON
SMON
DBWR
LGWR
CKPT
Others
Oralce Database
Data files
Control files
Redo log files
除了上面三個重要的資料檔案屬於Database,另外還有幾個不屬於Database,起輔助作用的檔案 Parameter file, Password file, Achived log files.
資料檔案與資料表空間
關聯式資料庫中最重要的內容,就是一個個的表(table),那些表就是儲存在資料檔案中.這種檔案的尾碼名為dbf.可以通過select * from dba_data_files;查看他們的位置.例如在windows上c:\app\Administrator\oradata\ora11r2. 在linux上:/home/oracle/oradata/ora11r2.不過我們用的時候一般是使用資料表空間(tablespace)這樣一個邏輯結構來間接的使用資料檔案.
資料表空間和資料檔案的關係是:一個資料表空間至少包括一個資料檔案,也可以是多個.而一個資料檔案只能屬於一個資料表空間.就相當於在windows上一個檔案夾下面有很多檔案一樣.
表與資料檔案的關係:一般情況一個表就屬於一個資料檔案,但表比較大或資料檔案的空間快被用完時一個表可能會儲存在幾個資料檔案中.但一個表只會在一個資料表空間下,不會屬於幾個資料表空間.
當我們建立一個使用者時可以指定一個資料表空間,則使用者建立的表就預設儲存到那個資料表空間了,但建表時也可以明確指定把表指定到某個資料表空間.多個使用者可以共用一個資料表空間.Oracle安裝好後會預設建立一些資料檔案和資料表空間.
系統資料表空間(system tablespace)對應的資料檔案是system.dbf:有點像windows的C盤,Oracle系統資料表和資料字典就儲存在這.另外注意的是所有使用者建立的函數,儲存過程等一些對象都是儲存在系統資料表空間(可以通過select * from dba_source 查看這些資訊),只有使用者建立的表才儲存到自己指定的資料表空間中.
undo資料表空間,在做DML操作之前Oracle會把舊值複製到這資料表空間裡,當commit之後再把舊值刪除.
temp資料表空間做排序等操作時在這裡.
以上講的是系統預設建立的資料表空間,我們也可以自己建立資料表空間:create tablespace mySpace datafile 'd:\mydata' 100M; --我們還可以添加一些其他參數做更多的設定