模式的概念及進程的概念_第1頁
模式的概念及進程的概念_第2頁
模式的概念及進程的概念_第3頁
模式的概念及進程的概念_第4頁
模式的概念及進程的概念_第5頁
已閱讀5頁,還剩5頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、1 模式的概念:模式是一系列邏輯數據結構或對象的集合。一個模式只能夠被一個數據用戶所擁有,并且模式的名稱與這個用戶的名稱相同。從數據庫理論的角度看,模式是數據庫中存儲的數據的一個邏輯表示或描述,是一系列數據結構和數據對象的集合(既可以是全局邏輯描述也可是局部邏輯描述)。調度進程:DDN它是位于用戶進程和共享進程之間的關鍵進程,負責將請求隊列中的用戶進程分配給空閑的服務進程處理,并將處理后的結果返回給用戶進程。在一個實例中可以同時運行同時多個調度進程,但是至少要為Oracle數據庫所用的每種網絡協議建立一個調度進程。在共享服務器操作模式下,由監聽程序來接受用戶端傳來的用戶進程請求,然后將用戶進程

2、請求交給合適的調度進程處理。如果監聽程序無法找到一個合適的調度進程,它將啟動一個服務進程來為用戶進程提供服務。這個專用服務進程并不屬于實例,而是oracle網絡結構中的一個進程。 服務進程:在共享服務器操作模式下,每個服務進程能夠為任何一個用戶進程提供服務,而不是固定地為一個用戶進程提供服務。共享服務器進程的PGA區并不包括任何與用戶相關的數據,因為這些數據所有的服務進程都將使用到。在共享服務進程的PGA區中,只包含與共享服務進程本身相關的私有SQL工作區部分,其他與會話相關的私有sql工作區部分都保存在SGA區中,這樣所有的服務進程都可以訪問任何一個會話的信息。 .共享服務器操作模式下處理用

3、戶進程的過程:1。用戶通過使用Oracle工具或執行應用程序在客戶端創建一個用戶進程,該用戶進程將嘗試連接到一個數據庫實例。2??蛻舳擞嬎銠C通過網絡與數據庫服務器建立連接。位于數據庫中的Oracle監聽程序探測到用戶進程請求后,首先驗證用戶進程提供的用戶和口令,驗證通過后將該用戶進程分配給一個調度進程。3。當某個共享服務進程空閑時,它從請求隊列中取出一條處理后的SQL語句。4。共享服務器進程對這條SQL語句進行解析和執行,最后得到它所請求的數據。5。共享服務進程對這條SQL語句進行解析和執行,最后得到它所請求的數據。6。調度程序定期地檢查返回隊列,如果他發現在返回隊列中有自己送出請求的處理結果

4、,則將結果取出。7。調度程序將處理結果返回給用戶進程。創建實例時啟動的共享服務進程數量由初始化參數SHARED_SERVERS。在實例運行過程中,Oracle會根據請求隊列長度自動調整共享服務器的數量。實例中能創建的共享服務進程數量不能超出由初始化參數MAX_SHARED_SERVERS指定的值。 共享服務器操作模式:1。共享服務器操作模式的概念:實質是由少數服務進程為大量用戶進程提供服務,使這些進程始終處于繁忙狀態,這就是Oracle數據庫的共享服務器操作模式。2。共享服務器操作模式的結構:在創建實例時,每個調度進程將自己的監聽地址告訴Oracle監聽程序,監聽程序將根據監聽地址把用戶進程的

5、請求傳遞給相應的調度進程。一個Oracle實例至少要為它所支持的每一個網絡協議啟動一個調度進程。當用戶進程請求連接時,監聽程序首先檢查該用戶進程是否能夠使用共享服務進程。如果可以,監聽程序將這個用戶進程的請求傳遞給當前負荷最輕的調度進程。 共享服務器操作模式:1。共享服務器操作模式的概念:實質是由少數服務進程為大量用戶進程提供服務,使這些進程始終處于繁忙狀態,這就是Oracle數據庫的共享服務器操作模式。 數據庫操作模式數據庫為用戶進程提供服務的方式叫做數據庫操作模式。一、專用服務器操作模式:1。專用服務器操作模式的概念:在專用服務器操作模式中,Oracle為每一個連接到實例的用戶進程啟動一個

