Oracle database instance

龍山游龍發表於2015-07-11

1講:oracle資料庫例項簡介

資料庫例項是一組用於管理資料庫檔案的記憶體結構。資料庫是一組由create database語句在磁碟上建立的物理檔案。由例項管理其關聯的資料,併為資料庫使用者提供服務。

每個正在執行的 Oracle 資料庫至少與一個 Oracle 資料庫例項相關聯。因為例項存在於記憶體中,而資料庫存在於磁碟上,所以例項可以在沒有資料庫時而存在,資料庫也可以在沒有例項時存在。
oracle
例項結構

當例項啟動時, Oracle 資料庫分配一個叫做系統全域性區(SGA 的記憶體區域,並啟動一個或多個後臺程式。

SGA用於以下幾個目的:

1)維護由很多程式和執行緒同時訪問的內部資料結構

2)快取從磁碟中讀取的資料塊

3)緩衝重做資料,然後再將其寫入聯機重做日誌檔案

4)儲存 SQL 執行計劃

SGA 由執行在一臺單一計算機上的多個 Oracle 程式共享,包括伺服器程式和後臺程式。Oracle 程式與 SGA 相關聯的方式會因不同的作業系統而有所不同。資料庫例項包括多個後臺程式。伺服器程式和在這些的程式中分配的程式記憶體也存在於例項中。當伺服器程式終止時,例項仍會繼續執行。

【資料庫例項】

資料庫例項配置

您可以在以下兩種互斥配置中的一種來執行 Oracle 資料庫:

1)單例項配置

資料庫和例項之間存在一對一關係

2oracle真正應用叢集(oracle RAC)配置

資料庫與例項之間存在一對多的關係,即一個資料庫可以連線多個例項

【資料庫例項的配置】


無論是在單例項還是在 Oracle RAC 配置中,一個資料庫例項在同一時刻只與一個資料庫相關聯。您可以啟動一個例項,並裝載(與例項相關聯)一個資料庫,但不能同時將兩個資料庫裝載到同一例項。

注意:討論單例項資料庫配置

在同一臺計算機上可以同時執行多個例項,每個例項訪問其自己的資料庫。例如,一臺計算機可以承載兩個完全不同的資料庫: prod1 prod2。一個資料庫例項管理 prod1,而另一個例項管理 prod2

例項的持續時間

例項在使用 STARTUP 命令建立時開始,在終止時結束。這此期間,例項能且只能與一個資料庫相關聯。此外,該例項只能裝載資料庫一次,開啟數據庫一次、關閉資料庫一次。在資料庫已關閉後,您必須啟動一個不同例項來裝載並開啟此資料庫。

【持續時間的例項】


Oracle系統識別符號 (SID)

系統識別符號 (SID) 是特定主機上的某個 Oracle 資料庫例項的唯一名稱。在UNIX Linux 上,Oracle 資料庫使用 SID Oracle Home 的值來建立一個指向共享記憶體的鍵。此外,SID 在預設情況下用於定位引數檔案,並使用引數檔案來進一步定位其它相關檔案,如資料庫控制檔案等。

在大多數的平臺上, ORACLE_SID 環境變數設定 SID,而ORACLE_HOME 變數設定 Oracle Home。當客戶端要連線到例項時,可以在 Oracle Net 連線中指定 SID,或使用網路服務名稱。Oracle 資料庫將服務名稱轉換為一個 ORACLE_HOME ORACLE_SID


2講:例項啟動和關閉概述

資料庫例項提供了使用者對資料庫的訪問。此部分說明了例項和資料庫可能存在的狀態。

例項和資料庫啟動概述:

舉一個典型的使用案例,您手動啟動一個例項,然後裝載並開啟資料庫,使其對使用者可用。您可以使用 SQL*Plus STARTUP 命令、 Oracle 企業管理器 (企業管理器) 、或 SRVCTL 透過srvctl start database也許會去ocr中記錄的位置去找spfile.】實用程式來執行這些步驟。圖 13-3 示了資料庫如何從關閉狀態一步步推進到開啟狀態。

【例項和資料庫啟動序列】


