Oracle數(shù)據(jù)庫進(jìn)程之后臺(tái)進(jìn)程詳解
上次我們介紹了:Oracle數(shù)據(jù)庫進(jìn)程之服務(wù)器進(jìn)程詳解,本文我們主要介紹一下Oracle數(shù)據(jù)庫的后臺(tái)進(jìn)程的相關(guān)知識(shí),我們知道,Oracle實(shí)例包括兩部分:SGA 和一組后臺(tái)進(jìn)程。后臺(tái)進(jìn)程執(zhí)行保證數(shù)據(jù)庫運(yùn)行所需的實(shí)際維護(hù)任務(wù)。
例如,有一個(gè)進(jìn)程為我們維護(hù)塊緩沖區(qū)緩存,根據(jù)需要將塊寫出到數(shù)據(jù)文件。另一個(gè)進(jìn)程負(fù)責(zé)當(dāng)在線重做日志文件寫滿時(shí)將它復(fù)制到一個(gè)歸檔目標(biāo)。另外還有一個(gè)進(jìn)程負(fù)責(zé)在異常中止進(jìn)程后完成清理,等等。每個(gè)進(jìn)程都專注于自己的任務(wù),但是會(huì)與所有其他進(jìn)程協(xié)同工作。例如,負(fù)責(zé)寫日志文件的進(jìn)程填滿一個(gè)日志后轉(zhuǎn)向下一個(gè)日志時(shí),它會(huì)通知負(fù)責(zé)對(duì)填滿的日志文件進(jìn)行歸檔的進(jìn)程,告訴它有活干了。
可以使用一個(gè)V$視圖查看所有可能的Oracle 后臺(tái)進(jìn)程,確定你的系統(tǒng)中正在使用哪些后臺(tái)進(jìn)程:
- SQL> select paddr, name, descriptionfrom v$bgprocess order by paddr desc;
- PADDR NAME DESCRIPTION
- -------- ---------------------------------------------------------------------
- 3621D49C QMNC AQ Coordinator
- 3621CEE8 ARC2 Archival Process 2
- 3621C934 ARC1 Archival Process 1
- 3621C380 ARC0 Archival Process 0
- 3621A148 MMNL Manageability Monitor Process 2
- 36219B94 MMON Manageability Monitor Process
- 362195E0 CJQ0 Job Queue Coordinator
- 3621902C RECO distributed recovery
- 36218A78 SMON System Monitor Process
- 362184C4 CKPT checkpoint
- 36217F10 LGWR Redo etc.
- PADDR NAME DESCRIPTION
- -------- ---------------------------------------------------------------------
- 3621795C DBW0 db writer process 0
- 362173A8 MMAN Memory Manager
- 36216DF4 PSP0 process spawner 0
- 36216840 PMON process cleanup
- 00 DIAG diagnosibility process
- 00 FMON File Mapping Monitor Process
- 00 LMON global enqueue servicemonitor
- 00 LMD0 global enqueue servicedaemon 0
- .....
- 00 ASMB ASM Background
- 00 GMON diskgroup monitor
- 157 rows selected.
注意:這個(gè)視圖中PADDR 不是00 的行都是系統(tǒng)上配置和運(yùn)行的進(jìn)程(線程)。有兩類后臺(tái)進(jìn)程:有一個(gè)中心(focused)任務(wù)的進(jìn)程(如前所述)和完成各種其他任務(wù)的進(jìn)程(即工具進(jìn)程)。
例如,內(nèi)部作業(yè)隊(duì)列( jobqueue)有一個(gè)工具后臺(tái)進(jìn)程,可以通過DBMS_JOB 包使用它。這個(gè)進(jìn)程會(huì)監(jiān)視作業(yè)隊(duì)列,并運(yùn)行其中的作業(yè)。在很多方面,這就像一個(gè)專用服務(wù)器進(jìn)程,但是沒有客戶連接。
下面會(huì)分析各種后臺(tái)進(jìn)程,先來看有中心任務(wù)的進(jìn)程,然后再介紹工具進(jìn)程。
中心后臺(tái)進(jìn)程
圖5-4 展示了有一個(gè)中心(focused)用途的Oracle 后臺(tái)進(jìn)程。
啟動(dòng)實(shí)例時(shí)也許不會(huì)看到所有這些進(jìn)程,但是其中一些主要的進(jìn)程肯定存在。如果在ARCHIVELOG 模式下,你可能只會(huì)看到ARCn(歸檔進(jìn)程),并啟用自動(dòng)歸檔。如果運(yùn)行了Oracle RAC,這種Oracle 配置允許一個(gè)集群中不同機(jī)器上的多個(gè)實(shí)例裝載并打開相同的物理數(shù)據(jù)庫,就只會(huì)看到LMD0、LCKn、LMON 和LMSn。
意為簡潔起見,圖5-4 中沒有畫出共享服務(wù)器調(diào)度器(Dnnn)和共享服務(wù)器(Snnn)進(jìn)程。因此,圖5-4 大致展示了啟動(dòng)Oracle 實(shí)例并裝載和打開一個(gè)數(shù)據(jù)庫時(shí)可能看到哪些進(jìn)程。例如,在我的Linux 系統(tǒng)上,啟動(dòng)實(shí)例后,有以下進(jìn)程:
- [oracle@db1 ~]$ ps -ef|grep 'ora_.*_dave*'
- oracle 4123 1 0 20:13 ? 00:00:05 ora_pmon_dave1
- oracle 4125 1 0 20:13 ? 00:00:05 ora_psp0_dave1
- oracle 4127 1 0 20:13 ? 00:00:02 ora_mman_dave1
- oracle 4129 1 0 20:13 ? 00:00:05 ora_dbw0_dave1
- oracle 4131 1 0 20:13 ? 00:00:21 ora_lgwr_dave1
- oracle 4133 1 0 20:13 ? 00:00:13 ora_ckpt_dave1
- oracle 4135 1 1 20:13 ? 00:01:12 ora_smon_dave1
- oracle 4137 1 0 20:13 ? 00:00:04 ora_reco_dave1
- oracle 4139 1 0 20:13 ? 00:00:16 ora_cjq0_dave1
- oracle 4141 1 1 20:13 ? 00:01:33 ora_mmon_dave1
- oracle 4143 1 0 20:13 ? 00:00:08 ora_mmnl_dave1
- oracle 4145 1 0 20:13 ? 00:00:00 ora_d000_dave1
- oracle 4147 1 0 20:13 ? 00:00:00 ora_s000_dave1
- oracle 4156 1 0 20:13 ? 00:00:01 ora_arc0_dave1
- oracle 4158 1 0 20:13 ? 00:00:05 ora_arc1_dave1
- oracle 4163 1 0 20:14 ? 00:00:03 ora_qmnc_dave1
- oracle 4167 1 0 20:15 ? 00:00:24 ora_q000_dave1
- oracle 4169 1 020:15 ? 00:00:00 ora_q001_dave1
- oracle 5109 1 1 21:48 ? 00:00:00 ora_j000_dave1
- oracle 5141 5111 0 21:49 pts/4 00:00:00 grep ora_.*_dave2*
這些進(jìn)程命名規(guī)則:進(jìn)程名都以ora_開頭。后面是4 個(gè)字符,表示進(jìn)程的具體名字,再后面是ORACLE_SID,(站點(diǎn)標(biāo)識(shí)符)。
在UNIX 上,可以很容易地標(biāo)識(shí)出Oracle后臺(tái)進(jìn)程,并將其與一個(gè)特定的實(shí)例關(guān)聯(lián)(在Windows 上則沒有這么容易,因?yàn)樵赪indows 上這些后臺(tái)進(jìn)程實(shí)際上只是一個(gè)更大進(jìn)程中的線程)。
這些進(jìn)程實(shí)際上都是同一個(gè)二進(jìn)制可執(zhí)行程序,對(duì)于每個(gè)“程序”,并沒有一個(gè)單獨(dú)的可執(zhí)行文件。你可以盡可能地查找一下,但是不論在磁盤的哪個(gè)位置上肯定都找不到一個(gè)arc0 二進(jìn)制可執(zhí)行程序,同樣也找不到LGWR或DBW0。這些進(jìn)程實(shí)際上都是oracle(也就是所運(yùn)行的二進(jìn)制可執(zhí)行程序的名字)。它們只是在啟動(dòng)時(shí)對(duì)自己建立別名,以便更容易地標(biāo)識(shí)各個(gè)進(jìn)程。這樣就能在UNIX 平臺(tái)上高效地共享大量對(duì)象代碼。Windows上就沒有什么特別的了,因?yàn)樗鼈冎皇沁M(jìn)程中的線程,因此,當(dāng)然只是一個(gè)大的二進(jìn)制文件。
自動(dòng)存儲(chǔ)管理后臺(tái)(Automatic Storage Management Background,ASMB)進(jìn)程:ASMB 進(jìn)程在使用了ASM 的數(shù)據(jù)庫實(shí)例中運(yùn)行。它負(fù)責(zé)與管理存儲(chǔ)的ASM 實(shí)例通信、向ASM 實(shí)例提供更新的統(tǒng)計(jì)信息,并向ASM 實(shí)例提供一個(gè)“心跳”,讓ASM 實(shí)例知道它還活著,而且仍在運(yùn)行。
重新平衡(Rebalance,RBAL)進(jìn)程:RBAL 進(jìn)程也在使用了ASM 的數(shù)據(jù)庫實(shí)例中運(yùn)行。向ASM磁盤組增加或去除磁盤時(shí),RBAL 進(jìn)程負(fù)責(zé)處理重新平衡請(qǐng)求(即重新分布負(fù)載的請(qǐng)求)。
以下進(jìn)程出現(xiàn)在Oracle RAC 實(shí)例中。RAC 是一種Oracle 配置,即集群中的多個(gè)實(shí)例可以裝載和打開一個(gè)數(shù)據(jù)庫,其中每個(gè)實(shí)例在一個(gè)單獨(dú)的節(jié)點(diǎn)上運(yùn)行(通常節(jié)點(diǎn)是一個(gè)單獨(dú)的物理計(jì)算機(jī))。這樣,你就能有多個(gè)實(shí)例訪問(以一種全讀寫方式)同樣的一組數(shù)據(jù)庫文件。
RAC 的主要目標(biāo)有兩個(gè):
高度可用性:利用Oracle RAC,如果集群中的一個(gè)節(jié)點(diǎn)/計(jì)算機(jī)由于軟件、硬件或人為錯(cuò)誤而失敗,其他節(jié)點(diǎn)可以繼續(xù)工作,還可以通過其他節(jié)點(diǎn)訪問數(shù)據(jù)庫。你也許會(huì)喪失一些計(jì)算能力,但是不會(huì)因此而無法訪問數(shù)據(jù)庫。
可擴(kuò)縮性:無需購買更大的機(jī)器來處理越來越大的工作負(fù)載(這稱為垂直擴(kuò)縮),RAC 允許以另一種方式增加資源,即在集群中增加更多的機(jī)器(稱為水平擴(kuò)縮)。舉例來說,不必把你的4 CPU 機(jī)器擴(kuò)縮為有8 個(gè)或16 個(gè)CPU,通過利用RAC,你可以選擇增加另外一個(gè)相對(duì)廉價(jià)的4 CPU機(jī)器(或多臺(tái)這樣的機(jī)器)。
以下進(jìn)程是RAC 環(huán)境所特有的:
鎖監(jiān)視器(Lockmonitor,LMON)進(jìn)程:LMON 監(jiān)視集群中的所有實(shí)例,檢測是否有實(shí)例失敗。這有利于恢復(fù)失敗實(shí)例持有的全局鎖。它還負(fù)責(zé)在實(shí)例離開或加入集群時(shí)重新配置鎖和其他資源(實(shí)例失敗時(shí)會(huì)離開集群,恢復(fù)為在線時(shí)又會(huì)加入集群,或者可能有新實(shí)例實(shí)時(shí)地增加到集群中)。
鎖管理器守護(hù)(Lockmanager daemon,LMD)進(jìn)程:LMD 進(jìn)程為全局緩存服務(wù)(保持塊緩沖區(qū)在實(shí)例間一致)處理鎖管理器服務(wù)請(qǐng)求。它主要作為代理(broker)向一個(gè)隊(duì)列發(fā)出資源請(qǐng)求,這個(gè)隊(duì)列由LMSn 進(jìn)程處理。LMD 會(huì)處理全局死鎖的檢測/解析,并監(jiān)視全局環(huán)境中的鎖超時(shí)。
鎖管理器服務(wù)器(Lockmanager server,LMSn)進(jìn)程:前面已經(jīng)提到,在一個(gè)RAC 環(huán)境中,各個(gè)Oracle 實(shí)例在集群中的不同機(jī)器上運(yùn)行,它們都以一種讀寫方式訪問同樣的一組數(shù)據(jù)庫文件。為了達(dá)到這個(gè)目的,SGA 塊緩沖區(qū)緩存相互之間必須保持一致。這也是LMSn 進(jìn)程的主要目標(biāo)之一。在以前版本的Oracle 并行服務(wù)器(Oracle Parallel Server,OPS)中,這是通過ping實(shí)現(xiàn)的。也就是說,如果集群中的一個(gè)節(jié)點(diǎn)需要塊的一個(gè)讀一致視圖,而這個(gè)塊以一種獨(dú)占模式被另一個(gè)節(jié)點(diǎn)鎖定,數(shù)據(jù)的交換就要通過磁盤刷新輸出來完成(塊被ping)。如果本來只是要讀取數(shù)據(jù),這個(gè)操作(ping)的代價(jià)就太昂貴了。現(xiàn)在則不同,利用LMSn,可以在集群的高速連接上通過非??焖俚木彺娴骄彺娼粨Q來完成數(shù)據(jù)交換。每個(gè)實(shí)例可以有多達(dá)10 個(gè)LMSn 進(jìn)程。
鎖(Lock,LCK0)進(jìn)程:這個(gè)進(jìn)程的功能與前面所述的LMD 進(jìn)程非常相似,但是它處理所有全局資源的請(qǐng)求,而不只是數(shù)據(jù)庫塊緩沖區(qū)的請(qǐng)求。
可診斷性守護(hù)(Diagnosabilitydaemon,DIAG)進(jìn)程:DIAG 只能用于RAC 環(huán)境中。它負(fù)責(zé)監(jiān)視實(shí)例的總體“健康情況”,并捕獲處理實(shí)例失敗時(shí)所需的信息。
工具后臺(tái)進(jìn)程
這些后臺(tái)進(jìn)程全都是可選的,可以根據(jù)你的需要來選用。它們提供了一些工具,不過這些工具并不是每天運(yùn)行數(shù)據(jù)庫所必需的,除非你自己要使用(如作業(yè)隊(duì)列),或者你要利用使用了這些工具的特性(如新增的Oracle 10g 診斷功能)。
在UNIX 中,這些進(jìn)程可以像其他后臺(tái)進(jìn)程一樣可見,如果你執(zhí)行ps 命令,就能看到這些進(jìn)程。
- [oracle@db1 ~]$ ps -ef|grep 'ora_.*_dave*'
- oracle 4123 1 0 20:13 ? 00:00:05 ora_pmon_dave1
- oracle 4125 1 0 20:13 ? 00:00:05 ora_psp0_dave1
- oracle 4127 1 0 20:13 ? 00:00:02 ora_mman_dave1
- oracle 4129 1 0 20:13 ? 00:00:05 ora_dbw0_dave1
- oracle 4131 1 0 20:13 ? 00:00:21 ora_lgwr_dave1
- oracle 4133 1 0 20:13 ? 00:00:13 ora_ckpt_dave1
- oracle 4135 1 1 20:13 ? 00:01:12 ora_smon_dave1
- oracle 4137 1 0 20:13 ? 00:00:04 ora_reco_dave1
- oracle 4139 1 0 20:13 ? 00:00:16 ora_cjq0_dave1
- oracle 4141 1 1 20:13 ? 00:01:33 ora_mmon_dave1
- oracle 4143 1 0 20:13 ? 00:00:08 ora_mmnl_dave1
- oracle 4145 1 0 20:13 ? 00:00:00 ora_d000_dave1
- oracle 4147 1 0 20:13 ? 00:00:00 ora_s000_dave1
- oracle 4156 1 0 20:13 ? 00:00:01 ora_arc0_dave1
- oracle 4158 1 0 20:13 ? 00:00:05 ora_arc1_dave1
- oracle 4163 1 0 20:14 ? 00:00:03 ora_qmnc_dave1
- oracle 4167 1 0 20:15 ? 00:00:24 ora_q000_dave1
- oracle 4169 1 020:15 ? 00:00:00 ora_q001_dave1
- oracle 5109 1 1 21:48 ? 00:00:00 ora_j000_dave1
- oracle 5141 5111 0 21:49 pts/4 00:00:00 grep ora_.*_dave*
CJQ0 和Jnnn 進(jìn)程:作業(yè)隊(duì)列
在第一個(gè)7.0 版本中,Oracle 通過一種稱為快照(snapshot)的數(shù)據(jù)庫對(duì)象來提供復(fù)制特性。作業(yè)隊(duì)列就是刷新快照(或?qū)⒖煺罩脼楫?dāng)前快照)時(shí)使用的內(nèi)部機(jī)制。
作業(yè)隊(duì)列進(jìn)程監(jiān)視一個(gè)作業(yè)表,這個(gè)作業(yè)表告訴它何時(shí)需要刷新系統(tǒng)中的各個(gè)快照。在Oracle 7.1中,Oracle 公司通過一個(gè)名為DBMS_JOB 的數(shù)據(jù)庫包來提供這個(gè)功能。所以,原先7.0 中與快照相關(guān)的進(jìn)程到了7.1及以后版本中變成了“作業(yè)隊(duì)列”。后來,控制作業(yè)隊(duì)列行為的參數(shù)(檢查的頻度,以及應(yīng)該有
多少個(gè)隊(duì)列進(jìn)程)的名字也發(fā)生了變化,從SNAPSHOT_REFRESH_INTERVAL 和SNAPSHOT_REFRESH_PROCESSES變成了JOB_QUEUE_INTERVAL 和JOB_QUEUE_PROCESSES。在當(dāng)前的版本中,只有JOB_QUEUE_PROCESSES 參數(shù)的設(shè)置是用戶可調(diào)的。
最多可以有1000 個(gè)作業(yè)隊(duì)列進(jìn)程。名字分別是J000,J001,…,J999。這些進(jìn)程在復(fù)制中大量使用,并作為物化視圖刷新進(jìn)程的一部分。基于流的復(fù)制(Oracle9iRelease 2 中新增的特性)使用AQ 來完成復(fù)制,因此不使用作業(yè)隊(duì)列進(jìn)程。
開發(fā)人員還經(jīng)常使用作業(yè)隊(duì)列來調(diào)度一次性(后臺(tái))作業(yè)或反復(fù)出現(xiàn)的作業(yè),例如,在后臺(tái)發(fā)送一封電子郵件,或者在后臺(tái)完成一個(gè)長時(shí)間運(yùn)行的批處理。通過在后臺(tái)做這些工作,就能達(dá)到這樣一種效果:盡管一個(gè)任務(wù)耗時(shí)很長,但在性急的最終用戶看來所花費(fèi)的時(shí)間并不多(他會(huì)認(rèn)為任務(wù)運(yùn)行得快多了,但事實(shí)上可能并非如此)。這與Oracle 用LGWR 和DBWn 進(jìn)程所做的工作類似,他們?cè)诤笈_(tái)做大量工作,所以你不必實(shí)時(shí)地等待它們完成所有任務(wù)。
Jnnn 進(jìn)程與共享服務(wù)器很相似,但是也有專用服務(wù)器中的某些方面。它們處理完一個(gè)作業(yè)之后再處理下一個(gè)作業(yè),從這個(gè)意義上講是共享的,但是它們管理內(nèi)存的方式更像是一個(gè)專用服務(wù)器(其UGA 內(nèi)存在PGA 中,而不是在SGA 中)。每個(gè)作業(yè)隊(duì)列進(jìn)程一次只運(yùn)行一個(gè)作業(yè),一個(gè)接一個(gè)地運(yùn)行,直至完成。正因?yàn)槿绱?,如果我們想同時(shí)運(yùn)行多個(gè)作業(yè),就需要多個(gè)進(jìn)程。這里不存在多線程或作業(yè)的搶占。一旦運(yùn)行一個(gè)作業(yè),就會(huì)一直運(yùn)行到完成(或失?。?。
你會(huì)注意到,經(jīng)過一段時(shí)間,Jnnn 進(jìn)程會(huì)不斷地來來去去,也就是說,如果配置了最多1 000 個(gè)Jnnn進(jìn)程,并不會(huì)看到真的有1 000 個(gè)進(jìn)程隨數(shù)據(jù)庫啟動(dòng)。相反,開始時(shí)只會(huì)啟動(dòng)一個(gè)進(jìn)程,即作業(yè)隊(duì)列協(xié)調(diào)器(CJQ0),它在作業(yè)隊(duì)列表中看到需要運(yùn)行的作業(yè)時(shí),會(huì)啟動(dòng)Jnnn 進(jìn)程。如果Jnnn 進(jìn)程完成其工作,并發(fā)現(xiàn)沒有要處理的新作業(yè),此時(shí)Jnnn 進(jìn)程就會(huì)退出,也就是說,會(huì)消失。因此,如果將大多數(shù)作業(yè)都調(diào)度為在凌晨2:00運(yùn)行(沒有人在場),你可能永遠(yuǎn)也看不到這些Jnnn 進(jìn)程。
QMNC 和Qnnn:高級(jí)隊(duì)列
QMNC進(jìn)程對(duì)于AQ 表來說就相當(dāng)于CJQ0 進(jìn)程之于作業(yè)表。QMNC 進(jìn)程會(huì)監(jiān)視高級(jí)隊(duì)列,并警告從隊(duì)列中刪除等待消息的“出隊(duì)進(jìn)程”(dequeuer):已經(jīng)有一個(gè)消息變?yōu)榭捎谩MNC和Qnnn 還要負(fù)責(zé)隊(duì)列傳播(propagation),也就是說,能夠?qū)⒃谝粋€(gè)數(shù)據(jù)庫中入隊(duì)(增加)的消息移到另一個(gè)數(shù)據(jù)庫的隊(duì)列中,從而實(shí)現(xiàn)出隊(duì)(dequeueing)。
Qnnn 進(jìn)程對(duì)于QMNC 進(jìn)程就相當(dāng)于Jnnn 進(jìn)程與CJQ0 進(jìn)程的關(guān)系。QMNC 進(jìn)程要通知Qnnn 進(jìn)程需要完成什么工作,Qnnn 進(jìn)程則會(huì)處理這些工作。
QMNC 和Qnnn 進(jìn)程是可選的后臺(tái)進(jìn)程。參數(shù)AQ_TM_PROCESSES 可以指定最多創(chuàng)建10 個(gè)這樣的進(jìn)程(分別名為Q000,…,Q009),以及一個(gè)QMNC 進(jìn)程。如果AQ_TM_PROCESSES 設(shè)置為0,就沒有QMNC或Qnnn 進(jìn)程。
不同于作業(yè)隊(duì)列所用的Jnnn進(jìn)程,Qnnn 進(jìn)程是持久的。如果將AQ_TM_PROCESSES 設(shè)置為10,數(shù)據(jù)庫啟動(dòng)時(shí)可以看到10 個(gè)Qnnn 進(jìn)程和一個(gè)QMNC 進(jìn)程,而且在實(shí)例的整個(gè)生存期中這些進(jìn)程都存在。
EMNn:事件監(jiān)視器進(jìn)程(Event Monitor Process)
EMNn進(jìn)程是AQ 體系結(jié)構(gòu)的一部分,用于通知對(duì)某些消息感興趣的隊(duì)列訂購者。通知會(huì)異步地完成。
可以用一些Oracle 調(diào)用接口(Oracle Call Interface,OCI)函數(shù)來注冊(cè)消息通知的回調(diào)?;卣{(diào)是OCI 程序中的一個(gè)函數(shù),只要隊(duì)列中有了訂購者感興趣的消息,就會(huì)自動(dòng)地調(diào)用這個(gè)函數(shù)。EMNn 后臺(tái)進(jìn)程用于通知訂購者, 第一次向?qū)嵗l(fā)出通知時(shí)會(huì)自動(dòng)啟動(dòng)EMNn 進(jìn)程。然后應(yīng)用可以發(fā)出一個(gè)顯式的message_receive(dequeue)來獲取消息。
MMAN:內(nèi)存管理器(Memory Manager)
這個(gè)進(jìn)程是Oracle 10g 中新增的,自動(dòng)設(shè)置SGA 大小特性會(huì)使用這個(gè)進(jìn)程。MMAN 進(jìn)程用于協(xié)調(diào)共享內(nèi)存中各組件(默認(rèn)緩沖區(qū)池、共享池、Java 池和大池)的大小設(shè)置和大小調(diào)整。
MMON、MMNL 和Mnnn:可管理性監(jiān)視器(Manageability Monitor)
這些進(jìn)程用于填充自動(dòng)工作負(fù)載存儲(chǔ)庫(Automatic WorkloadRepository,AWR),這是Oracle 10g中新增的一個(gè)特性。
MMNL進(jìn)程會(huì)根據(jù)調(diào)度從SGA 將統(tǒng)計(jì)結(jié)果刷新輸出至數(shù)據(jù)庫表。
MMON進(jìn)程用于“自動(dòng)檢測”數(shù)據(jù)庫性能問題,并實(shí)現(xiàn)新增的自調(diào)整特性。 Mnnn 進(jìn)程類似于作業(yè)隊(duì)列的Jnnn 或Qnnn 進(jìn)程;MMON 進(jìn)程會(huì)請(qǐng)求這些從屬進(jìn)程代表它完成工作。Mnnn 進(jìn)程本質(zhì)上是臨時(shí)性的,它們將根據(jù)需要來來去去。
CTWR:修改跟蹤進(jìn)程(Change Tracking Process)
這是Oracle 10g 數(shù)據(jù)庫中新增的一個(gè)可選進(jìn)程。CTWR 進(jìn)程負(fù)責(zé)維護(hù)新的修改跟蹤文件。
RVWR:恢復(fù)寫入器(Recovery Writer)
這個(gè)進(jìn)程也是Oracle 10g 數(shù)據(jù)庫中新增的一個(gè)可選進(jìn)程,負(fù)責(zé)維護(hù)閃回恢復(fù)區(qū)中塊的“前”映像,要與FLASHBACKDATABASE 命令一起使用。
其他工具后臺(tái)進(jìn)程
還有另外一些工具進(jìn)程沒有列出。例如,Oracle Data Guard 有一組與之相關(guān)的進(jìn)程,有利于將重做信息從一個(gè)數(shù)據(jù)庫移送到另一個(gè)數(shù)據(jù)庫,并應(yīng)用這些重做信息。還有一些進(jìn)程與Oracle 10g 新增的數(shù)據(jù)泵工具有關(guān),在某些數(shù)據(jù)泵操作中會(huì)看到這些進(jìn)程。另外還有一些流申請(qǐng)和捕獲進(jìn)程。不過,以上所列已經(jīng)基本涵蓋了你可能遇到的大多數(shù)常用的后臺(tái)進(jìn)程。
關(guān)于Oracle數(shù)據(jù)庫進(jìn)程之后臺(tái)進(jìn)程的相關(guān)知識(shí)就介紹到這里了,希望本次的介紹能夠?qū)δ兴斋@!
【編輯推薦】






