Oracle 程式

winston_DBA發表於2015-04-15
1.oracle程式型別:
客戶端程式(client proce):執行應用程式或者oracle工具程式碼的程式;
oracle 後臺程式(background process):隨著例項啟動而啟動,用於完成各種維護任務。
oracle伺服器程式(server process):根據客戶的請求資訊,代替使用者完成工作任務。
oracle從屬程式(slave process):代表後臺程式或伺服器程式完成額外的工作。
2.連線和會話
連線是客戶端程式和伺服器例項之間的物理通訊路徑,連線可以透過在程式間建立,也可以透過網路建立。通常,連線建立在客戶端程式和伺服器程式或者排程器(dispatcher)上,也可以在客戶端程式和CMAN(connection manager)上。
會話是例項記憶體中的邏輯實體,代表著當前使用者登入到資料庫上的狀態。當使用者成功登入到資料庫上,會話建立。當使用者斷開連線或者退出應用程式後,會話結束。
一個連線(connect)上可以建立多個會話,多個會話之間相互獨立,互不影響。
3.伺服器程式
3.1伺服器程式主要用於執行以下任務:
解析和執行應用程式發出的SQL語句,包括建立和執行查詢計劃。
執行PL/SQL程式碼
將資料塊從資料檔案中讀入到DB buffer cache中(對應的DBWn程式將資料髒塊寫入到資料檔案中)
將查詢結果集返回給客戶端處理。
3.2專有伺服器程式:客戶端程式和伺服器程式是一對一關係,伺服器程式包含了程式相關的資訊和在PGA中包含UGA;
共享伺服器程式:客戶端程式不再和伺服器程式直接通訊,而是先和排程服務程式通訊,接著再和共享伺服器程式通訊。每個共享伺服器程式也有自己的PGA,但是為了保證UGA內容能夠被所有的共享伺服器程式訪問到,UGA被放入SGA中。
4.後臺程式
4.1 後臺程式主要用於完成各種維護任務,可透過SELECT PNAME FROM   V$PROCESS WHERE  PNAME IS NOT NULL ORDER BY PNAME;語句檢視。
4.2 每個例項必須的後臺程式有:process monitor process(PMON)/system monitor process(SMON)/database writer process(DBWn)/log writer process(LGWR)/checkpoint process(CKPT)/manageability monitor process(MMNL 和 MMON)/recoverer process(RECO)
PMON:
程式監控後臺程式負責監控其他的後臺程式並在伺服器程式或者排程程式失敗時,進行程式恢復;
PMON還負責清理DB BUFFER CACHE和釋放客戶端使用的資源。例如,PMON重置活動事務表的狀態,釋放不再需要的鎖等。
PMON還負責推送例項資訊和排程器資訊給監聽器。如果推送至監聽器時,監聽器已經執行,則推送成功,若監聽器非執行狀態,則PMON會週期性的向監聽器推送訊息(週期一般為2分鐘)。
SMON:
SMON主要進行系統級別的清理,主要的任務如下:
在需要進行例項恢復場景下,負責例項恢復;
恢復在例項恢復過程中由於檔案讀取失敗或者表空間離線導致的事務失敗。
清理臨時段;
在資料字典管理表空間下,負責連續空閒區的合併。
SMON不斷的檢查系統是否需要執行自己的任務,其他的程式如果監測到需要SMON執行任務,也可以出發SMON工作。
DBWn:
DBWn主要進行髒塊的寫入,當伺服器程式發現DB BUFFER CACHE中沒有乾淨的可用塊之後,會觸發DBWn進行寫入操作;
DBWn的寫入是隨機並且非同步的。
DBWn透過寫入髒塊來推進檢查點的維護。
DBWn的寫入是隨機並且分散的,而LGWR的日誌寫入為順序,所以DBWn的寫入速度較慢,但oracle支援DBWn的多塊同時寫入,以提高效能。
LGWR:
LGWR主要用於將分散且速度較慢的髒塊寫入和順序寫入且速度較快的日誌寫入分開,以提高oracle的效能;
LGWR寫的觸發條件:
     無論何時有人提交請求時;
     要求LGWR切換日誌檔案時;
     redo buffer緩衝區1/3滿或者包含了1M資料時。
     當髒塊要寫入資料檔案,但是與髒塊相關的redo日誌還沒寫入online redo log中,DBWn會觸發LGWR寫出redo快取內容。