當資料庫從關閉狀態推進到開啟狀態時,會經歷以下幾個階段:

1)啟動例項,但未裝載資料庫 nomount狀態

例項已啟動,但尚未與某個資料庫相關聯。

2)裝載資料庫 mount狀態

例項已啟動,並且透過讀取控制檔案,來與資料庫相關聯 ,資料庫對使用者是關閉的。

3) 開啟資料庫 open狀態

例項已啟動,並與一個開啟的資料庫相關聯。授權的使用者可以訪問資料檔案中包含的資料

 

具有管理員許可權的連線

資料庫啟動和關閉是功能強大的管理選項,僅限於能以管理員許可權連線到Oracle 資料庫的使用者來使用。一般使用者對 Oracle 資料庫的當前狀態不具有控制權。

取決於不同的作業系統,使用下列條件之一來建立使用者的管理員許可權(兩種方式連線資料庫)

1)使用者的作業系統許可權使其能夠使用管理員許可權來連線。

2)使用者被授予了 SYSDBA SYSOPER 的系統許可權,資料庫透過網路使用密碼檔案對資料庫管理員進行身份驗證。

 

SYSDBA SYSOPER 是特殊的系統許可權,使你甚至能夠在資料庫未開啟時仍能訪問資料庫例項。這些許可權控制處於資料庫本身之外。當你使用SYSDBA 系統許可權連線時,你將處於 SYS 模式中。當你使用 SYSOPER 連線時,你將處於 PUBLIC 模式中。SYSOPER 許可權是 SYSDBA 許可權的子集。

 

例項是如何啟動的

Oracle資料庫啟動一個例項時,它執行以下基本步驟:

1)在特定於平臺的預設位置搜尋伺服器引數檔案,如果未找到 ,則搜尋一個初始化引數文字檔案(為 STARTUP 指定 SPFILE PFILE引數將覆蓋該預設行為)

2)讀取引數檔案,以確定初始化引數值

3)基於初始化引數設定,分配 SGA

4)啟動 Oracle 後臺程式

5)開啟警報日誌和跟蹤檔案,並以有效的引數語法將所有顯式引數設定寫入警報日誌中例項啟動這一階段資料庫還沒有與該例項相關聯。需要 NOMOUNT 狀態的場景包括建立資料庫和某些備份與恢復操作

 

資料庫是如何裝載的:

由例項裝載資料庫,以將資料庫與該例項相關聯。為裝載資料庫,該例項獲取由 CONTROL_FILES 初始化引數指定的資料庫控制檔名稱,並開啟文件。Oracle 資料庫讀取控制檔案,以查詢資料檔案和聯機重做日誌檔案的名稱,當開啟資料庫時,它會嘗試訪問這些檔案。在一個已裝載的資料庫中,該資料庫是關閉的,且只有資料庫管理員可以訪問。管理員可以在完成某些特定的維護操作時保持資料庫關閉。但是,資料庫此時還不可用於常規操作。

 

如果 Oracle 資料庫允許多個例項同時裝載同一資料庫,則CLUSTER_DATABASE 初始化引數設定可以使資料庫可用於多個例項。資料庫的行為取決於其設定:

1)如果裝入資料庫的第一個例項的 CLUSTER_DATABASE false (默認),則僅此例項可以裝入資料庫。

2)如果第一個例項的 CLUSTER_DATABASE true ,則其他例項在其CLUSTER_DATABASE 引數也設定為 true 時可以裝載資料庫。可以裝載資料庫的例項數量決定於在建立資料庫時指定的預定最大值。

 

資料庫是如何開啟的:

開啟一個已裝載的資料庫,使其可用於常規的資料庫操作。任何有效的使用者可以連線到開啟的資料庫,並訪問其資訊。通常,由資料庫管理員開啟資料庫,使其可用於一般用途。

在開啟資料庫時, Oracle 資料庫執行下列操作:

1)開啟除撤消表空間之外的其他的表空間中的聯機資料檔案。

如果在之前資料庫關閉時,某個表空間是離線的,則該表空間及其相應的資料檔案,在重新開啟資料庫時,仍將處於離線狀態。

