oracle基本組件概覽_第1頁
oracle基本組件概覽_第2頁
oracle基本組件概覽_第3頁
oracle基本組件概覽_第4頁
oracle基本組件概覽_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

基本組件概覽 Oracle 體系結(jié)構(gòu)包括很多基本組件,將詳細(xì)介紹這些組件。 Oracle 服務(wù)器:Oracle 服務(wù)器中包含多種文件結(jié)構(gòu)、進(jìn)程結(jié)構(gòu)和內(nèi)存結(jié)構(gòu);但是,處理 SQL 語句時,并非所有這些結(jié)構(gòu)都會用到。某些結(jié)構(gòu)用于提高數(shù)據(jù)庫的性能,確保該數(shù)據(jù)庫在遇到軟件或硬件錯誤時可以恢復(fù),或者執(zhí)行維護(hù)該數(shù)據(jù)庫所需的其它任務(wù)。Oracle 服務(wù)器包括一個 Oracle 例程和一個 Oracle 數(shù)據(jù)庫。 數(shù)據(jù)庫服務(wù)器是信息管理的關(guān)鍵。一般來說,服務(wù)器必須可靠地管理多用戶環(huán)境中的大量數(shù)據(jù),以便多個用戶能夠同時訪問同一數(shù)據(jù)。所有這一切都必須在保證高性能的同時進(jìn)行。數(shù)據(jù)庫服務(wù)器還必須防止未經(jīng)授權(quán)的訪問,并為故障恢復(fù)提供有效的解決方案。Oracle 例程:Oracle 例程是后臺進(jìn)程和內(nèi)存結(jié)構(gòu)的組合。只有啟動例程后,才能訪問數(shù)據(jù)庫中的數(shù)據(jù)。每次啟動例程時,會分配系統(tǒng)全局區(qū) (SGA) 并啟動 Oracle 后臺進(jìn)程。后臺進(jìn)程代表調(diào)用進(jìn)程執(zhí)行各種功能。它們把為每個用戶運行的多個 Oracle 程序所處理的功能統(tǒng)一起來。后臺進(jìn)程執(zhí)行輸入/輸出 (I/O),并監(jiān)視其它 Oracle 進(jìn)程來提高并行性,從而使性能和可靠性更加優(yōu)越。 Oracle 例程由系統(tǒng)全局區(qū) (SGA) 內(nèi)存結(jié)構(gòu)和用于管理數(shù)據(jù)庫的后臺進(jìn)程組成。例程是通過使用特定于每個操作系統(tǒng)的方法來標(biāo)識的。例程一次只能打開和使用一個數(shù)據(jù)庫。建立連接和創(chuàng)建會話用戶只有在連接到例程后,才能向 Oracle 數(shù)據(jù)庫提交 SQL 語句。 用戶啟動 SQL*Plus 之類的工具,或者運行使用 Oracle Forms 之類的工具開發(fā)的應(yīng)用程序。該應(yīng)用程序或工具將作為用戶進(jìn)程來執(zhí)行。 在最基本的配置中,用戶登錄到 Oracle 服務(wù)器時,運行 Oracle 服務(wù)器的計算機(jī)上就會創(chuàng)建一個進(jìn)程。這個進(jìn)程稱為服務(wù)器進(jìn)程。服務(wù)器進(jìn)程代表客戶機(jī)上運行的用戶進(jìn)程與 Oracle 例程進(jìn)行通信。服務(wù)器進(jìn)程代表用戶執(zhí)行 SQL 語句。 連接:連接是用戶進(jìn)程和 Oracle 服務(wù)器之間的通信路徑。數(shù)據(jù)庫用戶可以采用以下三種方式之一連接到 Oracle 服務(wù)器: 用戶登錄到運行 Oracle 例程的操作系統(tǒng)上,然后啟動訪問該系統(tǒng)中的數(shù)據(jù)庫的應(yīng)用程序或工具。通信路徑是使用主機(jī)操作系統(tǒng)上的進(jìn)程間通信機(jī)制建立的。 用戶在本地計算機(jī)上啟動應(yīng)用程序或工具,然后通過網(wǎng)絡(luò)連接到運行 Oracle 例程的計算機(jī)。在這個稱為客戶機(jī)/服務(wù)器的配置中,用戶和 Oracle 服務(wù)器使用網(wǎng)絡(luò)軟件進(jìn)行通信。 在三層連接中,用戶計算機(jī)通過網(wǎng)絡(luò)與應(yīng)用程序服務(wù)器或網(wǎng)絡(luò)服務(wù)器進(jìn)行通信,這些服務(wù)器又通過網(wǎng)絡(luò)與運行 Oracle 例程的計算機(jī)連接。例如,用戶在網(wǎng)絡(luò)中的一臺計算機(jī)上運行瀏覽器來使用位于 NT 服務(wù)器上的應(yīng)用程序,該 NT 服務(wù)器又從 UNIX 主機(jī)上運行的 Oracle 數(shù)據(jù)庫中檢索數(shù)據(jù)。 會話:會話是用戶與 Oracle 服務(wù)器的一種特定連接。會話在 Oracle 服務(wù)器驗證用戶后啟動,當(dāng)用戶退出或出現(xiàn)異常終止時會話結(jié)束。對某個具體的數(shù)據(jù)庫用戶來說,如果該用戶從很多工具、應(yīng)用程序或者終端同時登錄,則可能有很多并發(fā)會話。除了一些專用的數(shù)據(jù)庫管理工具以外,啟動數(shù)據(jù)庫會話還要求 Oracle 服務(wù)器可供使用。 注:在此處所講的連接類型中,用戶進(jìn)程和服務(wù)器進(jìn)程之間存在一對一的通信關(guān)系,這稱作專用服務(wù)器連接。使用共享服務(wù)器 (Shared Server) 配置時,多個用戶進(jìn)程可以共享服務(wù)器進(jìn)程。Oracle 數(shù)據(jù)庫:Oracle 數(shù)據(jù)庫包含操作系統(tǒng)文件(也稱為數(shù)據(jù)庫文件),這些文件為數(shù)據(jù)庫信息提供了實際的物理存儲。數(shù)據(jù)庫文件用于確保數(shù)據(jù)一致性并能在例程失敗時得以恢復(fù)。 數(shù)據(jù)庫的一般用途是存儲和檢索相關(guān)信息。Oracle 數(shù)據(jù)庫具有邏輯結(jié)構(gòu)和物理結(jié)構(gòu)。數(shù)據(jù)庫的物理結(jié)構(gòu)是數(shù)據(jù)庫中操作系統(tǒng)文件的集合。Oracle 數(shù)據(jù)庫包含以下三類文件: 數(shù)據(jù)文件,包含數(shù)據(jù)庫中的實際數(shù)據(jù) 重做日志文件,包含數(shù)據(jù)庫的更改記錄,可以在出現(xiàn)故障時恢復(fù)數(shù)據(jù) 控制文件,包含維護(hù)和驗證數(shù)據(jù)庫完整性所需的信息 其它關(guān)鍵文件:非數(shù)據(jù)庫文件用于配置例程、驗證特權(quán)用戶以及在磁盤出現(xiàn)故障時 恢復(fù)數(shù)據(jù)庫。 Oracle 服務(wù)器還使用一些其它文件,這些文件并不是數(shù)據(jù)庫的一部分: 參數(shù)文件,用來定義 Oracle 例程的特性。例如,它包含調(diào)整 SGA 中一些內(nèi)存結(jié)構(gòu)大小的參數(shù)。 口令文件 驗證哪些用戶有權(quán)啟動和關(guān)閉 Oracle 例程。 歸檔的重做日志文件 是重做日志文件的脫機(jī)副本,當(dāng)必須從介質(zhì)失敗中進(jìn)行恢復(fù)時可能會需要這些副本。用戶進(jìn)程和服務(wù)器進(jìn)程:執(zhí)行 SQL 語句時,用戶進(jìn)程和服務(wù)器進(jìn)程是其中涉及的主要進(jìn)程;但是,其它進(jìn)程也會有助于服務(wù)器完成 SQL 語句的處理。 其它進(jìn)程:還有很多供其它選件使用的其它進(jìn)程,例如,高級排隊 (Advanced Queuing)、實時應(yīng)用集群 (Real Application Clusters)、共享服務(wù)器 (Shared Server) 和 高級復(fù)制 (Advanced Replication) 等。物理結(jié)構(gòu) Oracle 數(shù)據(jù)庫的物理結(jié)構(gòu)包括以下三種文件類型:控制文件、數(shù)據(jù)文件和重做日志文件。 內(nèi)存結(jié)構(gòu)Oracle 的內(nèi)存結(jié)構(gòu)由兩個內(nèi)存區(qū)組成,分別是: 系統(tǒng)全局區(qū) (SGA) :在例程啟動時分配,是 Oracle 例程的基本組件 程序全局區(qū) (PGA) :在服務(wù)器進(jìn)程啟動時分配 系統(tǒng)全局區(qū) (SGA)SGA包括以下幾種內(nèi)存結(jié)構(gòu): 共享池 數(shù)據(jù)庫緩沖區(qū)高速緩存 重做日志緩沖區(qū) 其它結(jié)構(gòu)(例如鎖定和栓鎖管理以及統(tǒng)計數(shù)據(jù)) 在SGA中還可配置其它兩種內(nèi)存結(jié)構(gòu): 大型共享池 Java 池SGA 也稱作共享全局區(qū),用于存儲數(shù)據(jù)庫進(jìn)程共享的數(shù)據(jù)庫信息。它包含有關(guān) Oracle 服務(wù)器的數(shù)據(jù)和控制信息,在 Oracle 服務(wù)器所在計算機(jī)的虛擬內(nèi)存中分配。要查看 SGA 內(nèi)存的分配情況,可以使用下面的語句: SQL SHOW SGA:動態(tài) SGA:從 Oracle9i 開始,動態(tài) SGA 實施了一種體系結(jié)構(gòu),可以對 SGA 配置進(jìn)行更改,而不必關(guān)閉例程。這樣,在不關(guān)閉例程的情況下,就可以更改數(shù)據(jù)庫緩沖區(qū)高速緩存和共享池的大小。因此,開始時可將數(shù)據(jù)庫緩沖區(qū)高速緩存和共享池配置為一個較小的值,然后根據(jù)它們各自的工作量增減,但最大值不能超過由 SGA_MAX_SIZE 指定的值。 調(diào)整 SGA 的大?。?SGA 的大小由幾個初始化參數(shù)決定。對 SGA 的大小影響最大的參數(shù)有: DB_CACHE_SIZE:標(biāo)準(zhǔn)塊的高速緩存大小。對于 UNIX,缺省值是 48 MB,對于 NT, 缺省值是 52 MB LOG_BUFFER:為重做日志緩沖區(qū)分配的字節(jié)數(shù) SHARED_POOL_SIZE:專用于共享 SQL 和 PL/SQL 的內(nèi)存區(qū)的大小(以字節(jié)為單位)。缺省值是 16 MB。如果是 64 位,則缺省值是 64 MB LARGE_POOL_SIZE:大型共享池的大小。缺省值是零(如果未將 init.ora 參數(shù) PARALLEL_AUTOMATIC_TUNING 設(shè)置為 TRUE,則自動計算缺省值。) JAVA_POOL_SIZE:Java 池的大小。缺省值是 24 MB 因此,SGA 的大小不能超過 SGA_MAX_SIZE - DB_CACHE_SIZE - LOG_BUFFER SHARED_POOL_SIZE - LARGE_POOL_SIZE - JAVA_POOL_SIZE。 分配單位: 粒組是一個連續(xù)虛擬內(nèi)存分配單位。粒組的大小取決于估算的 SGA 的總大小,這個總大小是根據(jù)參數(shù) SGA_MAX_SIZE 的值計算的。 如果估算的 SGA 的大小小于 128 MB,那么粒組大小是 4 MB 否則為 16 MB組件(數(shù)據(jù)庫緩沖區(qū)高速緩存和共享池)能夠以粒組為單位進(jìn)行增減。對于擁有粒組的每個組件而言,分配給該組件的粒組數(shù)、對該組件執(zhí)行但暫時掛起的任何操作(例如,通過 ALTER SYSTEM 分配粒組、通過 ALTER SYSTEM 釋放粒組,相應(yīng)的自身優(yōu)化),以及以粒組為單位的目標(biāo)大小都將由 V$BUFFER_POOL 視圖來跟蹤和顯示。啟動例程時,Oracle 服務(wù)器將分配粒組條目,每個粒組使用一個條目來支持 SGA_MAX_SIZE 字節(jié)的地址空間。繼續(xù)啟動時,每個組件將根據(jù)需要獲取足夠的粒組。SGA 的最低配置是三個粒組(一個粒組用于固定的 SGA(包括重做緩沖區(qū));一個粒組用于數(shù)據(jù)庫緩沖區(qū)高速緩存;另一個粒組用于共享池)。共享池用于存儲:最近執(zhí)行的 SQL 語句 最近使用的數(shù)據(jù)定義 它包括以下兩個與性能相關(guān)的關(guān)鍵內(nèi)存結(jié)構(gòu): 庫高速緩存 數(shù)據(jù)字典高速緩存 其大小由 SHARED_POOL_SIZE 參數(shù)確定共享池環(huán)境既包含固定結(jié)構(gòu),也包含可變結(jié)構(gòu)。固定結(jié)構(gòu)的大小相對保持不變,而可變結(jié)構(gòu)的大小會根據(jù)用戶和程序的需求增減。固定結(jié)構(gòu)和可變結(jié)構(gòu)的實際大小由一個初始化參數(shù)和 Oracle 內(nèi)部算法來確定。 調(diào)整共享池大?。?由于共享池用于可以全局共享的對象,如可重復(fù)使用的 SQL 執(zhí)行計劃、PL/SQL 程序包、過程、函數(shù)和游標(biāo)信息,所以必須對它的大小進(jìn)行調(diào)整,以滿足固定區(qū)和可變區(qū)的需要。分配給共享池的內(nèi)存由 SHARED_POOL_SIZE 初始化參數(shù)確定。使用 ALTER SYSTEM SET,便可以動態(tài)地重新調(diào)整它的大小。經(jīng)過性能分析后,就可以調(diào)整它的大小,但 SGA 的總大小不能超過 SGA_MAX_SIZE。 庫高速緩存 庫高速緩存的大小視所定義的共享池大小而定。內(nèi)存分配是在對語句進(jìn)行語法分析或調(diào)用程序單元時進(jìn)行。如果共享池的大小太小,就會將語句連續(xù)重新載入庫高速緩存,從而使性能受到影響。庫高速緩存由算法 LRU 來管理。高速緩存填滿時,將從庫高速緩存中刪除最近很少使用的執(zhí)行路徑和語法分析樹,以便為新條目騰出空間。如果某些 SQL 或 PL/SQL 語句未再次使用,它們最終會被刪除。 庫高速緩存包括以下兩個結(jié)構(gòu): 共享 SQL:共享 SQL 為針對數(shù)據(jù)庫運行的 SQL 語句存儲并共享執(zhí)行計劃和語法分析樹。下次運行同一 SQL 語句時,這個語句就能利用共享 SQL 提供的語法分析信息來加快其執(zhí)行速度。要確保 SQL 語句隨時可以使用共享 SQL 區(qū),文本、方案和綁定變量必須完全相同。 共享 PL/SQL:共享 PL/SQL 區(qū)存儲并共享最近執(zhí)行的 PL/SQL 語句。經(jīng)過語法分析和編譯的程序單元和過程(函數(shù)、程序包和觸發(fā)器)都存儲在這個區(qū)中。 數(shù)據(jù)字典高速緩存 數(shù)據(jù)字典高速緩存也稱作字典高速緩存或行高速緩存。將數(shù)據(jù)字典信息同時高速緩存到數(shù)據(jù)庫緩沖區(qū)和共享池內(nèi)存中,可以提高性能。有關(guān)數(shù)據(jù)庫(用戶帳戶數(shù)據(jù)、數(shù)據(jù)文件名、段名、區(qū)的位置、表的說明和用戶權(quán)限)的信息都存儲在數(shù)據(jù)字典表中。當(dāng)服務(wù)器需要用到這類信息時,將會讀取數(shù)據(jù)字典表,返回的數(shù)據(jù)將存儲在數(shù)據(jù)字典高速緩存中。 調(diào)整數(shù)據(jù)字典的大?。?數(shù)據(jù)字典的整體大小取決于共享池的大小,并由數(shù)據(jù)庫進(jìn)行內(nèi)部管理。如果數(shù)據(jù)字典高速緩存太小,那么數(shù)據(jù)庫必須對數(shù)據(jù)字典表進(jìn)行反復(fù)地查詢,才能獲得服務(wù)器所需要的信息。這些查詢稱作遞歸調(diào)用,它在速度上要慢于對數(shù)據(jù)字典高速緩存所進(jìn)行的直接查詢,因為直接查詢不使用 SQL。處理查詢時,Oracle 服務(wù)器進(jìn)程在數(shù)據(jù)庫緩沖區(qū)高速緩存中查找任何所需的塊。如果未在數(shù)據(jù)庫緩沖區(qū)高速緩存中找到這個塊,服務(wù)器進(jìn)程就從數(shù)據(jù)文件讀取這個塊,并在數(shù)據(jù)庫緩沖區(qū)高速緩存中放置一個副本。由于對同一個塊的后續(xù)請求可以在內(nèi)存中找到這個塊,因此這些請求可能不需要進(jìn)行物理讀取。Oracle 服務(wù)器使用 LRU 算法來釋放近期未被訪問的緩沖區(qū),以便在數(shù)據(jù)庫緩沖區(qū)高速緩存中為新塊騰出空間。數(shù)據(jù)庫緩沖區(qū)高速緩存 存儲已從數(shù)據(jù)文件中檢索到的數(shù)據(jù)塊的副本 能夠大幅提高獲取和更新數(shù)據(jù)時的性能 通過 LRU 算法管理 主塊的大小由 DB_BLOCK_SIZE 確定 處理查詢時,Oracle 服務(wù)器進(jìn)程在數(shù)據(jù)庫緩沖區(qū)高速緩存中查找任何所需的塊。如果未在數(shù)據(jù)庫緩沖區(qū)高速緩存中找到這個塊,服務(wù)器進(jìn)程就從數(shù)據(jù)文件讀取這個塊,并在數(shù)據(jù)庫緩沖區(qū)高速緩存中放置一個副本。由于對同一個塊的后續(xù)請求可以在內(nèi)存中找到這個塊,因此這些請求可能不需要進(jìn)行物理讀取。Oracle 服務(wù)器使用 LRU 算法來釋放近期未被訪問的緩沖區(qū),以便在數(shù)據(jù)庫緩沖區(qū)高速緩存中為新塊騰出空間。調(diào)整數(shù)據(jù)庫緩沖區(qū)高速緩存的大?。?數(shù)據(jù)庫緩沖區(qū)高速緩存中每個緩沖區(qū)的大小等于一個 Oracle 塊的大小,它由DB_BLOCK_SIZE 參數(shù)來指定。數(shù)據(jù)庫緩沖區(qū)高速緩存由獨立的子高速緩存組成,子高速緩存用于緩沖區(qū)池和多個塊大小。參數(shù) DB_BLOCK_SIZE 確定主塊的大小,主塊的大小用于 SYSTEM 表空間。 以下三個參數(shù)定義了數(shù)據(jù)庫緩沖區(qū)高速緩存的大?。?DB_CACHE_SIZE:只調(diào)整缺省緩沖區(qū)高速緩存的大小,這個參數(shù)始終存在且不能設(shè)置為零 DB_KEEP_CACHE_SIZE:調(diào)整保留緩沖區(qū)高速緩存的大小,用于保留內(nèi)存中很可能會重新使用的塊 DB_RECYCLE_CACHE_SIZE:調(diào)整循環(huán)緩沖區(qū)高速緩存的大小,用于刪除內(nèi)存中重新使用的可能性很小的塊緩沖區(qū)高速緩存咨詢功能: 緩沖區(qū)高速緩存咨詢功能可以啟用和禁用統(tǒng)計信息的收集,這些統(tǒng)計信息用于預(yù)測不同高速緩存大小的行為。這些統(tǒng)計信息所提供的信息可以幫助您針對具體的工作量,調(diào)整數(shù)據(jù)庫緩沖區(qū)高速緩存的大小,以達(dá)到最佳性能。緩沖區(qū)高速緩存咨詢信息通過 V$DB_CACHE_ADVICE 視圖收集和顯示。 可以通過初始化參數(shù) DB_CACHE_ADVICE 啟用緩沖區(qū)高速緩存咨詢功能。這個參數(shù)是一個動態(tài)參數(shù),可以使用 ALTER SYSTEM 來更改??晒┦褂玫娜齻€值是 OFF、ON 和 READY。 DB_CACHE_ADVICE 參數(shù)值: OFF:咨詢功能關(guān)閉,并且沒有為咨詢功能分配內(nèi)存 ON:咨詢功能打開,并產(chǎn)生 CPU 和內(nèi)存開銷 如果參數(shù)處于 OFF 狀態(tài),在嘗試將它設(shè)置為 ON 狀態(tài)時會產(chǎn)生 ORA-4031 錯誤:當(dāng)參數(shù)切換到 ON 時,無法從共享池分配內(nèi)存。如果參數(shù)處于 READY 狀態(tài),則能正確地設(shè)置為 ON,因為此時已為咨詢功能分配內(nèi)存。 READY:咨詢功能關(guān)閉,但已經(jīng)為咨詢功能分配內(nèi)存。在實際打開咨詢功能前分配內(nèi)存可以避免產(chǎn)生 ORA-4031 錯誤。如果將參數(shù)從 OFF 狀態(tài)直接切換到 ON,可能會產(chǎn)生 ORA-4031 錯誤。 重做日志緩沖區(qū) 記錄對數(shù)據(jù)庫數(shù)據(jù)塊所做的全部更改 主要用于恢復(fù) 其中記錄的更改稱作重做條目 重做條目包含用于重新構(gòu)造或重做更改的信息 大小由 LOG_BUFFER 定義重做日志緩沖區(qū)是一個循環(huán)緩沖區(qū),它包含對數(shù)據(jù)文件塊所做的各種更改。此信息存儲在重做條目中。重做條目包含將數(shù)據(jù)恢復(fù)到使用 INSERT、UPDATE、DELETE、 CREATE、ALTER、或 DROP 操作進(jìn)行更改前的狀態(tài)所需要的信息。 調(diào)整重做日志緩沖區(qū)的大?。?重做日志緩沖區(qū)的大小由初始化參數(shù) LOG_BUFFER 定義。 大型共享池SGA 中的可選內(nèi)存區(qū) 分擔(dān)了共享池的一部分工作 用于:共享服務(wù)器的會話內(nèi)存 (UGA) I/O 服務(wù)器進(jìn)程 備份和恢復(fù)操作或 RMAN 并行執(zhí)行消息緩沖區(qū) 將 PARALLEL_AUTOMATIC_TUNING 設(shè)置為 TRUE不使用 LRU 列表 大小由 LARGE_POOL_SIZE 確定通過從大型共享池為共享服務(wù)器、Oracle XA 或并行查詢緩沖區(qū)分配會話內(nèi)存,Oracle 可將共享池主要用于高速緩存共享的 SQL 語句。這樣,便減輕了共享池中各區(qū)的工作負(fù)擔(dān)。共享池?zé)o需再提供內(nèi)存以高速緩存 SQL 語法分析樹,來支持共享服務(wù)器會話信息、I/O 以及備份和恢復(fù)進(jìn)程。由于增減共享 SQL 高速緩存的開銷降低,性能得以提高。 備份和恢復(fù): 如果設(shè)置了 BACKUP_DISK_IO= n 和 BACKUP_TAPE_IO_SLAVE = TRUE 參數(shù),則恢復(fù)管理器 (RMAN) 將使用大型共享池。如果大型共享池已經(jīng)配置,但不夠大,則在大型共享池中分配內(nèi)存就會失敗。RMAN 將錯誤消息寫入警報日志文件,而且不使用 I/O 操作進(jìn)行備份或恢復(fù)操作。 并行執(zhí)行: 如果將 PARALLEL_AUTOMATIC_TUNING 設(shè)置為 TRUE,將使用大型共享池。否則,將把這些緩沖區(qū)分配至共享池。 調(diào)整大型共享池的大?。?大型共享池的大小由 LARGE_POOL_SIZE 參數(shù)定義,單位是字節(jié)。該參數(shù)不是動態(tài)參數(shù)。 大型共享池和 LRU 列表: 大型共享池并不包含 LRU 列表。它與使用 LRU 列表的共享池中的保留空間不同。Java 池存儲Java命令的服務(wù)分析要求 在安裝并使用Java時是必需的 大小由JAVA_POOL_SIZE參數(shù)確定Java 池是一個可選設(shè)置,但如果安裝并使用 Java,則需要使用 Java 池。Java 池大小可以使用 JAVA_POOL_SIZE 參數(shù)設(shè)置,單位為字節(jié)。在 Oracle9i,Java 池的缺省大小是 24 MB。 程序全局區(qū) (PGA)程序全局區(qū)或進(jìn)程全局區(qū) (PGA) 是內(nèi)存區(qū),它包含有關(guān)單個服務(wù)器進(jìn)程或單個后臺進(jìn)程的數(shù)據(jù)和控制信息。PGA 在創(chuàng)建進(jìn)程時分配,并在終止進(jìn)程時回收。與由若干個進(jìn)程共享的 SGA 相比,PGA 是僅供一個進(jìn)程使用的區(qū)。 PGA 的內(nèi)容: PGA 內(nèi)存的內(nèi)容會因不同情況而變化,這取決于例程是在專用服務(wù)器配置還是在共享服務(wù)器配置下運行。一般來講,PGA 內(nèi)存包括下列組件: 專用 SQL 區(qū):包含綁定信息和運行時內(nèi)存結(jié)構(gòu)之類的數(shù)據(jù)。發(fā)出 SQL 語句的每個會話均擁有一個專用 SQL 區(qū)。提交同一 SQL 語句的每個用戶都擁有自己的使用單個共享 SQL 區(qū)的專用 SQL 區(qū)。因此,許多專用 SQL 區(qū)都與同一個共享 SQL 區(qū)相關(guān)聯(lián)。一個游標(biāo)的專用 SQL 區(qū)可以分成以下兩個區(qū): 永久區(qū):包含綁定信息,并且只在關(guān)閉游標(biāo)時釋放 運行時區(qū):在執(zhí)行請求時的第一步創(chuàng)建。對于 INSERT、UPDATE 和 DELETE 命令,該區(qū)在執(zhí)行語句后釋放,對于查詢操作,該區(qū)只在提取所有行或取消查詢后釋放。 專用 SQL 區(qū)的位置取決于為會話建立的連接類型。在專用服務(wù)器環(huán)境中,專用 SQL 區(qū)位于各自服務(wù)器進(jìn)程的 PGA 中。在共享服務(wù)器環(huán)境中,專用 SQL 區(qū)位于 SGA 中。 管理專用 SQL 區(qū)是用戶進(jìn)程的職責(zé)。用戶進(jìn)程可以分配的專用 SQL 區(qū)的數(shù)目始終由初始化參數(shù) OPEN_CURSORS 來限制。該參數(shù)的缺省值是 50。 會話內(nèi)存:包含為保留會話變量以及與該會話相關(guān)的其它信息而分配的內(nèi)存。對于共享服務(wù)器環(huán)境,該會話是共享的而不是專用的。 SQL 工作區(qū):用于大量占用內(nèi)存的操作,如排序、散列聯(lián)接、位圖合并和位圖創(chuàng)建。工作區(qū)的大小可進(jìn)行控制和調(diào)整。 自 Oracle9i 起,工作區(qū)的大小可以進(jìn)行自動的全局管理。要實現(xiàn)這種功能,可將 WORKAREA_SIZE_POLICY 參數(shù)設(shè)置成缺省情況下的 AUTO,同時設(shè)置 PGA_AGGREGATE_TARGET 初始化參數(shù)。DBA 可以對 PGA_AGGREGATE_TARGET 參數(shù)進(jìn)行設(shè)置,以指定該例程可以使用的 PGA 內(nèi)存的目標(biāo)聚集數(shù)目。此參數(shù)只是 一個指標(biāo),可以由 DBA 在例程一級動態(tài)修改。設(shè)置值的單位可以是字節(jié)數(shù)、千字 節(jié)數(shù)、兆字節(jié)數(shù)或吉字節(jié)數(shù)。設(shè)置完這些參數(shù)后,工作區(qū)的大小即可自動調(diào)整,這 些會話將忽略所有的 *_AREA_SIZE 參數(shù)。 專用服務(wù)器和共享服務(wù)器之間的內(nèi)存分配差異: PGA 內(nèi)存的內(nèi)容會因不同情況而變化,這取決于例程是在專用服務(wù)器配置下還是在共享服務(wù)器配置下運行。一般來講,PGA 內(nèi)存包括下列組件: 進(jìn)程結(jié)構(gòu) Oracle 利用了以下幾種進(jìn)程的優(yōu)勢: 用戶進(jìn)程:在數(shù)據(jù)庫用戶請求連接到 Oracle 服務(wù)器時 啟動 請求與 Oracle 服務(wù)器交互的程序 必須先建立連接 不與 Oracle 服務(wù)器直接交互 需要從數(shù)據(jù)庫請求信息的數(shù)據(jù)庫用戶必須先建立與 Oracle 服務(wù)器的連接。連接由 SQL*Plus 這類的數(shù)據(jù)庫接口工具請求,并開始用戶進(jìn)程。用戶進(jìn)程并不與 Oracle 服務(wù)器直接進(jìn)行交互操作,而是通過用戶程序接口 (UPI) 生成各種調(diào)用。用戶程序接口則可以創(chuàng)建會話并啟動服務(wù)器進(jìn)程。 服務(wù)器進(jìn)程:與 Oracle 例程相連接,在用戶建立會話 時啟動 直接與 Oracle 服務(wù)器交互的程序 執(zhí)行生成的調(diào)用并返回相關(guān)結(jié)果 可以是專用服務(wù)器或共享服務(wù)器 用戶建立連接后,服務(wù)器進(jìn)程便會啟動,以處理用戶進(jìn)程的請求。服務(wù)器進(jìn)程可以是專用服務(wù)器進(jìn)程或共享服務(wù)器進(jìn)程。在專用服務(wù)器環(huán)境中,服務(wù)器進(jìn)程只處理一個用戶進(jìn)程的請求。用戶進(jìn)程斷開連接后,服務(wù)器進(jìn)程就會終止。在共享服務(wù)器環(huán)境中,服務(wù)器進(jìn)程將處理多個用戶進(jìn)程的請求。服務(wù)器進(jìn)程可以通過 Oracle 程序接口 (OPI) 與 Oracle 服務(wù)器進(jìn)行通信。 后臺進(jìn)程:在 Oracle 例程啟動時啟動 維護(hù)并加強(qiáng)物理結(jié)構(gòu)與內(nèi)存結(jié)構(gòu)之間的關(guān)系 必備的后臺進(jìn)程:DBWnPMONCKPT LGWRSMON 可選的后臺進(jìn)程:ARCnLMDn RECO CJQ0LMON Snnn DnnnPnnn LCKnQMNn Oracle 體系結(jié)構(gòu)有五個必備的后臺進(jìn)程,本課將詳細(xì)介紹這些進(jìn)程。除了必備的后臺進(jìn)程列表以外,Oracle 體系結(jié)構(gòu)中還有很多可選的后臺進(jìn)程。如果選擇使用這些可選的后臺進(jìn)程,它們便會啟動。除了 ARCn 后臺進(jìn)程之外,這些可選的進(jìn)程不在本課所涉及的范圍之內(nèi)。下面列出了一些可選的后臺進(jìn)程: RECO:恢復(fù)程序 QMNn:高級排隊 ARCn:歸檔程序 LCKn: RAC 鎖管理器 例程鎖 LMON:RAC DLM 監(jiān)控程序 全局鎖 LMDn:RAC DLM 監(jiān)控程序 遠(yuǎn)程鎖 CJQ0:協(xié)調(diào)程序作業(yè)隊列后臺進(jìn)程 Dnnn:調(diào)度程序 Snnn:共享服務(wù)器 Pnnn:并行查詢從屬 數(shù)據(jù)庫寫入程序 (DBWn)服務(wù)器進(jìn)程在數(shù)據(jù)庫緩沖區(qū)高速緩存中記錄對還原塊和數(shù)據(jù)塊所做的更改。DBWn 將數(shù)據(jù)庫緩沖區(qū)高速緩存中的灰數(shù)據(jù)緩沖區(qū)寫入數(shù)據(jù)文件。這可確保數(shù)據(jù)庫緩沖區(qū)高速緩存中有足夠數(shù)量的空閑緩沖區(qū)(即當(dāng)服務(wù)器進(jìn)程需要讀取數(shù)據(jù)文件中的塊時可以覆蓋的緩沖區(qū))可用。由于服務(wù)器進(jìn)程只在數(shù)據(jù)庫緩沖區(qū)高速緩存中進(jìn)行更改,因此提高了數(shù)據(jù)庫的性能。 DBWn 延遲寫入數(shù)據(jù)文件,直到發(fā)生下列事件之一: 增量或正常檢查點灰數(shù)據(jù)緩沖區(qū)的數(shù)量達(dá)到閾值進(jìn)程掃描指定數(shù)量的塊而無法找到任何空閑緩沖區(qū)時出現(xiàn)超時實時應(yīng)用集群 (Real Application Clusters, RAC) 環(huán)境中出現(xiàn) ping 請求使一般表空間或臨時表空間處于脫機(jī)狀態(tài)使表空間處于只讀模式刪除或截斷表 執(zhí)行 ALTER TABLESPACE 表空間名 BEGIN BACKUP 操作 日志寫入器 (LGWR)LGWR 在下列情況下執(zhí)行從重做日志緩沖區(qū)到重做日志文件的連續(xù)寫入: 當(dāng)提交事務(wù)時當(dāng)重做日志緩沖區(qū)的三分之一填滿時當(dāng)重做日志緩沖區(qū)中記錄了超過 1 MB 的更改時在 DBWn 將數(shù)據(jù)庫緩沖區(qū)高速緩存中修改的塊寫入數(shù)據(jù)文件以前每隔三秒 因為恢復(fù)操作需要重做,所以 LGWR 只在重做寫入磁盤后確認(rèn)提交操作。LGWR 還可以調(diào)用 DBWn 來寫入數(shù)據(jù)文件。系統(tǒng)監(jiān)控程序 (SMON)如果 Oracle 例程失敗,那么 SGA 中尚未寫入磁盤的所有信息都會丟失。例如,操作系統(tǒng)的失敗導(dǎo)致例程失敗。例程丟失后,后臺進(jìn)程 SMON 在數(shù)據(jù)庫重新打開時自動執(zhí)行例程 恢復(fù)?;謴?fù)例程需要執(zhí)行以下步驟: 1.前滾以恢復(fù)尚未記入數(shù)據(jù)文件但已經(jīng)記入聯(lián)機(jī)重做日志中的數(shù)據(jù)。由于例程失敗時 SGA 的丟失,所以尚未將這些數(shù)據(jù)寫入磁盤。在該進(jìn)程中,SMON 讀取重做日志文件并將重做日志中記錄的更改應(yīng)用到數(shù)據(jù)塊中。由于提交的所有事務(wù)處理都已寫入重做日志,因此該進(jìn)程完全恢復(fù)了這些事務(wù)處理。2.打開數(shù)據(jù)庫以便用戶可以登錄。未被未恢復(fù)事務(wù)處理鎖定的任何數(shù)據(jù)都立即可用。3.回退未提交的事務(wù)處理。它們由 SMON 回退,或在訪問鎖定的數(shù)據(jù)時由單個服務(wù)器進(jìn)程回退。 SMON 也執(zhí)行一些空間維護(hù)功能: 它聯(lián)合或合并數(shù)據(jù)文件中空閑空間的鄰近區(qū)域。它回收臨時段,將它們作為數(shù)據(jù)文件中的空閑空間返回。 過程監(jiān)視器 (PMON)進(jìn)程失敗后,后臺進(jìn)程 PMON 通過下面的方法進(jìn)行清理: 回退用戶的當(dāng)前事務(wù)處理釋放當(dāng)前保留的所有表鎖或行鎖釋放用戶當(dāng)前保留的其它資源重新啟動已失效的調(diào)度程序 檢查點 (CKPT)每隔三秒,CKPT 進(jìn)程就會向控制文件存儲數(shù)據(jù),以標(biāo)識重做日志文件中恢復(fù)操作的起始位置,該操作稱作檢查點。檢查點的用途是確保數(shù)據(jù)庫緩沖區(qū)高速緩存中在時間點之間發(fā)生修改的所有緩沖區(qū)內(nèi)容都已寫入數(shù)據(jù)文件。這個時間點(稱作檢查點位置)是例程失敗時開始恢復(fù)數(shù)據(jù)庫的位置。DBWn 應(yīng)將數(shù)據(jù)庫緩沖區(qū)高速緩存中在該時間點之前發(fā)生修改的所有緩沖區(qū)內(nèi)容寫入數(shù)據(jù)文件。對于 Oracle9i 之前的版本,這項操作在重做日志的結(jié)尾處執(zhí)行。切換日志時,CKPT 還將這個檢查點的信息寫入數(shù)據(jù)文件的頭部。 啟動檢查點的原因如下: 確保定期向磁盤寫入內(nèi)存中發(fā)生修改的數(shù)據(jù)塊,以便在系統(tǒng)或數(shù)據(jù)庫失敗時不會丟失數(shù)據(jù)縮短例程恢復(fù)所需的時間。只需處理最后一個檢查點后面的重做日志條目以啟動恢復(fù)操作確保提交的所有數(shù)據(jù)在關(guān)閉期間均已寫入數(shù)據(jù)文件 由 CKPT 寫入的檢查點信息包括檢查點位置、系統(tǒng)更改號、重做日志中恢復(fù)操作的起始位置以及有關(guān)日志的信息等等。 注:CKPT 并不將數(shù)據(jù)塊寫入磁盤,或?qū)⒅刈鰤K寫入聯(lián)機(jī)重做日志。 歸檔程序 (ARCn)所有其它后臺進(jìn)程都是可選的,這將取決于數(shù)據(jù)庫的配置;但是,其中的 ARCn 進(jìn)程對于丟失磁盤數(shù)據(jù)后的數(shù)據(jù)庫恢復(fù)起著至關(guān)重要的作用。當(dāng)聯(lián)機(jī)重做日志文件填滿時,Oracle 服務(wù)器開始寫入下一個聯(lián)機(jī)重做日志文件。從一個重做日志到另一個重做日志的切換過程稱為日志切換。ARCn 進(jìn)程在每次日志切換時備份或歸檔已滿的日志組。在日志能夠重新使用之前,它自動將聯(lián)機(jī)重做日志歸檔,從而保留對數(shù)據(jù)庫所做的全部更改。這樣,即使磁盤驅(qū)動器損壞,DBA 也能夠?qū)?shù)據(jù)庫恢復(fù)到出現(xiàn)故障前的狀態(tài)。 歸檔重做日志文件:DBA 必須做出的一個重要決策是配置數(shù)據(jù)庫以 ARCHIVELOG 模式還是以 NOARCHIVELOG 模式操作。 NOARCHIVELOG 模式:在 NOARCHIVELOG 模式下,每次發(fā)生日志切換時,就會覆蓋聯(lián)機(jī)重做日志文件。只有重做日志組的檢查點完成后,LGWR 才會覆蓋該日志組。這就確保發(fā)生例程崩潰時提交的數(shù)據(jù)能夠得以恢復(fù)。在例程崩潰的過程中,只會丟失 SGA 中的數(shù)據(jù)。磁盤數(shù)據(jù)不會丟失,而只會丟失內(nèi)存中的數(shù)據(jù)。例如,當(dāng)操作系統(tǒng)的崩潰引起例程崩潰時。 ARCHIVELOG 模式:如果將數(shù)據(jù)庫配置為以 A

溫馨提示

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

評論

0/150

提交評論