【ora10,4】oracle後台進程介紹:,ora10oracle

來源:互聯網
上載者:User

【ora10,4】oracle後台進程介紹:,ora10oracle
一.SMON(System MONitor) 系統監控進程:    

在資料庫啟動過程中,SMON排在CKPT進程之後,在Oracle9i中排在第六號的位置:

PMON started with pid=2
DBW0 started with pid=3
LGWR started with pid=4
CKPT started with pid=5
SMON started with pid=6
RECO started with pid=7

SMON負責系統監視已經一些系統清理及恢複工作,這些工作主要包括:
1.清理臨時空間以及臨時段
SMON負責在資料庫啟動時清理暫存資料表空間中的臨時段,或者一些異常操作過程遺留下來的臨時段,例如,當建立索引過程中,建立期間分配給索引的Segment被標誌為TEMPORARY,如果Create Index (或rebuild Index等)會話因某些原因異常中斷,SMON負責清理這些臨時段。
2.接合空閑空間
在DMT(字典管理資料表空間)中,SMON負責把那些在資料表空間中閒置並且互相是鄰近的Extent接合成一個較大的空閑擴充區,這需要資料表空間的pctincrease設定為非零值。
3.執行執行個體恢複(Instance recovery)
在執行個體恢複過程中,SMON的工作包括三個環節:應用Redo執行前滾、開啟資料庫提供訪問、復原未提交資料

Tue Apr 22 21:31:10 2008
SMON: enabling cache recovery
Tue Apr 22 21:31:10 2008
ARC0: Completed archiving log 1 thread 1 sequence 238
Tue Apr 22 21:31:11 2008
Undo Segment 1 Onlined
Undo Segment 2 Onlined
Undo Segment 3 Onlined
Undo Segment 4 Onlined
Undo Segment 5 Onlined
Undo Segment 6 Onlined
Undo Segment 7 Onlined
Undo Segment 8 Onlined
Undo Segment 9 Onlined
Undo Segment 10 Onlined
Successfully onlined Undo Tablespace 1.
Tue Apr 22 21:31:11 2008
SMON: enabling tx recovery
Tue Apr 22 21:31:11 2008
Database Characterset is ZHS16GBK
replication_dependency_tracking turned off (no async multimaster replication found)
Completed: ALTER DATABASE OPEN

4.離線(Offline)復原段
在自動復原段管理(AUM)中負責Offline不再需要的復原段,日誌中會記錄類似如下資訊:

Fri May 2 15:43:21 2008
SMON offlining US=11
SMON offlining US=12
SMON offlining US=13
SMON offlining US=14
SMON offlining US=15
SMON offlining US=16
SMON offlining US=17
SMON offlining US=18
SMON offlining US=19
SMON offlining US=20
SMON offlining US=21
SMON offlining US=22
SMON offlining US=23

5.執行並行恢複
以下資訊來自9i日誌:

Fri May 11 21:30:45 2007
SMON: Parallel transaction recovery tried


Also Record some English Note About SMON:

The SMON background process performs all system monitoring functions on the Oracle database. The SMON process performs a "warm start" each time that Oracle is re-started, ensuring that any in-flight transaction at the time of the last shutdown are recovered. For example, if Oracle crashed hard with a power failure, the SMON process is attached at startup time, and detects any uncompleted work, using the rollback segments to recover the transactions. In addition,  SMON performs periodic cleanup of temporary segments that are no longer needed, and also perform tablespace operations, coalescing contiguous free extents into larger extents. 來源: <http://www.eygle.com/archives/2008/05/oracle_smon_process.html>  
 6.維護SMON_SCN_TIME 系統資料表。SMON_SCN_TIME 表記錄了SCN 與時間的對應關係,由SMON 定期進行定新,並將一些較老的資料定期刪除。二. PMON (Process MONitor) 進程監控進程: 1.作用:     主要用於復原異常終止的或被使用者強制終止的事務.<1>.rolling back the transaction.<2>.releasing locks.釋放鎖.<3>.releasing other resources.<4>.restarts dead dispatchers.重啟死掉的調度器.(在共用伺服器中用).