6、專門的服務進程。一個專用服務器進程僅為一個用戶進程提供服務。各個專用服務進程之間是完全獨立的,它們不需要共享數據。在用戶進程連接到實例的整個過程中,專用服務器進程一直存在,直到用戶進程斷開連接它才被終止。2。專用服務器操作模式下處理用戶進程:1。用戶通過使用Oracle工具或執行應用程序在客戶端創建一個用戶進程,該用戶進程將嘗試連接到一個數據庫實例。2。客戶端計算機通過網絡與數據庫服務器建立連接,位于數據庫服務器中的Oracle監聽程序探測到用戶進程請求后,首先驗證用戶進程提供的用戶名和口令,通過后建立一個專用服務器進程為該用戶進程提供服務。3。用戶提交一條SQL語句。4。專用服務器進程首先判

7、斷在共享SQL工作區中是否存在類似的SQL語句。若不存在,它將為這條SQL語句分配新的共享SQL工作區。5。解析完成后,服務進程開始在數據庫緩存中尋找這條SQL語句對應的數據。6。開始執行SQL語句。7。將結構返回給用戶。 Dnnn調的程序進程:它實際上時多線程服務器的組成部分,它以后臺進程的形式運行。它接受用戶進程的請求,將它們放入到請求隊列中,然后為請求隊列中的用戶進程分配一個服務進程。 ARCn歸檔進程:當數據庫運行在歸檔模式下時,歸檔進程ARCn負責在日志切換后將已經寫滿的重做日志文件復制到歸檔目標中,以防止寫滿的重做日志文件被覆蓋。只有數據庫運行在歸檔模式下,ARCn才啟動。要啟動它

8、,初始化參數ARCHIVE_LOG_START必須設置為TRUE。 RECO恢復進程:負責在分布式數據庫環境中自動恢復那些失敗的分布事務。如果在分布式事務處理下(初始化參數DISTRIBUTED_TRANSACTIONS的值設置為大于0,RECO進程會自動啟動)。當某個分布式事務由于網絡連接故障或者其他原因而失敗時,RECO進程將嘗試與該事務相關的所有數據庫進行聯系,以完成對失敗事務的處理工作。負責在分布式數據庫環境中自動恢復那些失敗的分布事務。如果在分布式事務處理下(初始化參數DISTRIBUTED_TRANSACTIONS的值設置為大于0,RECO進程會自動啟動)。當某個分布式事務由于網絡

9、連接故障或者其他原因而失敗時,RECO進程將嘗試與該事務相關的所有數據庫進行聯系,以完成對失敗事務的處理工作。 PMON進程監視進程:負責對失敗的用戶進程或服務進程進行恢復,并釋放進程所占用的資源。用戶可能關閉客戶端程序,但是卻沒有從數據庫中退出,或者由于網絡的突然中斷而造成一個數據庫連接的異常終止。這時,Oracle將PMON進程來啟動清除中斷或失敗的用戶進程,包括清除非正常中斷的用戶進程留下的孤兒會話,回退未提交的事務,釋放會話所占用的鎖、SGA區、PGA區等資源。此外,它還會定期的檢查調度程序和服務程序進程的狀態。SMION相似,PMON也會定期的被喚醒。 SMON系統監視進程:系統監視

10、進程是在實例啟動時負責對數據庫進行恢復操作。如果上一次數據庫是非正常關閉的,當下一次啟動實例時,它會自動讀取重做日志文件,對數據庫進行恢復。此外,它還有兩個任務:*在臨時段或臨時表空間中回收不再使用的存儲空間。*將各個表空間中的空閑空間碎片合并在一起。在實例運行期間,它也可以定期地被喚醒。 檢查點的相關初始化參數3。檢查點的相關初始化參數:*LOG_CHECKPOINT_TIMEOUT這個參數用于指定檢查點執行的最大間隔時間。*LOG_CHECKPOINT_INTERVAL這個參數用于指定在出現檢查點之前必須寫入重做日志文件中的操作系統塊的數量。*LOG_CHECKPOINT_TO_ALERT

11、用于設置是否將檢查點信息記錄到警告日志中。 CKPT檢查點進程CKPT檢查點進程1。檢查點的概念:“檢查點”是一個事件。當該事件發生時,數據庫緩存中的臟緩存塊被寫入數據文件,同時Oracle將對數據庫控制文件和數據文件進行更新,以記錄下當前的數據庫結構和狀態。在執行了一個檢查點后,Oracle知道自己所有以提交事務對數據庫所做的更改已經全部被寫入到硬盤中了,此時數據庫處于一個完整狀態。在發生數據庫崩潰后,只要將數據庫恢復到上一個檢查點執行時刻即可。2。CKPT進程的工作。*執行檢查點和更新控制文家和數據文件*將臟緩存塊寫入數據文件的任務交給DBWR進程完成。 快速提交和組提交2??焖偬峤唬寒斢?/p>