2)獲取一個撤消表空間

如果存在多個撤消表空間,則由 UNDO_TABLESPACE 初始化引數指定要使用的撤消表空間。如果尚未設定此引數,則會選擇第一個可用的撤消表空間。

3)開啟聯機重做日誌檔案

 

只讀模式:預設情況下,資料庫開啟為讀/寫模式。在這種模式下,使用者可以對資料作出更改,並在聯機重做日誌中生成重做。或者,也可以開啟為只讀模式,以防止資料被使用者事務修改。

注意:預設情況下,物理備用資料庫將以只讀模式開啟。只讀模式限制資料庫訪問只能為只讀事務,也就無法寫入到資料檔案或聯機重做日誌檔案。但是,資料庫能執行恢復,或更改資料庫狀態但不生成重做的操作。

例如,在只讀模式:

1)資料檔案可以被離線和聯機。但是,你不能將永久表空間(SYSTEMSYSAUX)離線。

2)離線資料檔案和表空間是可以恢復的。

3)控制檔案仍然可用,以更新有關資料庫的狀態。

4)使用 CREATE  TEMPORARY  TABLESPACE 語句建立的臨時表空間是可讀/寫的。

5)可以繼續往作業系統寫入審計檔案、跟蹤(trace)檔案、和警報(alert)日誌。

 

資料檔案檢查:當例項嘗試開啟資料庫時,如果任何資料檔案或重做日誌檔案不存在,或者雖然檔案存在,但一致性測試失敗,則資料庫將返回一個錯誤。此時可能需要介質恢復。

 

資料庫和例項關閉概述:

舉一個典型的使用案例,您手動關閉資料庫以執行維護或其他管理任務,這將使資料庫對使用者不可用。您可以使用 SQL * Plus SHUTDOWN 命令或企業管理器來執行這些步驟。圖 13-4 顯示從開啟狀態推進到一致關閉的過程。

【例項和資料庫關閉順序】



當一致地關閉開啟的資料庫時,Oracle 資料庫自動執行以下步驟:

1)資料庫關閉

資料庫仍處於裝載狀態,但資料檔案和聯機重做日誌檔案已被關閉。

2)資料庫解除安裝

例項仍處於啟動狀態,但已不再與資料庫的控制檔案相關聯。

3)資料庫例項關閉

資料庫例項不再處於啟動狀態。

當例項失敗或遭遇 SHUTDOWN ABORT 時,Oracle 資料庫不會經歷之前這些所有步驟,而只是立即終止該例項。

資料庫關閉模式:

具有SYSDBASYSOPER許可權的資料庫管理員,可以使用SQL*Plus SHUTDOWN 命令或企業管理器來關閉資料庫。SHUTDOWN命令有幾個決定關閉行為的選項。

【關閉模式】


可能的幾種 SHUTDOWN 語句選項是:

1SHUTDOWN ABORT

此模式用於緊急情況,如其他形式的關閉方式都未能成功時。這種模式的關閉是最快的。但是,隨後開啟該資料庫可能時間會顯著增加,因為必須執行例項恢復以使資料檔案一致。

注意:因為 SHUTDOWN ABORT 不對開啟的資料檔案執行檢查點操作,所以在重新開啟資料庫之前,必須進行例項恢復。對於其他的關閉模式,在資料庫重新開啟之前不需要進行例項恢復。

2SHUTDOWN IMMEDIATE(建議)

這種模式通常是除 SHUTDOWN ABORT 之外最快的關閉模式了。Oracle 資料庫終止任何正在執行的 SQL 語句,並斷開使用者連線。所有活動事務都將終止,並回滾所有未提交的更改。

3SHUTDOWN TRANSACTIONAL

這種模式可以防止使用者啟動新事務,但在關閉之前會等待所有的當前事務完成。這種模式可能會花費相當長的時間,這取決於當前事務的特徵。

4)SHUTDOWN NORMAL

這是預設的關閉模式。在關閉之前資料庫會等待所有連線的使用者斷開連線。

 

資料庫是如何關閉的:

資料庫的關閉操作是在資料庫停機中的一個隱含步驟。該操作的性質取決於資料庫停機是正常還是非正常的。