<5>.作為執行個體第一個啟動的後台進程,PMON 還肩負監控其他Oracle 後台進程的職責,在必要時重啟這些後台進程;<6>.此外,PMON 還負責向TNS 監聽器註冊執行個體。 2.pmon release lock 案例: http://www.askmaclean.com/archives/microoracle-pmon-release-lock.html三.DBWn  資料庫寫進程:1.作用:將記憶體中的資料寫入到磁碟。2.DBWR寫的條件:            發生檢查點,            髒緩衝到達限制。            沒有自由的緩衝            逾時發生。            RAC ping請求            資料表空間離線            資料表空間唯讀            表被刪除或者截斷            開始備份資料表空間下面為從網上找的與上面的相似:         1) 當進程在輔助LRU鏈表和主LRU鏈表上掃描以尋找可以覆蓋的buffer header[空閑緩衝區]時,如果已經掃描的buffer header的數量到達一定的限度(由隱藏參數:_db_block_max_scan_pct決定)時,觸發DBWR進程。_db_block_max_scan_pct表示已經掃描的buffer header的個數占整個LRU鏈表上buffer header總數的百分比。這時,搜尋可用buffer header的進程掛起,在v$session_wait中表現為等待“free buffer wait”事件,同時增加v$sysstat中的“dirty buffers inspected”的值。(can query by x$kvit)2) 當DBWR在主LRUW鏈表上尋找已經更新完而正在等待被寫入資料檔案的buffer header時,如果找到的buffer header的數量超過一定限度(由隱藏參數:_db_writer_scan_depth_pct決定)時,DBWR就不再繼續往下掃描了,而轉到輔助LRUW鏈表上將其上的髒資料區塊寫入資料檔案。_db_writer_scan_depth_pct表示已經掃描的髒資料區塊的個數占整個主LRUW鏈表上buffer header總數的百分比。3) 如果主LRUW鏈表和輔助LRUW鏈表上的髒資料區塊的總數超過一定限度,也將觸發DBWR進程。該限度由隱藏參數:_db_large_dirty_queue決定。4) 發生增量檢查點(incremental checkpoint)或完全檢查點(complete checkpoint)時觸發DBWR。5) 每隔三秒鐘啟動一次DBWR。6) 將資料表空間設定為離線(offline)狀態時觸發DBWR。7) 發出命令:alter tablespace … begin backup,從而將資料表空間設定為熱備份狀態時觸發DBWR。8) 將資料表空間設定為唯讀狀態時,觸發DBWR。9) 刪除對象時(比如刪除某個表)會觸發DBWR。 3. 系統有多少個資料庫寫進程:    32位系統,最多有10個進程,名稱從dbw0----dbw9    64位系統,最多有20個進程,名稱從dbw0----dbw9 ,dbwa  -----dbwj.4.查看dbwr進程資料量:SQL> show parameter db_writer_processes
NAME                                 TYPE        VALUE------------------------------------ ----------- ------------------------------db_writer_processes                  integer     1一般情況下dbwr進程數量設定為: dbwr進程數量大小 = cup數量 /8;   四. 日誌寫進程LGWR 1.LGWR寫的條件:    提交的時候,    達到日誌緩衝區的三分之一的時候,    日誌的大小到1M    每個三秒    在DBWn進程寫之前。下面為從網上找的與上面的相似:    1)逾時(timeout)當LGWR處於空閑狀態時,它依賴於rdbms ipc message等待,處於休眠狀態,直到3秒逾時時間到。如果LGWR發現有redo需要寫出,那麼LGWR將執行寫出操作,log file parallel write等待事件將會出現。 2)閾值達到只要一個進程在log buffer中分配空間,已經使用的Log buffer的數量將被計算。如果使用的塊的數量大於或等於_log_io_size參數設定,那麼將會觸發LGWR寫操作。如果此時LGWR未處於活動狀態,那麼LGWR將被通知去執行後台寫操作。預設的_log_io_size等於1/3 log buffer大小,上限值為1M,此參數在X$KSPPSV中顯示的0值,意為預設值。也就是,LGWR將在Min(1M,1/3 log buffer size)時觸發。注意此處的log buffer size是以log block來衡量的。此值通常為512 bytes. 3)提交當一個事物提交時,在redo stream中將記錄一個提交標誌。在這些redo被寫到磁碟上之前,這個事物是不可恢複的。所以,在事務返回成功標誌給使用者前,必須等待LGWR寫完成。進程通知LGWR寫,並且以log file sync事件開始休眠,逾時時間為1秒。Oracle的隱含參數_wait_for_sync參數可以設定為false避免redo file sync的等待,但是就將無法保證事務的恢複性.注意,在遞迴調用(recursive calls)中的提交(比如過程中的提交)不需要同步redo直到需要返迴響應給使用者。因此遞迴調用僅需要同步返回給使用者調用之前的最後一次Commit操作的RBA。 存在一個SGA變數用以記錄redo線程需要同步的log block number。如果多個提交在喚醒LGWR之前發生,此變數記錄最高的log block number,在此之前的所有redo都將被寫入磁碟。這有時候被稱為組提交(group commit).4)在DBWR寫之前如果DBWR將要寫出的資料的高RBA超過LGWR的on-Disk RBA,DBWR將post LGWR去執行寫出。在Oracle8i之前,此時DBWR將等待log file sync事件。從Oracle8i開始,DBWR把這些Block放入一個defer隊列,同時通知LGWR執行redo寫出,DBWR可以繼續執行無需等待的資料寫出。2.log buffer 日誌緩衝區,通過lgwr 寫到logfile檔案中 五. CKPT (Checkpoint) 檢查點進程:    1.作用:                它負責更新控制檔案和資料檔案頭的檢查點資訊,CKPT 進程還會通知DBWn 進程去執行寫操作。檢查點資訊包括檢查點位置、SCN 、Redo的恢複位置等。        給DBWn發訊號,DBWn改寫資料。        更新資料檔案頭        更新控制檔案     2.CKPT發送CHECKPOINT訊號的觸發條件:
1)log_checkpoint_timeout時間達到2)當前redo日誌已經寫夠log_checkpoint_internavl*作業系統塊大小3)redo log switch4)alter system checkpoint5)alter tablespace XXX begin backup/end backup的時候6)alter tablespace ,datafile offline,shutdown immediate,direct read的時候;
六.歸檔日誌進程 Archiver (ARCn):1.作用:在Oracle可選的後台進程中,最重要的就是歸檔日誌進程。如果Oracle資料庫發生資料檔案丟失或者損壞,需要進行完全恢複時,都應該運行在歸檔模式下。在Oracle中,重做記錄檔被分為很多組。當一組重做記錄檔被寫滿後,就開始寫下一組,稱為日誌切換。日誌切換以迴圈方式進行,當最後一組寫滿後,又開始寫第一組。如果Oracle運行在非歸檔模式下,就會發生重做記錄檔覆蓋的問題。在歸檔模式下,ARCn進行將把切換後的重做記錄檔複製到歸檔記錄檔。Oracle保證在一組重做日誌的歸檔完成之前不會覆蓋此組重做記錄檔。  2.顯示歸檔進程有多少個SQL> show parameter log_archive_max_processes NAME                                 TYPE        VALUE------------------------------------ ----------- ------------log_archive_max_processes            integer     4 3.修改歸檔進程個數: SQL> alter system set log_archive_max_processes=5; 系統已更改。


