Oracle11g六個重要程序

2021-06-28 14:52:54 字數 4427 閱讀 4243

這裡所講的里程是指unix系統中的程序,在windows中,oracle是乙個作業系統服務。

oracle例項由記憶體區域和後台程序組成。

oracle例項分為單程序例項(乙個程序執行全部的oracle**,只允許單個使用者訪問)和多程序例項(由多個程序執行oracle**的不同部分,對於每乙個連線的使用者都有乙個程序,允許多個使用者同時使用)。

在多程序結構中,除伺服器程序(請注意,此「伺服器程序」不是指所有的例項中的程序,見下面的說明)外,還有其他後台程序,包括:dnnn,dbwr,lgwr,arch,pmon,smon,ckpt,reco等。在資料庫啟動後,這些程序常駐作業系統。oracle中所有程序的數量之和不能超過引數process設定的值:

sql>show parameter process

當oracle客戶端應用程式與oracle例項連線的時候,oracle會產生乙個伺服器程序來為這些客戶服務,此程序在widnows下表現為執行緒。此程序的主要作用有:對於使用者發出的sql語句進行語法分析,編譯,執行使用者的sql語句,如是資料塊不在資料緩衝區時,則從磁碟資料檔案將資料讀入到sga的共享資料緩衝區中,將sql語句的執行結果返回組應用程式。下面的語句用來查詢資料庫中的使用者會話資訊。

sql>select substr(s.sid,1,3) sid,substr(s.serial#,1,5) ser,spid,substr(schemaname,1,10) schema,substr(type,1,3) typ,substr(decode((consistent_gets+block_gets),0,'none',(100*(consistent_gets+block_gets-physical_reads)/consistent_gets+block_gets))),1,4) "%hit",value cpu,substr(block_changes,1,5) bchng from v$process p,v$sesstat t,v$sess_io i,v$session s where i.sid=s.sid and p.addr=paddr(+) and s.sid=t.sid and t.statistic#=12;

結果中:

sid 表示會話id號,

ser 表示會話serial#號,serial#與sid組合以唯一表示乙個會話,

spid 表示作業系統程序號,

schema 表示資料庫使用者名稱,

typ 表示程序型別,use為使用者程序,bac為後台程序

%hit 表示資料緩衝區命中率,

cpu 表示使用cpu的時間,

bchng 表示修改了的資料塊的個數。

下面介紹各個後

這裡所講的里程是指unix系統中的程序,在windows中,oracle是乙個作業系統服務。

oracle例項由記憶體區域和後台程序組成。

oracle例項分為單程序例項(乙個程序執行全部的oracle**,只允許單個使用者訪問)和多程序例項(由多個程序執行oracle**的不同部分,對於每乙個連線的使用者都有乙個程序,允許多個使用者同時使用)。

在多程序結構中,除伺服器程序(請注意,此「伺服器程序」不是指所有的例項中的程序,見下面的說明)外,還有其他後台程序,包括:dnnn,dbwr,lgwr,arch,pmon,smon,ckpt,reco等。在資料庫啟動後,這些程序常駐作業系統。oracle中所有程序的數量之和不能超過引數process設定的值:

sql>show parameter process

當oracle客戶端應用程式與oracle例項連線的時候,oracle會產生乙個伺服器程序來為這些客戶服務,此程序在widnows下表現為執行緒。此程序的主要作用有:對於使用者發出的sql語句進行語法分析,編譯,執行使用者的sql語句,如是資料塊不在資料緩衝區時,則從磁碟資料檔案將資料讀入到sga的共享資料緩衝區中,將sql語句的執行結果返回組應用程式。下面的語句用來查詢資料庫中的使用者會話資訊。

sql>select substr(s.sid,1,3) sid,substr(s.serial#,1,5) ser,spid,substr(schemaname,1,10) schema,substr(type,1,3) typ,substr(decode((consistent_gets+block_gets),0,'none',(100*(consistent_gets+block_gets-physical_reads)/consistent_gets+block_gets))),1,4) "%hit",value cpu,substr(block_changes,1,5) bchng from v$process p,v$sesstat t,v$sess_io i,v$session s where i.sid=s.sid and p.addr=paddr(+) and s.sid=t.sid and t.statistic#=12;

結果中:

sid 表示會話id號,

ser 表示會話serial#號,serial#與sid組合以唯一表示乙個會話,

spid 表示作業系統程序號,

schema 表示資料庫使用者名稱,

typ 表示程序型別,use為使用者程序,bac為後台程序

%hit 表示資料緩衝區命中率,

cpu 表示使用cpu的時間,

bchng 表示修改了的資料塊的個數。

下面介紹各個後台程序。

1. dbwr程序

dbwr(database writer)程序將緩衝區中的資料寫入資料檔案,負責資料緩衝區的管理。

當資料緩衝區中的乙個資料被修改後,被標記為「髒」,dbwr程序負責將「髒」資料寫入磁碟。

dbwr採用lru演算法來替換資料緩衝區中的資料。

dbwr的作用包括:

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

2) 將所有修改後的緩衝區中的資料寫入資料庫檔案

3) 使用lru演算法將最近使用過的塊保留在記憶體中