正常停機過程中是如何關閉資料庫的:

當資料庫作為 SHUTDOWN 的一部分(不使用 ABORT 選項)而關閉時,Oracle 資料庫將 SGA 中的資料寫入資料檔案和聯機重做日誌檔案。然後資料庫關閉聯機資料檔案和聯機重做日誌檔案。離線表空間中的任何離線資料檔案是本來就是已關閉的。當重新開啟資料庫時,任何本來離線的空間仍然保持離線狀態。這一階段中,該資料庫是關閉的,且無法進行正常操作訪問。在資料庫關閉後,控制檔案仍保持開啟狀態。

非正常關機過程中是如何關閉資料庫
如果執行了
SHUTDOWN ABORT ,或出現異常終止,則開啟資料庫的例項會關閉,並在瞬間將資料庫停機。Oracle 資料庫不會將 SGA 緩衝區中的資料寫入資料檔案和重做日誌檔案。隨後重新開啟資料庫需要例項恢復,這將由 Oracle 資料庫自動執行。

資料庫是如何解除安裝的:

資料庫關閉之後,Oracle 將資料庫解除安裝,並解除與例項的關聯。資料庫解除安裝後 Oracle 資料庫關閉資料庫的控制檔案。這個時候,例項仍將保留在記憶體中。

例項是如何關閉:關閉資料庫的最後一步是關閉例項。當資料庫例項關閉時,SGA 被從記憶體中移除,且後臺程式都將被終止。

在異常情況下,例項可能並未乾淨地關閉。記憶體結構可能未從記憶體中刪除,或某個後臺程式可能未被終止。當之前的例項存在殘留物時,後續的例項啟動可能會失敗。在這樣的情況下,為強制(force)啟動一個新例項,您可以透過刪除之前例項的殘留物並啟動一個新例項、或透過在 SQL*Plus 中發出SHUTDOWN ABORT 語句、或使用企業管理器。

 

3講:檢查點(checkpoint)概述

檢查點是進行一致的資料庫關閉、 例項恢復、和 Oracle 資料庫通用操作的

關鍵機制。術語檢查點具有如下相關含義:

1)指示檢查點位置的一個資料結構,該位置是在重做流中例項恢復必須開始處的SCN檢查點位置是由資料庫緩衝區快取記憶體中最舊的髒緩衝區來確定的。

檢查點位置作為一個指向重做流的指標,並儲存在控制檔案中,和在每個資料檔案頭中。

2)將資料庫快取中已修改的資料庫緩衝區寫入到磁碟中

檢查點的目的

Oracle資料庫使用檢查點,來實現以下目標:

1)減少例項失敗或介質故障情況下恢復所需的時間

2)確保在緩衝區快取記憶體中的髒緩衝區被定期寫入磁碟

3)確保在一致的關閉過程中所有已提交的資料都被寫入磁碟

Oracle資料庫何時啟動檢查點

檢查點程式 CKPT 負責將檢查點寫入資料檔案頭和控制檔案。檢查點會在多種情況下發生。例如, Oracle 資料庫使用以下型別的檢查點:

1)執行緒檢查點

資料庫將某個確定目標之前、被某個特定的重做執行緒所修改的所有緩衝區寫入磁碟。資料庫中所有例項的執行緒檢查點的集合即為資料庫檢查點。執行緒檢查點在下列情況下發生:

o  一致的資料庫關閉

o  ALTER SYSTEM CHECKPOINT 語句

o  聯機重做日誌切換

o  ALTER DATABASE BEGIN BACKUP 語句

2)表空間和資料檔案的檢查點

資料庫將某個確定目標之前、被重做執行緒所修改的所有緩衝區寫入磁碟。表空間檢查點是一組資料檔案檢查點,每個資料檔案檢查點對錶空間中的某個資料檔案做檢查點操作。這些檢查點發生在很多情況下,包括將一個表空間變為只讀、將表空間離線、收縮資料檔案、或執行 ALTER TABLESPACE BEGIN BACKUP 等。

3)增量檢查點

