oracle進程
Oracle進程是Oracle實例中主要的組成部分,是Oracle系統管理數據庫必不可少的一部分,Oracle進程可以分為用戶進程、Oracle進程兩大部分。它們主要是維護數據庫的穩定,相當于一個企業中的管理者,負責全局統籌的作用。
用戶進程
用戶進程指的是用戶在運行程序或者Oracle工具時,需要通過建立用戶進程和Oracle實例進行通信。
我們常說的connection(連接)就是用戶進程和Oracle實例間建立的一個通信通道。Oracle的connection連接是允許一個用戶可以同時多次連接到同一個數據庫實例的。
還有,常說的session(會話)是用戶在和Oracle服務器連接成功后,并通過了Oracle的身份驗證后,用戶會和Oracle服務器之間建立一個會話。同時同一個用戶可以并發的和數據庫建立多個會話。
Oracle進程
Oracle進程又分為服務器進程(server process)和后臺進程(background process)
服務器進程:用于處理連接到該實例的用戶進程的請求。當應用程序和ORACLE運行在同一主機時,用戶進程和相應的服務器進程可組合到單個進程,以減少系統開銷;當應用程序和ORACLE運行在不同的主機時,用戶進程將通過一個單獨的服務器進程與ORACLE聯系。
服務器進程主要用來分析和執行SQL語句、所需的數據不在SGA內存中時,從磁盤數據文件復制到SGA的共享數據緩沖區等工作。
后臺進程:是在Oracle實例啟動時建立的,用于優化性能和協調多用戶連接通信的工作。常用的Oracle后臺進程,可以通過數據字典V$bgprocess查詢,如下:
這里,介紹一下一些常見的后臺進程:
1、數據庫寫入(DBRn)進程:按照最近最少使用(LRU)算法,以批量(多塊)方式,將“臟的”緩沖區的內容寫入數據文件,保持緩沖區的“清潔”和數量。
2、日志寫(LGWR)進程:將重做日志緩沖區中自上次寫以來已經拷貝到緩沖區中的所有重做條目寫入重做日志文件。重做日志緩沖區是一個循環緩沖區,LGWR正常寫的速度很快。
3、檢查點(CKPT)進程:發生檢查點時,修改所有數據文件的標題和記錄該檢查點的細節。通常由LGWR完成,但有多個數據文件,而使用LGWR又明顯降低系統性能時才使用CKPT。
4、系統監控(SMON)進程:在實例啟動時執行實例恢復,整理不再使用的臨時段,合并鄰近的空閑空間獲得更大的空閑可用塊。
5、進程監控(PMON)進程:恢復出故障的用戶進程,整理緩沖區的高速緩存和釋放用戶進程使用的資源。定期檢查調度進程和服務器進程狀態,重新啟動非正常終止的進程。
6、存檔(ARCH)進程:聯機重做日志填滿時,將日志內容拷貝到指定的存儲設備中。
7、恢復(RECO)進程:在分布式數據庫環境中自動解決分布式事務中的故障。
8、鎖(LCKn)進程:在并行服務器系統中提供實例間的封鎖。
9、作業隊列(SNPn)進程:在分布式數據庫環境中自動刷新表快照,還執行DBMS_JOB包創建的作業請求。
10、隊列監控(QMn)進程:監控消息隊列的ORACLE高級(AQ)隊列。
11、調度(Dnnn)進程:通過允許用戶進程共享限定數量的服務器進程來支持多線程配置。
12、共享服務器(Snnn)進程:在多線程配置模式下,每個服務器進程服務于多個客戶請求。
總結:
通過一個關系圖可以全面了解Oracle各個后臺進程之間的聯系和作用: