Oracle - 後臺進程

From: http://blog.163.com/myy10146@126/blog/static/11355718620104109121965/ 

但是通過另外的工具,就可以看到包含在這裏進程中
  1. 後臺進程是Oracle的程序,用來管理數據庫的讀寫,恢復和監視等工作。Server Process主要是通過他和user process進行聯繫和溝通,並由他和user process進行數據的交換。在Unix機器上,Oracle後臺進程相對於操作系統進程,也就是說,一個Oracle後臺進程將啓動一個操作系統進程;在Windows機器上,Oracle後臺進程相對於操作系統線程,打開任務管理器,我們只能看到一個ORACLE.EXE的進程,但是通過另外的工具,就可以看到包含在這裏進程中的線程。  
  2. 在Unix上可以通過如下方法查看後臺進程:  
  3. ps –ef | grep ora_  
  4. # ps -ef | grep ora_ | grep XCLUAT  
  5. oracle 29431 1 0 Sep 02 ? 2:02 ora_dbwr_SID  
  6. oracle 29444 1 0 Sep 02 ? 0:03 ora_ckpt_SID  
  7. oracle 29448 1 0 Sep 02 ? 2:42 ora_smon_SID  
  8. oracle 29442 1 0 Sep 02 ? 3:25 ora_lgwr_SID  
  9. oracle 29427 1 0 Sep 02 ? 0:01 ora_pmon_SID 
  10.  
  11.  
  12. a、Oracle系統有5 個基本進程他們是  
  13. DBWR(數據文件寫入進程)  
  14. LGWR(日誌文件寫入進程)  
  15. SMON(系統監護進程)  
  16. PMON(用戶進程監護進程)  
  17. CKPT(檢查點進程,同步數據文件, 日誌文件,控制文件) 
  18.  
  19.  
  20. b、DBWR  
  21. 將修改過的數據緩衝區的數據寫入對應數據文件,維護系統內的空緩衝區。  
  22. 這裏指出幾個容易錯誤的概念:  
  23. --當一個更新提交後,DBWR把數據寫到磁盤並返回給用戶提交完成.  
  24. --DBWR會觸發CKPT 後臺進程  
  25. --DBWR不會觸發LGWR 進程  
  26. 上面的概念都是錯誤的.  
  27. DBWR是一個很底層的工作進程,他批量的把緩衝區的數據寫入磁盤。和任何前臺用戶的進程幾乎沒有什麼關係,也不受他們的控制。至於DBWR會不會觸發LGWR和CKPT進程,我們將在下面幾節裏討論。  
  28. DBWR工作的主要條件如下:  
  29. --DBWR 超時  
  30. --系統中沒有多的空緩衝區用來存放數據  
  31. --CKPT 進程觸發DBWR 等 
  32.  
  33.  
  34. c、LGWR  
  35. 將重做日誌緩衝區的數據寫入重做日誌文件,LGWR是一個必須和前臺用戶進程通信的進程。當數據被修改的時候,系統會產生一個重做日誌並記錄在重做日誌緩衝區內。這個重做日誌可以類似的認爲是以下的一個結構:  
  36. SCN=000000001000  
  37. 數據塊ID  
  38. 對象ID=0801  
  39. 數據行=02  
  40. 修改後的數據=0011  
  41. 提交的時候,LGWR必須將被修改的數據的重做日誌緩衝區內數據寫入日誌數據文件,然後再通知前臺進程提交成功,並由前臺進程通知用戶。從這點可以看出LGWR承擔了維護系統數據完整性的任務。  
  42. LGWR 工作的主要條件如下:  
  43. --用戶提交  
  44. --有1/3 重做日誌緩衝區未被寫入磁盤  
  45. --有大於1M 重做日誌緩衝區未被寫入磁盤  
  46. --超時  
  47. --DBWR需要寫入的數據的SCN號大於LGWR 記錄的SCN號,DBWR 觸發LGWR寫入 
  48.  
  49.  
  50. d、SMON  
  51. 工作主要包含:  
  52. --清除臨時空間  
  53. --在系統啓動時,完成系統實例恢復  
  54. --聚結空閒空間  
  55. --從不可用的文件中恢復事務的活動  
  56. --OPS中失敗節點的實例恢復  
  57. --清除OBJ$表  
  58. --縮減回滾段  
  59. --使回滾段脫機 
  60.  
  61.   
  62. e、PMON  
  63. 主要用於清除失效的用戶進程,釋放用戶進程所用的資源。如PMON將回滾未提交的工作,釋放鎖,釋放分配給失敗進程的SGA資源。 
  64.  
  65.  
  66. f、CKPT  
  67. 同步數據文件,日誌文件和控制文件,由於DBWR/LGWR的工作原理,造成了數據文件,日誌文件,控制文件的不一至,這就需要CKPT進程來同步。CKPT會更新數據文件/控制文件的頭信息。  
  68. CKPT工作的主要條件如下:  
  69. --在日誌切換的時候  
  70. --數據庫用immediate ,transaction , normal 選項shutdown 數據庫的時候  
  71. --根據初始話文件LOG_CHECKPOINT_INTERVAL、LOG_CHECKPOINT_TIMEOUT、FAST_START_IO_TARGET 的設置的數值來確定  
  72. --用戶觸發 
  73.  
  74.  
  75. 以下進程的啓動需要手工配置  
  76. g、ARCH  
  77. 當數據庫以歸檔方式運行的時候,Oracle會啓動ARCH進程,當重做日誌文件被寫滿時,日誌文件進行切換,舊的重做日誌文件就被ARCH進程複製到一個/多個特定的目錄/遠程機器。這些被複制的重做日誌文件被叫做歸檔日誌文件。 
  78.  
  79.  
  80. h、RECO  
  81. 負責解決分佈事物中的故障。Oracle可以連接遠程的多個數據庫,當由於網絡問題,有些事物處於懸而未決的狀態。RECO進程試圖建立與遠程服務器的通信,當故障消除後,RECO進程自動解決所有懸而未決的會話。 
  82.  
  83.   
  84. i、服務進程Server Process  
  85. 服務進程的分類  
  86. --專用服務進程(Dedicated Server Process)  
  87. 一個服務進程對應一個用戶進程  
  88. --共享服務進程(MultiTreaded Server Process)  
  89. 一個服務進程對應多個用戶進程,輪流爲用戶進程服務。  
  90. PGA & UGA  
  91. PGA = Process Global Area  
  92. UGA = User Global Area  
  93. 他保存了用戶的變量、權限、堆棧、排序空間等用戶信息,對於專用服務器進程,UGA在PGA中分配。對於多線程進程,UGA在Large pool中分配。 
  94.  
  95.  
  96. j、用戶進程User Process  
  97. 在客戶端,將用戶的SQL 語句傳遞給服務進程 

的線程。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章