增量檢查點是一種執行緒檢查點,部分原因是為了避免在聯機重做日誌切換時寫入大量的塊。DBWn 至少每隔三秒會進行檢查以確定是否有工作要做。當 DBWn 將髒緩衝區寫入磁碟時,它會向前推進檢查點位置,導致CKPT將檢查點位置寫入控制檔案,而不是資料檔案頭。其他型別的檢查點包括例項和介質恢復檢查點,和刪除或截斷模式物件時的檢查點。

 

4講:例項恢復概述

例項恢復是將聯機重做日誌中的記錄應用到資料檔案,以重建最近檢查點之後所做更改的過程。當管理員嘗試開啟一個之前以不一致方式關閉的資料庫時,會自動執行例項恢復。

例項恢復的目的:

例項恢復可確保資料庫在一個例項失敗後仍能回到一個一致的狀態。由於Oracle 資料庫對資料檔案更改的管理方式所致,資料庫的檔案可以處於不一致的狀態。重做執行緒是對例項生成的所有更改的記錄。單例項資料庫擁有一個重做線程,而一個 Oracle RAC 資料庫擁有多個重做執行緒——每個資料庫例項有一個。

當事務提交時,日誌寫入器 (LGWR) 將記憶體中的重做條目和事務 SCN 同時寫入聯機重做日誌。但是,資料庫寫入器 (DBWn) 程式只在最有利的時機將已修改的資料塊寫入資料檔案。由於這個原因,未提交的更改可能會暫時存在於資料檔案中,而已提交的更改也可能還不在資料檔案中。

如果某個開啟的資料庫的例項失敗,或者由於 SHUTDOWN ABORT 語句或異常終止,則可能會導致下列情況:

1)由某事務已提交的資料塊更新還未寫入資料檔案,而僅寫入了聯機重做日誌中。這些更改必須重新應用到資料庫。

2)資料檔案包含例項失敗時尚未提交的更改。這些更改必須回滾,以確保事務一致性。

例項恢復只使用聯機重做日誌檔案和當前線上的資料檔案,以同步資料文件,並確保它們一致。

Oracle資料庫何時執行例項恢復

是否需要例項恢復取決於重做執行緒的狀態。在資料庫例項被開啟為讀/寫模式時,重做執行緒在控制檔案中被標記為開啟,而當例項被一致關閉時,重做執行緒被標記為關閉。如果重做執行緒在控制檔案中被標記為開啟,但沒有活動的例項持有對應於這些執行緒的執行緒佇列,則資料庫將需要例項恢復。

Oracle 資料庫在以下情況下自動執行例項恢復:

1)單例項資料庫或 Oracle RAC 資料庫的所有例項失敗後第一次開啟數據庫。這種形式的例項恢復也稱為崩潰恢復。Oracle 資料庫一起恢復所有已終止例項的聯機重做執行緒。

2)只是 Oracle RAC 資料庫中的某些、但不是所有例項失敗。例項恢復將由配置中的某個存活例項自動進行。

 SMON 後臺程式自動執行例項恢復並應用聯機重做記錄。而不需要任何使用者干預。

例項恢復檢查點:

例項恢復使用檢查點來確定必須將哪些更改應用到資料檔案。檢查點位置始終保證所有比其 SCN 低的檢查點所對應的已提交更改都已儲存到資料檔案。

【聯機重做日誌中的檢查點位置】




例項恢復期間,資料庫必須應用檢查點位置和重做執行緒結尾之間發生的更改。如圖 13-5 所示, 某些更改可能已經寫入資料檔案。但是,只有其 SCN低於檢查點位置的更改,才保證已被寫到了磁碟上。

例項恢復階段

例項恢復的第一階段稱為快取恢復或 前滾,這涉及將聯機重做日誌中記錄的所有更改重新應用到資料檔案。因為回滾資料記錄在聯機重做日誌中,前滾也會重新生成相應的撤消段。

前滾會遍歷各個必要的聯機重做日誌,以將資料庫推進到一個更前的一致時間點。前滾之後,資料塊包含記錄在聯機重做日誌檔案中的所有已提交更改。這些檔案可能還包含未提交的更改,要麼是在例項失敗前儲存到資料文件中的,或者是在快取恢復過程中引入的。