LGWR和commit:
     oracle使用快速提交(fast commit)機制來提高提交事務的效能,當使用者發出commit指令時,事務被分配一個SCN號。LGWR生成一條提交記錄,放入到redo buffer,並立刻寫入online redo log中,寫入online redo log的同時,也將提交的SCN還有redo記錄寫入online redo log。
     redo日誌緩衝區是環狀的,當LGWR將裡面的內容寫入online redo log後,伺服器程式就可以覆蓋那些已經寫入磁碟的記憶體。不管online redo log的訪問如何繁忙,oracle總是保證寫入速度足夠快,來保證redo log buffer 的空間足夠。
     oracle判斷事物是否提交成功的標誌,就是LGWR將含有事務提交資訊的記錄和事務相關redo記錄寫入到online redo log中。只要成功寫入online redo log,oracle就給提交的事務返回”提交成功“的訊號,雖然此時被修改的資料塊很可能還沒有從DB BUFFER CACHE中寫入磁碟,但沒有關係,DBWn會後續將改變的髒塊寫入的磁碟中,並且及時此時資料庫crash,也可以透過例項恢復,保證資料庫的一致性。
注意:
     還未提交的事務產生的redo日誌也有可能被LGWR寫入到online redo log中,但只有該事務提交,相關的redo資訊才會最終持久生效。
     LGWR會同時往log file group中的成員寫入資料,如果某個成員檔案損壞,則LGWR會往另外一好的日誌檔案寫入日誌,同時在告警日誌和跟蹤檔案中記錄該錯誤。但是如果一個成員組的所有成員都損壞,則LGWR再無法正常工作。
CKPT:
     檢查點程式主要更新控制檔案資訊和資料檔案頭資訊,並且觸發DBWn將髒塊寫入資料檔案中。檢查點資訊包括檢查點位置、SCN和開始進行恢復的redo log位置。
MMON和MMNL:
     Manageability monitor process主要進行AWR(auto workload repository)相關的任務。例如當超出測量閾值,拍攝快照和獲取最近修改物件的統計資訊時,MMON會進行寫操作。
     manageability monitor lite process主要當SGA中的active session history(ASH)緩衝區滿時,進行寫入磁碟操作。
RECO:
     在分散式資料庫中,Recoverer process會自動解決分散式事務中的失敗。
5.可選後臺程式
可選後臺程式主要包括:Archiver processes(ARCn)   Job Queue Processes(CJQ0 and Jnnn)   Flashback data archiver process(FBDA)   Space Management Coordinator Process(SMCO)
ARCn:
     當資料庫啟用歸檔模式並且自動歸檔也開啟,才會有ARCn存在;
     ARCn主要在發生日誌切換時,將online redo log 中的檔案複製到離線儲存裝置上進行歸檔備份;
     ARCn也可以在歸檔redo日誌中採集事務的redo日誌,傳輸到備庫上進行應用。
CJQ0 and Jnnn:
     Oracle使用job queue processes來處理job,並且這些job通常以批處理形式進行;
     Oracle scheduler動態的啟動和停止job coordinator process(CJQ0),協調器會定期的從系統表JOB$中獲取需要執行的job;
     job coordinator定期產生大量的job queue slave processes(Jnnn)來處理job;
     job queue process執行CJQ0選擇出來的job,並且每個job對應一個job queue process;
     透過設定初始化引數JOB_QUEUE_PROCESSES為非0值,可啟動coordinator程式,且引數值代表著可同時在例項上執行的job queue process數量。
FBDA:
     該程式主要將追蹤的錶的歷史記錄寫入到閃回資料歸檔中。用於支援資料庫的閃回特性。
SMCO(space management coordinator process):
     該程式主要協調各種空間管理相關任務的執行。例如空間的分配和回收。SMCO動態的產生Wnnn從屬程式來實現這些任務。
6.從屬程式
從屬程式就是代替其他程式執行任務的後臺程式。Oracle中常用的從屬程式有:I/O從屬程式和並行查詢從屬程式     
I/O從屬程式:
     I/O slave processes(Innn)主要用來在不支援非同步I/O的系統或者裝置上模仿非同步I/O。
     Oracle資料庫支援兩種型別的從屬程式:RMAN從屬I/O程式和DBWriter從屬I/O程式。其中,RMAN從屬程式可以用在磁碟或者磁帶裝置上模仿非同步I/O提高效率。而DBWn程式可以利用從屬I/O程式來模仿非同步I/O,使得DBWR是唯一的對LRU列表進行掃描判斷是否需要寫入磁碟的程式,但是真正將資料塊寫入資料檔案的是從屬I/O程式。

  

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30167136/viewspace-1579111/,如需轉載,請註明出處,否則將追究法律責任。

相關文章