我們經常說數據庫實例,實例其實就是指的是數據庫的內存結構和進程結構。我們安裝數據庫軟件大量的是在安裝其內存和進程組件結構。上篇節我們介紹了oracle內存結構,這節就介紹下oracle進程結構。
首先看下oracle進程的分類:
1)用戶進程
是連接到Oracle DB 的應用程序或工具
2)數據庫進程
服務器進程:連接到Oracle實例,在用戶建立會話時啟動
后台進程:在啟動Oracle實例時啟動
3) 守護程序/應用程序進程
網絡監聽程序
Gridinfrastructure 守護程序
從進程角度一般可以把服務器模式分為兩種:
專用服務器:對於每個會話,專用服務器進程提供服務;
共享服務器:不必為每個連接都提供一個專用服務器進程。分派程序會將多個傳入網絡會話請求定向到共享服務器進程池。共享服務器進程為所有客戶機請求提供服務。
一般生產庫中都是共享模式;
下來簡要介紹下幾個主要的進程:
Oracle進程結構圖(此圖來源於oracle官方文檔)
非RAC、非ASM 環境中的常見后台進程包括:
• 數據庫寫進程(DBWn)
• 日志寫進程(LGWR)
• 檢查點進程(CKPT)
• 系統監視器進程(SMON)
• 進程監視器進程(PMON)
• 恢復器進程(RECO)
• 作業隊列協調程序(CJQ0)
• 作業從屬進程(Jnnn)
• 歸檔進程(ARCn)
• 隊列監視器進程(QMNn)
說明:
DBWn 進程負責將數據庫緩沖區高速緩存中經過修改的緩沖區(灰數據緩沖區)寫入磁盤;DB_WRITER_PROCESSES 初始化參數指定了DBWn 進程的數量。DBWn 進程的最大數量為36。如果用戶在啟動過程中未指定該進程數,Oracle DB 將根據CPU 和處理器組的數量來決定如何設置DB_WRITER_PROCESSES
注意n代表可以有多個此類進程,但是如果是單處理器服務器,則配置n是沒用的。
在以下情況下,DBWn 進程將灰數據緩沖區寫入磁盤:
服務器進程找不到干凈的可重用緩沖區時;推進檢查點需要;
日志寫進程(LGWR) 負責管理重做日志緩沖區,即將重做日志緩沖區條目寫入磁盤上的重做日志文件;大型系統的數據塊操作頻率特別高,勢必有大量的日志寫入日志緩沖區,oracle必須保障時刻都有足夠的空間寫新的重做日志,因此日志寫進程觸發的頻率是非常高的,在以下情況都會觸發該進程工作:
用戶進程提交事務處理時,比如commit命令后;
重做日志緩沖區的三分之一已滿時;
DBWn 進程將經過修改的緩沖區寫入磁盤之前;
每隔3秒;
檢查點進程(CKPT)
“檢查點”是一種數據結構,它定義了數據庫的重做線程中的系統更改號(SCN)。檢查點記錄在控制文件和每個數據文件頭中。它們是恢復操作的關鍵元素,遇到檢查點時,Oracle DB 必須更新所有數據文件的頭,以記錄該檢查點的詳細信息。
這是由CKPT 進程完成的。SCN 機制很巧妙的保障了oracle數據恢復機制。這里只是簡要提到,有興趣的朋友可以找找相關技術資料,理解SCN的原理,對數據庫的備份還原恢復都有相當的理論幫助。
系統監視器進程(SMON)
在實例啟動時執行恢復;
清除不使用的臨時段;
進程監視器進程(PMON)
在用戶進程失敗時執行進程恢復。負責清除數據庫緩沖區高速緩存和釋放該用戶進程占用的資源;PMON 定期檢查分派程序和服務器進程的狀態,並重新啟動任何已停止運行的分派程序和服務器進程。它是數據庫的進程管家。
恢復器進程(RECO)
是一個用於分布式數據庫配置的后台進程,它可以自動解決涉及分布式事務處理的故障。
歸檔進程(ARCn)
發生日志切換之后,歸檔進程(ARCn) 會將重做日志文件復制到指定的存儲設備。僅當數據庫處於ARCHIVELOG 模式且已啟用自動歸檔時,才會存在ARCn 進程。數據庫日志一般都會很大,同時數據庫日志是特別重要的,只要有完整的日志我們就能恢復丟失了的數據,所以日志的丟失是一種極大的風險,我們需要把它定期遷移到異地存儲上(磁帶,磁盤等介質),這個過程叫做日志歸檔,需要歸檔進程來完成。注意ARCHIVELOG模式的啟用,這個我們在后邊數據庫備份還原部分會再細講;
Oracle進程體系就介紹到此,下一篇節我們介紹下oracle存儲體系結構。歡迎關注【取知有道】,你的關注是我們堅持的原動力!
-------------------------------END-----------------------------------
【取知有道】這里歡迎愛好學習的朋友,着重數據庫等IT知識的分享學習。
請敬關注【取知有道】訂閱號。微信搜索公眾號【取知有道】,添加關注!
或長按此二維碼添加關注!
近期分享:
Oracle基礎體系結構方面,涉及實例內存結構、進程結構、物理存儲結構、邏輯存儲體系等基礎理論。