前滾之後,任何未提交的更改必須被撤消。Oracle 資料庫使用檢查點位置,保證每個低於其 SCN 的已提交更改都已儲存到磁碟。Oracle 資料庫應用撤消塊,以回滾資料塊中在例項失敗前寫入的或快取恢復過程中引入的未提交更改。這一階段稱為 回滾或事務恢復。

【前滾和回滾】



Oracle 資料庫可以根據需要同時回滾多個事務。例項失敗時的所有活動事

務被標記為終止。新事務可以自己回滾個別塊以獲取所需的資料,而不必等

SMON 程式來回滾這些已終止的事務。

 

5講:引數檔案的概述

要啟動資料庫例項,Oracle 資料庫必須讀取一個(推薦的) 伺服器引數檔案或一個(傳統的) 文字初始化引數檔案。這些檔案包含配置引數的列表。要手動建立一個資料庫,必須用一個引數檔案啟動例項,然後發出CREATE DATABASE 命令。因此,即使資料庫本身還不存在,例項和引數檔案即可以存在。

初始化引數

初始化引數是會影響例項基本操作的配置引數。例項在啟動時從一個檔案讀取初始化引數。Oracle 資料庫提供了許多 初始化引數,以最佳化其在不同環境中的操作。只需要顯式設定幾個引數,因為其預設值對大多數情況已經足夠。

初始化引數的功能分組:

絕大多數的初始化引數屬於以下功能分組之一:

1)名字條目引數,如檔案或目錄

2)限制設定引數,如程式、 資料庫資源、或資料庫本身等

3)影響容量的引數,如SGA的大小(這些引數也稱為可變引數)

資料庫管理員可能會對可變引數特別感興趣,因為他們可以使用這些引數來提高資料庫效能。

基本和高階的初始化引數

初始化引數可以分為兩組: 基本的和高階的。在大多數的情況下,你只需設定和調整大約 30 個基本引數,就可以獲得還不錯的效能。基本引數設定的特性包括資料庫名稱、控制檔案的位置、資料庫的塊大小、和撤消表空間等。

在某些情況下,為獲得最佳效能,可能需要修改高階引數。啟用高階引數可以使專家級 DBA 能夠調整 Oracle 資料庫以滿足某些特殊需求。

Oracle 資料庫軟體自帶的初始化引數檔案提供了一些初級引數值,或者你也可以透過資料庫配置助手來產生這些值。您可以編輯這些 Oracle 提供的初始化引數並新增其他引數,這取決於您的配置,以及你計劃如何最佳化資料庫。對於初始化引數檔案中不包含的有關引數,Oracle 資料庫提供預設值。

伺服器引數檔案

伺服器引數檔案是 Oracle 資料庫用來管理初始化引數的一個儲存庫。伺服器引數檔案具有以下主要特徵:

1)對於一個資料庫,只存在一個伺服器引數檔案。此檔案必須駐留在資料庫主機上。

2)伺服器引數檔案只由 Oracle 資料庫讀取和寫入,而不能由客戶端應用程式讀取和寫入。

3)伺服器引數檔案是二進位制的,且不能使用文字編輯器修改。

4)儲存在伺服器引數檔案中的初始化引數是永久性的。資料庫例項正在執行時對引數所做的任何更改,可以跨例項關閉和啟動而存在。


伺服器引數檔案消除了為多個客戶端應用程式維護多個文字初始化引數檔案的需要。伺服器引數檔案最初可以從一個文字初始化引數檔案,使用CREATE SPFILE 語句來生成。也可以直接由資料庫配置助手建立。

 

文字初始化引數檔案

文字初始化引數檔案是一個文字檔案,其中包含初始化引數的列表。這是一種舊式引數檔案,具有以下關鍵特徵:

1)當啟動或關閉資料庫時,文字初始化引數檔案必須駐留在連線到該數據庫的客戶端應用程式相同的主機上。

2)文字初始化引數檔案是基於文字的,而非二進位制。

3Oracle 資料庫可以讀取,但不能寫入文字初始化引數檔案。若要更改引數值,必須使用文字編輯器手動更改檔案。