6. RECO進程       負責在分散式資料庫環境中自動回復那些失敗的分散式交易,保證分散式交易的一致性,在分散式交易中,要麼同時commit,要麼同時rollback; 7. ARCH進程       該進程將已填滿的線上記錄檔拷貝到指定的存放裝置。當資料庫運行在歸檔模式下,歸檔進程負責在日誌切換後將已經寫滿的重做記錄檔複製到歸檔目標.
8. LCKn進程       是在具有並行伺服器選件環境下使用,可多至10個進程(LCK0,LCK1……,LCK9),用於執行個體間的封鎖。 9. MMAN 進程       記憶體管理,如果設定了 SGA自動管理,MMAN用來協調SGA內各組件的大小設定和大小調整。 10. MMON 進程       管理性監視器(Manageability Monitor),MMON主要用於AWR,ADDM。MMON會從SGA將統計結果寫到系統資料表中。        MMON: The Manageability Monitor (MMON) process was introduced in 10g and is associated with the Automatic Workload Repository new features used for automatic problem detection and self-tuning. MMON writes out the required statistics for AWR on a scheduled basis.
進程地址:http://blog.csdn.net/tianlesoftware/article/details/5587788七.虛擬時鐘進程:(oracle 11g 新增加)
VKTM  –   其全名為V irtual  Keeper of TiMe  –   虛擬時鐘進程,這個進程是在Oracle  Database 11g 中引入的進程,用 於 ᨀ 供 一 個 數 據 庫 內 部 的 虛 擬 時 鐘 ,以計算各種時間間隔量度等,VKTM的引入降低和作業系統之間的互動,從而ᨀ高了效能。     VKTM 有兩種運行模式: •   基礎模式,秒級間隔更新; •   或者作為參考時間計數器,這種方式每20毫秒更新一次,僅在高優先順序時可用。 對於不同的版本,VKTM 的設定模式可能不同,具體可以從警示記錄檔中查知。

