Oracle后臺進程
?
??? 重新學習一下Oracle的后臺進程,因為感覺這塊內容還是比較重要的,就當是復習一下了。另外在后面還介紹了關于鎖、等待、跟蹤文件、進程信息、并行等一些Oracle內部相關特性的監控方法,都是對于數據庫的管理是非常有用的內容,只是粗略介紹一下,如果要仔細學習的話,每一塊內容都是一個專題。
?
?
一、基本后臺進程
?
??? 1、數據庫寫入進程(DBWn):
?
??? 數據庫寫入程序講數據庫告訴緩存區中的修改塊寫入數據文件。對于多數系統來說,一個數據庫寫入程序(DBW0)就已經足夠,但是對于有大量修改數據任務的系統來說,就需要配置額外的進程(DBW1-DBW9)來改善寫入的性能。初始化參數DB_WRITER_PROCESSES來指定DBWn的個數。
?
??? 2、日志寫入進程(LGWR):
?
??? 日志寫入進程將重做日志條目寫入磁盤中。重做日志條目在系統全局區(SGA)的重做日志緩沖區中生成,而且LGWR按順序將重做日志條目寫入聯機重做日志文件。如果有多個重做日志,則寫入到重做日志寫入聯機重做日志的某個組中。
?
??? 3、檢驗點進程(CKPT):
?
??? 在特定時期,系統全局區的所有修改過的數據都通過DBWn寫入到數據文件中,這種事件稱為檢驗點。檢驗點進程負責在檢驗點時通知DBWn,并且更新數據庫的所有數據文件和控制文件,文件中指明新的檢驗點。
?
??? 4、系統監視進程(SMON):
?
??? 當失敗的實例再次啟動時,系統監視進程執行緊急恢復操作,在RAC中一個實例的SMON可以恢復其他失敗的實例。SMON還可以清除不再使用的臨時段,以及恢復在緊急實例恢復過程中因為文件讀取或脫機錯誤遺漏的停用事務。
??? SMON進程還合并了數據庫字段管理表空間中的空閑區域,以便使用空閑空間連接,從而更容易分配空閑空間。
?
??? 5、進程監視進程(PMON):
?
??? 用戶進程失敗時,由PMON執行恢復操作。PMON負責清理緩存和進程使用的空閑資源。還檢查調度程序進程和服務器進程,并在這些進程失敗后重新啟動它們。
?
??? 6、存檔進程(ARCn):
?
??? 一個或多個存檔程序進程備份聯機重做日志文件,以便在文件中充滿日志或發生日志切換時存儲檔案。
?
??? 7、恢復進程(RECO):
?
??? 恢復程序進程用于解決分布式事務,在分布式數據庫中這些事務的懸而未決要歸咎于網絡或系統的失敗。在計時間隔內,本地RECO會視圖連接遠程數據庫并自動完成任何一個未解決的分布式事務在本地部分的提交或回滾操作。
?
??? 8、調度進程(Dnnn):
?
??? 調度進程是可以選擇的后臺進程,用于控制共享服務器。
?
??? 9、全局緩存服務(LMS):
?
??? 在RAC中用該進程管理資源并提供實例間的資源控制。
?
??? 10、作業隊列協調進程(CJQ0):
?
??? 監視JOB$表并啟動作業隊列進程(Jnnn)。當需要執行作業時,Jnnn進程講執行由DBMS_JOBS包創建的作業請求。視圖做多可以查看1000個Jnnn進程,之后自動刷新視圖的內容。
??? Jnnn進程的另一個功能是講隊列消息傳播到另一個數據庫上的隊列。注:CJQO失敗并不會引起實例失敗。
?
?
二、監視Oracle實例進程
?
??? 1、進程信息的視圖:
?
??? V$PROCESS:包含有關當前活動進程的信息;
??? V$SESSION:列出每個當前會話的會話信息;
??? V$SESS_IO:包含每個用于會話的I/O統計表;
??? V$SESSION_LONGOPS:顯示運行時間超過6秒的操作狀態;
??? V$SESSION_WAIT:列出當前會話正在等待的資源或時間;
??? V$SYSSTAT:會話統計表;
??? V$RESOURCE_LIMIT:某些系統資源當前使用的全局資源;
??? V$SQLAREA:共享SQL區域的統計表,并統計SQL字符串列一行信息;
??? V$LATCH:非父鎖存器的統計表以及父鎖存器的匯總統計表;
?
??? 2、監視鎖:
?
??? 可使用V$LOCK視圖查詢當前的鎖信息;
?
??? ...\oracle\ora92\rdbms\admin\utllockt.sql 腳本以樹形結構的形式顯示系統中正在等待封鎖的會話以及正在等待使用的鎖。
??? ...\oracle\ora92\rdbms\admin\catblock.sql 腳本用于創建utllockt.sql需要使用的鎖視圖
?
?
三、跟蹤文件 & 報警文件
?
??? 1、數據庫報警文件包括:
?
????? * 內部錯誤()、成組的損壞錯誤()、死鎖錯誤()
????? * 管理操作,如CREATE、ALTER、DROP以及STARTUP、SHUTDOWN、ARCHIVELOG等
????? * 有關共享服務器和調度程序進程函數的一些消息和錯誤
????? * 整個視圖內容刷新的過程中發生的錯誤
????? * 數據庫和實例啟動時所有的初始化參數的值
?
??? 2、跟蹤文件有關的初始化參數
?
????? BACKGROUND_DUMP_DEST:指定跟蹤文件的位置
????? USER_DUMP_DEST:指定服務器進程的所有跟蹤文件位置
????? MAX_DUMP_FILE_SIZE:控制跟蹤文件的大小
?
??? 3、控制Oracle寫入跟蹤文件的過程
?
????? 指定當前會話使用SQL跟蹤工具
????? ALTER SESSION SET SQL_TRACE TRUE;
?
????? 注:進程使用SQL跟蹤工具引起系統顯著架空,對性能造成嚴重影響,所以只在收集統計表時使用。
?
?
四、管理SQL語句的并行處理
?
??? 1、SQL語句并行程度:
?
????? * 語句中的PARALLEL字句
????? * 對于查詢中引用對象,在創建或更改對象過程中使用的PARALLEL字句
????? * 插入語句中的并行提示
????? * Oracle確定的默認值
?
??? 2、管理并行執行服務器
?
????? 設置一下參數值,使得可以使用并行執行協調器進程處理并行SQL
????? PARALLEL_AUTOMATIC_TUNING = TRUE
?
??? 3、停用/啟用并行
?
????? ALTER SESSION DISABLE/ENABLE PAPALLEL DML|DDL|QUERY;
?
????? DML:INSERT、UPDATE、DELETE
????? DDL:CREATE、ALTER
????? QUERY:SELECT
?
??? 4、強制設置并行度
?
????? ALTER SESSION FORCE PARALLEL DDL PARALLEL 5;
?
?
?