4)透過 ALTER SYSTEM 對初始化引數值所做的更改,僅在當前例項中有效。您必須手動更新文字初始化引數檔案,並重新啟動例項以使更改生效。

【文字初始化引數行】


為了說明文字引數檔案可能產生的可管理性問題,假定您使用計算機clienta clientb,並且必須能夠從其中任何一臺計算機上使用 SQL*Plus 啟動資料庫。在這種情況下,必須存在兩個獨立的文字初始化引數檔案,每臺計算機上一個,如圖 13-7 所示。伺服器引數檔案解決了分散的引數檔案問題。

【多個初始化引數檔案】


修改初始化引數的值:

您可以修改初始化引數,以調整資料庫行為。將其按靜態或動態引數的分類,確定了應如何修改它們。表 13-3 總結了的其中的差異。

【靜態和動態初始化引數】


靜態引數包括  DB_BLOCK_SIZE DB_NAME 、和 COMPATIBLE 等。動態引數可分為 會話級引數和 系統級引數,會話級引數隻影響當前的使用者會話,而系統級引數影響資料庫及所有會話。例如,MEMORY_TARGET 是一個系統級引數,而 NLS_DATE_FORMAT 是一個會話級引數。

引數更改的範圍取決於更改何時生效。若例項是用伺服器引數檔案啟動的,則可以使用 ALTER SYSTEM SET 語句更改系統級引數的值,如下所示:

1SCOPE=MEMORY

更改只應用於資料庫例項。如果資料庫關閉並重新啟動,更改將不會保留。

2SCOPE=SPFILE

更改被寫入伺服器引數檔案,但不會影響當前例項。因此,所做的更改不會生效,直到重新啟動該例項。

注意:當你修改某個在《 Oracle 資料庫參考 》中描述為不可修改的引數的值時,必須指定 SPFILE

3SCOPE=BOTH

將更改同時寫入記憶體和伺服器引數檔案。當資料庫使用伺服器引數文件時,這是預設的範圍。資料庫會在警報日誌中輸出初始化引數的舊值和新值。作為一項預防措施,資料庫會驗證對基本引數的更改,以防止非法值被寫入到服務器引數檔案中。

 

6講:診斷檔案概述

Oracle資料庫包括一個故障可診斷性基礎設施,以預防、檢測、診斷、並解決各種資料庫問題。這些問題包括如程式碼錯誤、後設資料損壞、和客戶資料損壞等嚴重錯誤。

這個先進的故障可診斷性基礎設施的目標如下:

1)主動偵測問題

2)在檢測到問題後,限制破壞和中斷

3)減少問題診斷和解決時間

4)簡化客戶與 Oracle 支援的互動

 

自動診斷儲存庫

自動診斷儲存庫  ADR 是一個基於檔案的儲存庫,儲存瞭如跟蹤檔案、

警報日誌、和健康監測報告等資料庫診斷資料。ADR 的關鍵特徵包括:

1)統一的路徑結構

2)一致的診斷資料格式

3)統一的工具集

上述特性使得客戶和Oracle支援部門能跨多個Oracle例項、元件、和產品對診斷資料進行關聯和分析。

 

ADR 處於資料庫之外,這使得即便物理資料庫不可用時,也可以訪問和管 ADR。在建立資料庫之前,其例項就可以建立 ADR

問題和事件

ADR主動跟蹤資料庫中的嚴重錯誤問題。嚴重錯誤通常顯示為內部錯誤,ORA-600或其他嚴重錯誤。每個問題有一個問題鍵,它是一個描述此問題的文字字串。

 

當一個問題出現多次時,ADR為每次發生的錯誤建立一個帶時間戳的事件。事件由一個數字事件件id 唯一標識。當事件發生時,ADR傳送一個事件警報到企業管理器中。對嚴重錯誤的診斷和解決,通常從一個事件警報開始。

因為一個問題可以在短時間內生成許多事件,ADR 在達到某些閾值時,將對事件生成應用防洪控制措施。 防洪受控事件將生成一個警報日誌條目,但不會生成事件轉儲。這樣一來,ADR 會通知您正在發生一個嚴重錯誤,而不會在系統中產生過量診斷資料。

 