八. v$PROCESS 視圖:通過資料庫中的v$process視圖,可以找到對應於作業系統的每個進程資訊:
SQL> select addr, pid ,spid ,username, program from v$process;
ADDR            PID SPID         USERNAME        PROGRAM-------- ---------- ------------ --------------- -------------------------2C61627C          1                              PSEUDO2C616830          2 5074         oracle          oracle@master (PMON)2C616DE4          3 5078         oracle          oracle@master (PSP0)2C617398          4 5080         oracle          oracle@master (MMAN)2C61794C          5 5082         oracle          oracle@master (DBW0)2C617F00          6 5084         oracle          oracle@master (LGWR)2C6184B4          7 5086         oracle          oracle@master (CKPT)2C618A68          8 5088         oracle          oracle@master (SMON)2C61901C          9 5090         oracle          oracle@master (RECO)2C6195D0         10 5092         oracle          oracle@master (CJQ0)2C619B84         11 5094         oracle          oracle@master (MMON)
ADDR            PID SPID         USERNAME        PROGRAM-------- ---------- ------------ --------------- -------------------------2C61A138         12 5096         oracle          oracle@master (MMNL)2C61A6EC         13 5098         oracle          oracle@master (D000)2C61ACA0         14 5100         oracle          oracle@master (D001)2C61B254         15 5102         oracle          oracle@master (S000)2C61B808         16 5104         oracle          oracle@master (TNS V1-V3)

在v$process的查詢輸出中,SPID列代表的就是作業系統上的進程號,通過SPID可以將進程從作業系統到資料庫關聯起來:九.尋找後台進程: SQL> select * from v$bgprocess where paddr<>'00';     
Oracle後台進程中什與CPU數量有關

Oracle執行個體的進程結構

裡程這裡說的是一個Unix系統的過程中,在Windows中,甲骨文是一個作業系統服務。

Oracle執行個體的記憶體地區和後台進程組成。

到一個單一的流程執行個體(進程執行所有的Oracle碼,只允許進入單使用者)和多進程執行個體Oracle執行個體(甲骨文代碼被執行多個進程在不同部位,為每個串連的使用者有一個過程,它允許多個使用者同時使用)。

在多進程架構,除了伺服器處理序(請注意,這個“伺服器處理序”並不是指所有流程執行個體,請參見下面的說明),還有其他後台進程,包括:採用dnnn,DBWR,LGWR,ARCH,PMON,SMON,CKPT,RECO等。在資料庫啟動之後,這些進程駐留的作業系統。甲骨文中的所有進程和量不能超過設定值參數過程:

SQL>顯示參數過程

當Oracle用戶端應用程式和Oracle執行個體串連時,Oracle會產生一個伺服器處理序為這些客戶,這個過程widnows下的線程效能。這個過程的主要作用是:來解析,編譯,執行使用者的SQL語句的使用者發出的SQL語句,資料區塊是沒有的情況下,當資料緩衝區,從磁碟資料檔案中的資料讀取到的SGA的共用資料緩衝區在執行SQL語句返回的結果集的應用程式。使用下面的語句在資料庫中查詢使用者的會話資訊。

SQL>選擇SUBSTR(1,3 s.sid)SID,SUBSTR(s.serial#,1,5)SER,SPID,SUBSTR(SCHEMANAME,1,10)架構,SUBSTR(型,1,3)典型,SUBSTR(解碼((consistent_gets“+ block_gets”),0,'無',(100 *(consistent_gets + block_gets physical_reads)/ consistent_gets + block_gets))),1,4)“%命中” ,價值的cpu,SUBSTR(block_changes 1,5)bchng的V $進程p,V $ SESSTAT噸,V $ sess_io I,V $會話s i.sid = s.sid p.addr = PADDR(+ )和s.sid = t.sid t.statistic#= 12;

結果:

SID表示會話ID號中

SER表示會話串列#

SPID表示作業系統的系統進程ID號,序號和相結合來表示單個會話的SID,

架構

典型代表資料庫的使用者名稱,工藝類型,使用者使用過程,BAC %的命中表示作為後台進程的資料緩衝區的命中率,

CPU,CPU使用時間,

bchng表示的資料區塊數。 />下面描述了不同的後台進程。

1。 DBWR進程

DBWR(資料庫作家)過程緩衝區中的資料寫入資料檔案的資料緩衝區管理。

當資料緩衝區中的資料被,被標記為“髒”,DBWR進程是負責“髒”資料被寫入到磁碟。 /> DBWR採用LRU演算法,以取代在資料緩衝區中的資料。

DBWR的作用包括:

1)管理資料緩衝區,以便伺服器處理序總能找到空閑緩衝區

2)所有過的緩衝區資料寫入到資料庫檔案 3)使用LRU演算法最近使用過的塊保留在記憶體

4)通過延遲寫來最佳化磁碟I / O。

在下列情況下DBWR髒資料寫入到磁碟資料檔案:

1)當一個伺服器處理序將緩衝資料區塊“髒表”,的髒表面表達,在一定程度上轉移。 (臨界長度由參數DB_BLOCK_WRITE_BATCH的確定)

2)當一個伺服器處理序在LRU表中尋找緩衝DB......餘下全文>>
 
oracle 後台進程

其實網上可以找到 ...
呵呵你自己去看看吧...
linsea.javaeye.com/blog/479663
 

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.