12、戶提交一條COMMIT語句時,LGWR進程會立即將一條提交記錄寫入到重做日志文件中,然后再開始寫入與該事務相關的重做信息。這時事務產生的臟緩存塊并不會立即被DBWR進程寫入數據文件,這稱為“快速提交”機制。事務提交成功后,Oracle將為該事務生成一個系統變更碼(SCN)。事務的scn將同時記錄在它的提交記錄和重做記錄中。它還有個任務:實例沒有啟動CKPT進程,則由LGWR進程來完成檢查點執行任務。3。組提交:數據庫中同時存在許多事務,LGWR進程在寫入重做日志文件時可以采取“組提交”的方式。一個用戶提交事務時,LGWR進程開始將該進程的重做記錄寫入硬盤。如果在寫入的過程中有其他多個用戶也執行

13、COMMIT語句提交事務,這時LGWR進程不能立即將這些事務的重做記錄寫入硬盤,而必須等待當前的寫操作完成。當第一個事務的重做記錄都被寫入到硬盤中后,LGWR進程將被重做日志緩存中的數據一次性全部寫入重做日志文件。 LGWR日志寫文件LGWR日志寫文件:日志寫文件負責將重做日志緩存中的重做記錄寫入到聯機重做日志文件。前面已經提到,重做日志緩存是一個循環結構,在LGWR進程將緩存中的數據寫入重做日志文件的同時,Oracle還能夠繼續向緩存中寫入新的數據。1。將緩存數據寫入重做日志文件的情況:*用戶通過COMMIT語句提交當前事務。*重做日志緩存被寫滿1/3時。*DBWR進程開始將臟數據塊寫入數據

14、文件。*每隔3秒,即發生一次超時,此時會啟LGWR。與DBWR進程相關的初始化參數2。與DBWR進程相關的初始化參數:*DB_WRITER_PRICESSES這個參數用于設置創建實例時啟動的DBWR后臺進程的數量。*DB_BLOCK_CHECKPOINT_BATCH這個參數用于設置每個檢查點發生時,DBWR進程寫入的臟緩存塊的最大數目。*DB_BLOCK_RLU_LATCHES這個參數用于設置數據庫緩存區中LRU的數量。在多處理器系統中,它通常設為處理器數目的一半。 BDWR(數據庫寫進程)BDWR(數據庫寫進程):數據庫寫進程DBWR負責將數據庫緩存中的臟數據緩存塊成批寫入到數據文件中。默認

15、情況下,Oracle只在創建實例時啟動一個DBWR進程(稱為DBWR)。如果數據庫中的數據更改操作十分頻繁,DBA可以啟動等多的DBWR進程以提高寫入能力。Oracle最多允許啟動9個額外的DBWR進程,但是進程數目不應超過系統CPU的數目,因為每個處理器同時只能運行一個DBWR進程。在數據庫緩存區中,如果某個緩存塊的數據被修改,它將被標記為臟。但是緩存塊并不是一旦產生就立即被DBWR進程寫入數據庫文件。另外,DBWR進程也不是將所有的臟緩存塊寫入數據文件。因為臟緩存塊一旦被寫入數據文件,它將被標記為空閑緩存塊,其中保存的數據將丟失。通過LRU算法能夠解決這個問題。最近未被訪問過的緩存塊被標記

16、為“冷緩存塊”,DBWR進程只將那些同時被標記為“臟”和“冷”的緩存塊寫入數據文件,這樣,那些經常被訪問的臟緩存塊將繼續留在緩存中。1。將臟緩存塊寫入數據文件的情況:*當用戶執行Insert或Update等操作時,會首先將插入的數據寫入數據庫緩存。*當檢查點發生時,將啟動DBWR進程。*當數據庫緩存的LRU列表的長度達到初始化DB_BLOCK_WRTCH_BATCH指定值的一半時DBAWR進程將被啟動。*若發生超時(大約3秒鐘內未被啟動),DBWR進程將被啟動。后臺進程后臺進程:oracle進程oracle進程:1。服務進程:它是由oracle自身創建,用于處理連接到實例中的用戶進程所提出的請