ADR結構

ADR base ADR 的根目錄。ADR base 可能包含多個 ADR home,每個ADR home 是一個 Oracle 產品或元件例項的所有的診斷資料的根目錄,包括跟蹤、 轉儲、 和警報日誌等等。例如,在有共享儲存和 ASM Oracle

RAC 環境中,每個資料庫例項和每個 ASM 例項都有自己的 ADR Home

13-8 說明了資料庫例項的 ADR 目錄層次結構。其他 Oracle 產品或元件(如 ASM Oracle 網路服務)的 ADR Home 也可以存在於此層次結構中,在相同的 ADR base 之下。

 

如下的 Linux 示例顯示, 當你在建立一個資料庫之前,使用一個唯一的 SID和資料庫名稱啟動一個例項時,Oracle 資料庫在主機檔案系統中會將 ADR預設建立為一個目錄結構。SID 和資料庫名稱形成 ADR Home 中的檔案路徑名稱的一部分。

【建立ADR


以下各節描述了ADR的內容。

警報日誌

每個資料庫都有一個警報日誌,它是一個XML檔案,其中包含按時間排序的資料庫資訊和錯誤的日誌。警報日誌的內容包括如下:

1)所有的內部錯誤 ( ORA-600 ) 塊損壞錯誤 ORA-1578 ) 、和死鎖錯誤 ( ORA-60

2)管理性操作,如 DDL 語句和 STARTUP SHUTDOWN ARCHIVELOG 、和 RECOVER SQL*Plus 命令

3)幾個與共享伺服器和排程器程式的功能有關的訊息和錯誤

4)物化檢視自動重新整理過程中的錯誤

 

Oracle 資料庫使用警報日誌作為在企業管理器GUI中顯示資訊的一種替代。如果管理操作成功,則 Oracle 資料庫向警報日誌寫入一條帶有時間戳的已完成訊息。如圖 13-8 所示, 當您首次啟動一個資料庫例項,即使其資料庫尚未建立,Oracle 資料庫會在 alert 子目錄中建立一個警報日誌。下面的示例演示一個純文字警報日誌的一部分:

【純文字警報日誌的一部分】

跟蹤檔案

跟蹤檔案是一個管理性檔案,其中包含用於調查問題的診斷資料。此外,跟蹤檔案也可以為最佳化應用程式或例項提供指導。

跟蹤檔案的型別

每個伺服器和後臺程式可以定期寫入一個關聯的跟蹤檔案。這些檔案包括進程環境、 狀態、 活動、和錯誤等資訊。SQL 跟蹤設施還會為單個 SQL 語句建立跟蹤檔案,以提供效能資訊。若要為客戶端標識、 服務、 模組、 動作、 會話、 例項、或資料庫等啟用跟蹤,必須執行 DBMS_MONITOR 包中適當的過程,或使用 Oracle 企業管理器。

轉儲是一種特殊型別的跟蹤檔案。跟蹤往往是診斷資料的連續輸出,而轉儲通常是響應某個事件的一次性診斷資料輸出。當事件發生時,資料庫會將一個或多個轉儲寫入為事件建立的目錄。事件轉儲還在檔名稱中包含了事件號。

跟蹤檔案的位置

ADR 將跟蹤檔案儲存在 trace 子目錄中,如圖 13-8 所示。跟蹤檔案的名稱取決於其執行平臺,並使用副檔名.trc。通常,資料庫後臺程式的跟蹤檔名稱中包含 Oracle SID 後臺程式名稱、和作業系統程式號。 RECO 程式的跟蹤檔案的一個示例是mytest_reco_10355.trc伺服器程式跟蹤檔名稱包含 Oracle SID、字串 ora 和作業系統程式號。伺服器程式跟蹤檔名稱的一個示例是 mytest_ora_10304.trc

有時跟蹤檔案有相應的跟蹤點陣圖 (.trm) 檔案。這些檔案包含跟蹤檔案的相關結構資訊,並用於搜尋和導航。


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

相關文章