Oracle資料庫進程概述:
Database buffer cache主要用於儲存資料檔案中的資料區塊
資料庫快取的資料區塊是快取與資料檔案進行資訊交換的基本單位。在Oracle資料庫8i以前,資料區塊大小隻有一種,而Oracle資料庫9i以後支援2K,4K,8KB,16KB及32KB五種。
用命令SQL>SHOW PARAMETER DB可以顯示當前資料庫的BUFFER CACHE
資料庫緩衝和特點如下:
<1>.根據最近最少使用LRU.
<2>. 由DB_BLOCK_SIZE來指定大小.
<3>.ORACLE使用時是以塊大小為單位進行資料存取的.
還包含以下一些獨立的子緩衝:
<1>.DB_CACHE_SIZE.
<2>.DB_KEEP_CACHE_SIZE.
<3>.DB_RECYCLE_CACHE_SIZE.
注:可以用Alter system set db_cache_advice=on;設定成根據系統的建議來指定大小。
REDO LOG FILE主要是用於重做日誌
用命令SQL>SHOW PARAMETER LOG_BUFFER。
SQL>ALTER SYSTEM SET LOG_BUFFER_SIZE=60M。
用來顯示或修改重做日誌緩衝區的一些資訊。
命令SQL>achive log list 可以查看資料庫當前的歸檔模式。
LARGE POOL:
與JAVA POOL一樣,都是作為系統可選的記憶體結構,由SGA來配置。
JAVA POOL:
當安裝或使用JAVA時才用到.
ORACLE記憶體進程包括兩個,一個是SGA,一個是PGA.
(1).SGA在ORACLE執行個體啟動時分配,是ORACLE執行個體的一個基本組件.
(2).PGA是在當伺服器處理序啟動時分配的.
進程結構:
<1>.USER PROCESS.用於使用者與ORACLE SERVER互動的進程.
USER PROCESS必須與ORACLE建立串連後才可使用,不可與ORACLE SERVER互動.
<2>.SERVER PROCESS.
SERVER PROCESS在使用者與服務之間建立串連後,為執行使用者命令的一個進程.
<3>.BACKGROUND PROCESS.
後台進程:DATABASE WRITER (DBWn)用來把DATA BUFFER CACHE中的髒資料寫回到資料庫中.
(注:髒資料是被改變的資料.)
在以下情況下它會寫資料庫:
<1>.在發生CHECKPOINT同步.
<2>.髒資料達到閥值.
<3>.DATABASE BUFFER CACHE 自由空間太少了.
<4>.TIMEOUT (3秒鐘.)
<5>.RAC PING REQUEST.
<6>.TABLESPACE OFFLINE.
<7>.TABLESPACE READONLY.
<8>.TABLE DROP OR TABLE TRUNCATE (表資料清空或表結構刪除).
<9>.TABLESPACE BEGIN BACKUP.
由SGA (包含DATABASE BUFFER CACHE,BACKGROUND PROCESS)-----> [ DBWn ]----> {data files,
control files, redo log file} ---->由此過程改變資料庫中的資料.
LOG WRITER (LGWR) 日誌寫進程
在Oracle環境中
<1>.當COMMIT的時候.
<2>.當三分之一空間滿時.
<3>.當日誌有1MB需要重做時.
<4>.每3秒
<5>.BEFORE DBWn WRITES.(寫資料前先寫日誌).
REDO LOG BUFFER----->LGWR--->DBWn
|--------------------------------------> REDO LOG FILES
SYSTEM MONITOR (SMON)系統監控進程
主要任務:
(1).啟動過程(假定DATABASE重啟時)如果需要RECOVERY,則此進程會負責開啟資料庫,及復原沒有
提交的事務;以及rolls forward changes in the redo logs..這些統稱為:instance recovery.
(2).對每3秒就對系統自由空間的整理.(COALESCES FREE SPACE EVER 3 SEC.)
(3).清空臨時段空間(DEALLOCATES TEMPORARY SEGMENTS).
這個過程也是在系統啟動過程中完成的.
PROCESS MONITOR (PMON) 進程監控進程
主要用於復原異常終止的或被使用者強制終止的事務.
<1>.rolling back the transaction.
<2>.releasing locks.釋放鎖.
<3>.releasing other resources.
<4>.restarts dead dispatchers.重啟死掉的調度器.(在共用伺服器中用).
PMON (:Include in SGA)----------------------->PGA
CHECKPOINT (CKPT) 檢查點進程
用來在資料庫裡實現同步,實現之前會強制將髒資料從內在裡寫到物理檔案裡.
<1>.會啟動DBWn來寫髒資料(SIGNALLING DBWn at CKPT.)
<2>.完後會更新DATAFILE的HEADER和控制檔案的HEADER.而HEADER中有同步所需要的資訊,即
CHECKPOINT的資訊.
<3>.在ORACLE中,正常情況下,所有檔案必須同期性地同步;靠CHECKPOINT來完成.
CKPT(作為後台進程包含在執行個體中)------------------DATABASE
(data files,control files,redo log files.)
| |______DBWn
|________LGWR
Archive PROCESS (ARCn) :歸檔進程(可選進程),當設定歸檔模式後,可用來自動備份線上日誌,(歸檔日誌是重做日誌的備份.)
<1>.Automatically archives online redo logs when archiverlog mode is set.
(設定歸檔模式後,將自動備份線上日誌)
在處理SQL語句時,注意以下過程:
<1>.用以下進程串連到執行個體.
------------------使用者進程(USER PROCESS).
------------------伺服器處理序(SERVER PROCESS).
<2>.Oracle伺服器處理序組件的使用依賴於SQL語句的種類.
[1].查詢語句會返回行.
[2].DML語句會記錄這種改變.
[3].COMMIT保證了事務的RECOVERY.
<3>.並不是所有的SQL語句中所有的後台進程都會參與.
結論:
Oracle Server. Oracle伺服器處理序包含一些檔案,進程和記憶體,在執行一條SQL語句時,並非所有這些都會用上,有些進程用於提高資料庫的效能;一些用於當發生軟體或硬體異常時恢複資料庫;或應用於完成其他一些維護資料庫的任務.ORACLE伺服器包含ORACLE執行個體和ORACLE資料庫.
Oracle Instance: Oracle執行個體是用於聯絡後台進程和內在之間的活動,對資料庫進行資料存取前必須先啟動執行個體,每當執行個體啟動時,SGA就被分配給它並啟動了一些後台進程.後台進程執行10秒操作並監控有些進程以提供更好的效能.和可靠性.
Oracle Database: 資料庫包含了系統檔案,也稱資料庫檔案,其提供了用以儲存資料庫資訊的實際實體儲存體地區,用資料檔案保證了資料一致性,並在當執行個體發生失敗時恢複資料庫。
>>(http://www.lookxin.cn) URL(http://www.lookxin.cn/html/2009-10/6490.html)