17、求。oracle通過創建服務器進程為連接到數據庫實例中的進程服務。在9i中可以同時存在兩種類型的服務進程:*專用服務進程,一個專用服務進程只能為一個用戶進程提供服務。*共享服務進程,一個共享服務進程可以為多個用戶進程提供服務。服務進程的任務:*解析并執行用戶所提交的sql語句;*在sga區的數據庫緩存中搜索用戶進程所訪問的數據,如不存在,則從硬盤中讀取。*將數據返回給用戶進程。2。后臺進程:主要作用:是以最有效的方式為并發建立的多個用戶進程提供oracle的系統服務,這些系統服務包括進行i/o操作、監視各個進程的狀態、維護系統的性能和可靠性等。*數據庫寫進程(DBWn)*日志寫進程(LGWR)

18、*檢查點進程(CKPT)*系統監視進程(SMON)*進程監視進程(PMON)*歸檔進程(ARCn)*恢復進程(RECO)調度程序進程(Dnnn) 用戶進程用戶進程:當用戶執行一個oracle應用程序時,或者啟動一個oracle工具時,oracle將創建一個用戶進程來執行相應的用戶任務?!斑B接”和“會話”:*連接是一個用戶進程與數據庫實例之間的一條通信路徑。*會話是一個用戶到數據庫的指定連接。所以,會話是通過連接建立的。同一個用戶可以通過建立多個連接來創建到oracle數據庫的多個會話。 實例進程結構實例進程結構:它是操作系統中一個獨立的可以調度的活動,用于完成指定的任務。進程與程序的區別在于前

19、者是一個動態概念,后者是一個靜態實體;程序僅僅是指令的有序集合,而進程則強調執行過程。進程可以動態地創建,完成任務后即會消亡。1。進程類型:在oracle系統工作過程中,主要設計到如下兩類進程:*用戶進程:在用戶連接數據庫時會創建一個用戶進程。*oracle進程:oracle進程在創建實例時由oracle本身產生,執行的是oracle自身的代碼,用于完成特定的服務功能。一個完整的oracle實例由sga區和一系列后臺進程組成,如圖:查詢pga區查詢pga區:*v$sysstat*v$sesstat*v$pgastat*v$sql_workarea*v$sql_workarea_active s

20、ql工作區內存分配sql工作區內存分配:在oracle中,通過引入一個新的初始化參數pga_aggregate_target,解決了設置pga區中sql工作區大小的難題。如果設置了初始化參數pga_aggregate_target,其他pga區相關的area_size參數就不需要再進行設置了。 設置sql工作區設置sql工作區:1。sql工作區的概念:用戶在執行一些包含特殊操作的sql語句時,需要在處理用戶會話的服務進程的pga區中創建一些專用的內存結構,這些內存結構統稱為sql工作區。在執行比較復雜的查詢時,常常需要在pga中創建一個比較大的動態緩存區,用戶專門執行如下一些必須在內存中進行的

21、操作:*排序*連接*集合運算這些緩存區稱為“sql工作區”。比如一條sql語句在執行過程中需要進行大量排序,會在pga中創建一個專用來緩存記錄的排序區;如果一條查詢語句在執行過程中需要進行散列連接操作,將在pga中創建一個專門用來緩存左連接數據的散列區。2。sql工作區的特點:排序區是最常使用的一種sql工作區,下面將以它為例介紹sql工作區的一些工作特點。dba可以調整用戶使用的排序區的大小,使用更大的排序區能夠顯著地提高那些需要進行大量排序操作的sql語句的執行速度。每個用戶能夠使用的最大排序區由初始化參數sort_area_size指定。語句執行完畢后排序區保留的大小由初始化參數sort

22、_area_retained_size指定會話內存區2。會話內存區:會話內存區由于保存用戶會話的變量(登錄信息)以及其他與會話相關的信息。如果數據庫處于共享服務器操作模式下,會話內存區將位于sga區中而不是pga區中,因為會話信息被所有的共享服務器進程所使用。如果數據庫處于專用服務器操作模式下,會話內存區將保存為這個會話提供服務的專用服務器進程的pga去中。這時只有這個服務器進程需要使用該會話的會話信息。游標游標:在開發oracle應用程序時(比如plsql或oci程序),將會使用到“游標(Cursors)”的概念。一個游標可以看作是命名的數據庫連接資源。應用程序通過創建并打開一個游標在數據庫中獲取或更新數據。對私有sql工作區的操作是由游標完成的,因此,一個用戶能夠使用的私有sql工作區數目取決與他能打開的游標數目。通過設置初始化參數oper_cursors可以限制用戶能夠同時打開的游標數目,該參數的默認值為50。私有sql工作區

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論