4) 通過延遲寫來優化磁碟i/o.

在下列情況下dbwr要將髒資料寫入磁碟資料檔案:

1)生產checkpoint的時候,這個檢查點將作為資料恢復的起點,該檢查點之前的資料寫入datafiles。

2)當乙個伺服器程序將緩衝資料塊移「髒表」,麵該髒表達到一定程度進。(該臨界長度由引數db_block_write_batch決定)

3)當乙個伺服器程序在lru表中查詢db_block_max_scan_cnt緩衝區時,沒有查到空閒的緩衝區

4)表空間設定為唯讀的時候

5)表空間設定為離線狀態

6)刪除表或者截斷表的時候

7)出現超時

8)表空間開始備份

在乙個oracle例項中,允許啟動多個dbwr程序,dbwr程序個數由引數db_write_processes指定,上限為20,程序名依次自動命名為:dbw0,dbw1,dbw2...dbw19。

sql>show parameter processes

2. lgwr程序

lgwr(log writer)程序將日誌資料從日誌緩衝區中寫入磁碟日誌檔案中。

lgwr的寫盤條件是:

1) 發生提交,即commit;

2) 日誌緩衝區達到總數的1/3時;

3)每3s進行一次寫入

4)有1m的緩衝日誌

5)寫髒塊之前進行

3. smon程序

smon(system monitor),系統監控程序,監控例項的開始和關閉,並負責清理不再使用的臨時段。

1)、在例項失敗之後,重新開啟資料庫時自動恢復例項。 

2)、整理資料檔案的自由空間,將相鄰區域結合起來。

3)、釋放不再使用的臨時段。

4. pmon程序

pmon(process monitor),程序監控里程,在伺服器程序出現故障時執行程序恢復,負責清理記憶體記憶體和釋放該程序所使用的資源。

1)、恢復使用者程序

2)、釋放所有當前掛起的鎖定。

3)、釋放故障程序使用的資源。

4)檢查程序,重啟已死程序

5. ckpt程序

ckpt(checkpoint,檢查點)程序出現時,系統對全部資料庫檔案及控制檔案的檔案頭的同步號進行修改,以保證資料庫的同步。

1)、為了防止例項崩潰,為了盡快進行例項恢復的程序。

2)、檢查點包括兩種:完全檢查點、增量檢查點。

3)、完全檢查點只有下面兩種情況下被觸發:

1,使用者發出alter system checkpoint;

2,除了shutdown abort以外的其他方式正常關閉資料庫。

6.arch程序

解除安裝oracle 11g

估計和以前的版本一樣,先刪除物理檔案,然後再刪除登錄檔的檔案。大致方法如下 1 刪除物理檔案 1 oracle安裝檔案。2 系統目錄下,program files檔案下的oracle檔案 2 登錄檔中大概有這麼幾個地方 hkey local machine software 刪除oracle目錄 h...

oracle 11G 解除安裝

oracle deinstall deconfig tool start check operation start 安裝檢查配置開始 選擇進行解除安裝的 oracle 主目錄型別為 sidb 檢查主產品清單位置是否存在 c program files oracle inventory 安裝檢查配置...

oracle 11g 解除安裝

準備把之前的oracle卸了重新裝一遍,打算裸敲個web專案 完全解除安裝oracle11g步驟 1 首先停止所有oracle服務,右鍵我的電腦 管理 服務 在o開頭的服務裡,停掉所有的orcl或是oracle開頭的 2 開始選單裡找到oracle orahome81 oracle安裝產品 univ...