Oracle AI Database 執行處理

本章說明 Oracle 資料庫執行處理的本質、與執行處理關聯的參數和診斷檔案,以及在執行處理建立和開啟和關閉資料庫時發生的狀況。

注意:在本章中,「資料庫」一詞是指多雲端用戶容器資料庫 (CDB),除非另有說明。

Oracle AI Database 執行處理簡介

資料庫執行處理是一組管理資料庫檔案的記憶體結構。

在實體層次上,CDB 是由 CREATE DATABASE 敘述句所建立的一組磁碟檔案。一個 CDB 包含一或多個使用者建立的 PDB。一個 PDB 會在屬於 CDB 的完整資料檔集中包含自己的一組資料檔。資料庫執行處理會管理與 CDB 及其 PDB 相關的資料,並為其使用者提供服務。

每個執行中的 CDB 至少會與一個 Oracle 資料庫執行處理相關聯。因為執行處理存在於記憶體中,而資料庫 (在最窄的辭彙中) 是磁碟上的一組檔案,所以執行處理可以不存在資料庫,而資料庫也必須沒有執行處理。

資料庫執行處理結構

啟動執行處理時,Oracle AI Database 會配置稱為系統整體區域 (SGA) 的記憶體區域,並啟動一或多個背景處理作業。

SGA 有多種用途,包括:

在單一電腦上執行的 Oracle 處理作業會共用 SGA。Oracle 處理作業與 SGA 的關聯方式會根據作業系統而有所不同。

資料庫執行處理也包含背景處理作業與伺服器處理作業。每個處理作業都有自己的專用記憶體,視為執行處理的一部分。伺服器處理作業終止時,執行處理會繼續運作。

下圖顯示 Oracle 資料庫執行處理的主要元件。

圖 1:資料庫執行處理

cncpt325.png 圖解描述

另請參閱:

資料庫執行處理設定

Oracle AI Database 是以單一執行處理組態或 Oracle Real Application Clusters (Oracle RAC) 組態執行。這些組態互斥。

在單一執行處理組態中,資料庫與資料庫執行處理之間存在一對一關係。在 Oracle RAC 中,資料庫和資料庫執行處理之間存在一對多關係。

下圖顯示可能的資料庫執行處理組態。

圖 2:資料庫執行處理組態

cncpt296.gif 圖解描述

無論是在單一執行處理或 Oracle RAC 組態中,資料庫執行處理一次只會與一個資料庫相關聯。您可以啟動一個資料庫執行處理,以及使用掛載 (將執行處理與執行處理建立關聯) 一個資料庫,但不能同時掛載兩個資料庫與同一個執行處理。注意:除非另有說明,否則本章討論單一執行處理資料庫組態。

多個執行處理可以同時在同一部電腦上執行,每個執行處理都可以存取自己的資料庫。例如,電腦可以代管兩個不同的資料庫:prod1 和 prod2。一個資料庫執行處理管理 prod1,另一個執行處理則管理 prod2。

另請參閱:Oracle Real Application Clusters Administration and Deployment Guide,瞭解 Oracle RAC 的特定資訊

讀取 / 寫入和唯讀執行處理

每個資料庫執行處理都是唯讀 / 寫入或唯讀的。

讀取 / 寫入資料庫執行處理 (預設值) 可以處理 DML 並支援從從屬端應用程式的直接連線。相反地,唯讀資料庫執行處理可以處理查詢,但不支援修改 DML (UPDATE、DELETE、INSERT 和 MERGE) 或直接從屬端連線。

注意:除非本手冊另有說明,否則所有對資料庫執行處理的參照都是讀取 / 寫入執行處理。

在舊版中,所有資料庫執行處理 (除非它們存取待命資料庫) 都是讀取 / 寫入。從 Oracle Database 12c 版本 2 (12.2) 開始,唯讀和讀取 / 寫入執行處理可以共存於單一資料庫中。此組態對於同時查詢和修改資料的平行 SQL 敘述句非常有用,因為讀取 / 寫入執行處理和唯讀執行處理都可以在讀取 / 寫入執行處理修改時查詢。

與讀取 / 寫入執行處理不同,唯讀執行處理具有下列特性:

若要將執行處理指定為唯讀,請將 INSTANCE_MODE 初始化參數設為 READ_ONLY。參數的預設值為 READ_WRITE。

另請參閱:

資料庫執行處理的持續時間

資料庫執行處理會在使用 STARTUP 命令建立時開始,並在資料庫執行處理終止時結束。

在此期間,資料庫執行處理本身只能與一個資料庫建立關聯。此外,執行處理只能掛載一次資料庫,只需將其關閉一次,然後只開啟一次。資料庫關閉或關閉之後,您必須啟動不同的執行處理來掛載和開啟此資料庫。

下表說明嘗試重新開啟先前關閉之資料庫的資料庫執行處理。

表格 1 執行處理的持續時間

對帳單 說明
SQL> STARTUP
 ORACLE instance started.

  Total System Global Area 468729856 bytes
 Fixed Size 1333556 bytes
 Variable Size 440403660 bytes
 Database Buffers 16777216 bytes
 Redo Buffers 10215424 bytes
 Database mounted.
 Database opened.
STARTUP 命令會建立掛載並開啟資料庫的執行處理。
SQL> SELECT
  TO_CHAR(STARTUP_TIME,'MON-DD-RR HH24:MI:SS')
  AS "Inst Start Time" FROM V$INSTANCE;

  Inst Start Time
 ------------------
 JUN-18-14 13:14:48
此查詢顯示啟動目前執行處理的時間。
SQL> SHUTDOWN IMMEDIATE
執行處理會關閉資料庫並關閉,結束此執行處理的存留時間。
SQL> STARTUP
 Oracle instance started.
 . . .
STARTUP 命令會建立新的執行處理並掛載並開啟資料庫。
SQL> SELECT
  TO_CHAR(STARTUP_TIME, 'MON-DD-RR HH24:MI:SS')
 AS "Inst Start Time" FROM V$INSTANCE;

  Inst Start Time
 ------------------
 JUN-18-14 13:16:40
此查詢顯示啟動目前執行處理的時間。不同的啟動時間顯示此執行處理與關閉資料庫的執行處理不同。

資料庫執行處理的識別

多個資料庫執行處理可以位於單一主機上。因此,您必須有指定要存取之執行處理的方法。Oracle 最佳彈性架構 (OFA) 規則是一組建立的組態準則,旨在確保有組織完善的 Oracle 安裝。本節中的範例假設 OFA 架構。

本節包含下列主題:

Oracle 基本目錄

Oracle 基本目錄儲存 Oracle 產品的二進位檔。

「Oracle 基本目錄」是 Oracle AI Database 安裝擁有者的資料庫本位目錄。主機上可以安裝許多 Oracle AI Database,以及許多 Oracle AI Database 軟體安裝擁有者。

下列範例顯示作業系統使用者帳戶 oracle 的 Oracle 基本目錄:

/u01/app/oracle

在前面的路徑中,/u01/ 是掛載點,/u01/app/ 是應用程式軟體的子樹狀結構。

另請參閱:Oracle AI Database Installation Guide for Linux,以取得 Oracle 基本目錄的簡介

Oracle 本位目錄

Oracle 本位目錄是 Oracle 資料庫的軟體位置。

您必須為每一個新的 Oracle AI Database 軟體安裝指定一個新的 Oracle 本位目錄。從 Oracle Database 21c 開始,Oracle 本位目錄是唯讀的。Oracle 本位目錄會儲存靜態檔案 (例如二進位檔)。

依照預設,Oracle 本位目錄是 Oracle 基本目錄 (ORACLE_BASE) 目錄樹狀結構中的子系。您可以在單一 Oracle 基本目錄的不同 Oracle 本位目錄中,在同一個主機上安裝此版本或舊版的資料庫軟體一次以上。不同版本且由不同使用者帳戶擁有的多個資料庫可以並行共存。

下列範例顯示三個不同 Oracle 本位目錄的完整路徑名稱,全都位於 /u01/app/oracle/ 的相同 Oracle 基本目錄中:

/u01/app/oracle/product/19.3.0/dbhome_1
/u01/app/oracle/product/19.3.0/dbhome_2
/u01/app/oracle/product/20.1.0/dbhome_1

Oracle 基本目錄 (/u01/app/oracle/) 後面的路徑名稱部分包括產品版本號碼 (例如 19.3.0) 和 Oracle 本位目錄相對目錄 (例如 dbhome_1)。/u01/app/oracle/product/19.3.0/ 目錄包含兩個個別的 Oracle 本位目錄:dbhome_1 和 dbhome_2。

Oracle 基本目錄本位目錄 (ORACLE_BASE_HOME) 目錄 (位於 ORACLE_BASE/homes/home_name) 會儲存 Oracle 本位目錄特定的動態檔案。Oracle 基本目錄組態目錄 (ORACLE_BASE_CONFIG) 是 Oracle 基本目錄中所有 Oracle 本位目錄共用的目錄,用來儲存執行處理特定的動態檔案。

在下列範例中,第一個路徑是 Oracle 本位目錄,第二個路徑是此 Oracle 本位目錄的 Oracle 基本目錄本位目錄:

/u01/app/oracle/product/20.1.0/dbhome_1
/u01/app/oracle/homes/dbhome_1

另請參閱:Oracle AI Database Installation Guide for Linux,瞭解 Oracle 本位目錄的簡介

Oracle 系統 ID (SID)

系統 ID (SID) 是特定主機上 Oracle 資料庫執行處理的唯一名稱。

在 UNIX 和 Linux 上,Oracle AI Database 會使用 SID 和 Oracle 本位目錄值來建立共用記憶體的金鑰。此外,Oracle AI Database 預設會使用 SID 來尋找初始化參數檔,該檔案會尋找資料庫控制檔等相關檔案。

在大多數平台上,ORACLE_SID 環境變數會設定 SID,而 ORACLE_HOME 變數則會設定 Oracle 本位目錄。連線至資料庫執行處理時,從屬端可以在 Oracle Net 連線中指定 SID,或是使用網路服務名稱。Oracle AI Database 會將網路服務名稱轉換為 ORACLE_HOME 和 ORACLE_SID。

執行處理特定的檔案會個別儲存在 Oracle 基本目錄中。名稱包含 SID 的檔案位於 Oracle 基本組態目錄 (ORACLE_BASE_CONFIG) 的 dbs 子目錄中。因此,您可以使用現有 Oracle 本位目錄中的軟體來建立資料庫,然後使用位於新 Oracle 本位目錄中的軟體來啟動此資料庫的執行處理。

另請參閱:

資料庫執行處理啟動與關閉總覽

資料庫執行處理可讓使用者存取資料庫。執行處理與資料庫可處於各種狀態。

執行處理和資料庫啟動總覽

通常,您會手動啟動一個執行處理,然後掛載並開啟資料庫,讓它可供使用者使用。您可以使用 SQL*Plus STARTUP 命令、Oracle Enterprise Manager (Enterprise Manager) 或 SRVCTL 公用程式來執行這些步驟。

如果要使用 Oracle Net 啟動資料庫執行處理,必須符合下列條件:

監聽器會建立專用伺服器,以啟動資料庫執行處理。

下圖顯示資料庫從關閉狀態進展到開啟狀態。

圖 3:執行處理與資料庫啟動順序

cncpt212.gif 圖解描述

資料庫會在從關閉狀態繼續至開啟的資料庫狀態時,經歷下列階段。

表格 2 執行處理啟動的步驟

階段 掛載州別 說明 深入瞭解
1 執行處理已啟動,但未掛載資料庫 執行處理已啟動,但尚未與資料庫建立關聯。 如何啟動執行處理
2 資料庫已掛載 執行處理便會啟動,並透過讀取其控制檔與資料庫相關聯。使用者可以關閉資料庫。 「資料庫的掛載方式」
3 資料庫開啟 執行處理會啟動並與一個開啟的資料庫相關聯。授權的使用者可以存取資料檔中包含的資料。 「資料庫的開啟方式」

另請參閱:

與管理員權限的連線

資料庫啟動和關閉是功能強大的管理選項,僅限於使用管理員權限連線至 Oracle AI Database 的使用者。

一般使用者無法控制 Oracle 資料庫的目前狀態。視作業系統而定,下列其中一個條件會為使用者建立管理員權限:

下列特殊系統權限可讓您存取資料庫執行處理,即使資料庫未開啟也一樣:

上述權限的控制不在資料庫本身。當您使用 SYSDBA 系統權限連線資料庫時,您位於 SYS 所擁有的綱要中。以 SYSOPER 身分連線時,您位於公用綱要中。SYSOPER 權限是 SYSDBA 權限的子集。

另請參閱:

如何啟動執行處理

當 Oracle AI Database 啟動實例時,它會繼續進行各階段。

階段如下:

  1. 搜尋平台特定預設位置中的伺服器參數檔,如果找不到文字初始化參數檔 (使用 SPFILE 或 PFILE 參數指定 STARTUP 會覆寫預設行為)

  2. 讀取參數檔以判斷初始化參數的值

  3. 根據初始化參數設定值配置 SGA

  4. 啟動 Oracle 背景處理作業

  5. 開啟警示日誌和追蹤檔,然後以有效的參數語法將所有明確的參數設定值寫入警示日誌

在此階段,沒有與執行處理關聯的資料庫。需要 NOMOUNT 狀態的案例包括建立資料庫以及建立特定備份與復原作業。

另請參閱:Oracle AI Database Administrator's Guide,瞭解如何使用伺服器參數檔來管理初始化參數

資料庫的掛載方式

執行處理會掛載資料庫,以將資料庫與此執行處理建立關聯。

若要掛載資料庫,執行處理會取得在 CONTROL_FILES 初始化參數中指定的資料庫控制檔名稱,並開啟檔案。Oracle AI Database 會讀取控制檔,以尋找資料檔的名稱,以及開啟資料庫時會嘗試存取的線上重做日誌檔。

在掛載的資料庫中,資料庫會關閉,而且只能供資料庫管理員存取。管理員可以在完成特定維護作業時關閉資料庫。不過,一般作業無法使用該資料庫。

如果 Oracle AI Database 允許多個執行處理同時掛載相同的資料庫,則 CLUSTER_DATABASE 初始化參數設定值可讓多個執行處理使用該資料庫。資料庫運作方式取決於以下設定:

另請參閱:

資料庫的開啟方式

開啟掛載的資料庫,即可讓它供一般資料庫作業使用。

任何有效的使用者都可以連線至開啟的資料庫並存取其資訊。通常,資料庫管理員會開啟資料庫使其可供一般使用。

當您開啟資料庫時,Oracle AI Database 會執行下列動作:

另請參閱:

唯讀模式

依照預設,資料庫會以讀取 / 寫入模式開啟。在此模式中,使用者可以對資料進行變更,並在線上重做日誌中產生重做。或者,您也可以使用唯讀模式開啟,以防止使用者交易的資料修改。注意:依照預設,實體待命資料庫會以唯讀模式開啟。

唯讀模式會將資料庫存取限制為唯讀交易,而這些交易無法寫入資料檔或線上重做日誌檔。不過,資料庫可以在不產生重做的情況下,執行會變更資料庫狀態的復原或作業。例如,在唯讀模式中:

另請參閱:

資料庫檔案檢查

當執行處理嘗試開啟資料庫時,如果有任何資料檔或重做日誌檔不存在,或者如果檔案存在但一致性測試失敗,資料庫就會回傳一個錯誤。可能需要進行媒體復原。

另請參閱:Oracle AI Database Backup and Recovery User's Guide,瞭解備份與復原的簡介

資料庫和執行處理關閉概要

在一般使用案例中,您可以手動關閉資料庫,讓使用者在執行維護或其他管理工作時無法使用資料庫。您可以使用 SQL*Plus SHUTDOWN 命令或 Enterprise Manager 來執行這些步驟。

下圖顯示從開啟狀態到一致關閉的進度。

圖 4:執行處理與資料庫關閉順序

cncpt281.gif 圖解描述

每當開啟的資料庫持續關閉時,Oracle AI Database 就會自動執行下列步驟。

表格 3 一致關閉的步驟

階段 掛載州別 說明 深入瞭解
1 資料庫關閉 資料庫已掛載,但線上資料檔與重做日誌檔都會關閉。 「資料庫的關閉方式」
2 資料庫已卸載 執行處理已啟動,但不再與資料庫的控制檔相關聯。 「如何卸載資料庫」
3 資料庫執行處理已關閉 資料庫執行處理已不再啟動。 「執行處理如何關閉」

在執行處理失敗中,Oracle AI Database 不會執行上述所有步驟,也不會執行立即終止執行處理的 SHUTDOWN ABORT。

關機模式

具有 SYSDBA 或 SYSOPER 權限的資料庫管理員可以使用 SQL*Plus SHUTDOWN 命令或 Enterprise Manager 來關閉資料庫。SHUTDOWN 指令含有可決定關閉運作方式的選項。

下表摘要列出不同關閉模式的行為。

表格 4 資料庫關閉模式

資料庫行為 中止 IMMEDIATE 交易式 一般
允許新使用者連線 否 否 否 否
等待直到目前階段作業結束 否 否 否 是
等待直到目前交易結束 否 否 是 是
執行檢查點並關閉開啟的檔案 否 是 是 是

可能的 SHUTDOWN 敘述句為:

另請參閱:

資料庫的關閉方式

資料庫關閉是資料庫關閉中隱含的作業。作業的本質取決於資料庫關閉是正常的還是異常。

正常關閉期間資料庫的關閉方式

當資料庫在 SHUTDOWN 中關閉時 (含有 ABORT 以外的任何選項),Oracle AI Database 會將 SGA 中的資料寫入資料檔和線上重做日誌檔。

之後,資料庫會關閉線上資料檔與線上重做日誌檔。已經關閉離線表格空間的所有離線資料檔。當資料庫重新開啟時,任何離線表格空間都會保持離線。

在此階段,資料庫會關閉且無法進行一般作業。在關閉資料庫之後,控制檔仍會維持開啟。

資料庫在異常關閉期間的關閉方式

如果發生 SHUTDOWN ABORT 或異常終止,則開啟之資料庫的執行處理會關閉並即時關閉資料庫。

在異常關閉時,Oracle AI Database 不會將 SGA 緩衝區中的資料寫入資料檔與重做日誌檔。後續重新開啟資料庫需要執行處理復原,Oracle AI Database 會自動執行。

資料庫卸載方式

資料庫關閉之後,Oracle AI Database 會卸載資料庫,使其與執行處理取消關聯。

卸載資料庫之後,Oracle AI Database 會關閉資料庫的控制檔。此時,資料庫執行處理會維持在記憶體中。

執行處理關閉的方式

資料庫關閉的最後一個步驟正在關閉執行處理。當資料庫執行處理關閉時,SGA 會停止佔用記憶體,而背景處理作業則會終止。

在異常情況下,可能無法完全關閉資料庫執行處理。記憶體結構不能從記憶體移除,或是其中一個背景處理作業不能終止。當先前執行處理的其餘部分存在時,後續的執行處理啟動可能會失敗。在這類情況下,您可以強制啟動新執行處理,方法是移除上一個執行處理的其餘部分,然後啟動新的執行處理,或發出 SHUTDOWN ABORT 敘述句。

在某些情況下,處理程序清除本身可能會遇到錯誤,這可能會導致處理程序監視器 (PMON) 或執行處理被終止。動態初始化參數 INSTANCE_ABORT_DELAY_TIME 指定延遲內部產生之執行處理失敗的秒數。此延遲讓您有機會回應。資料庫會在起始延遲終止時,將訊息寫入警示日誌。在某些情況下,可以透過允許隔離某些資料庫資源,該執行處理可避免終止。

另請參閱:

檢查點概要

檢查點是一致的資料庫關閉、執行處理復原以及 Oracle AI Database 作業的關鍵機制。

此術語具有下列相關意義:

檢查點的目的

Oracle AI Database 使用檢查點達成多個目標。

目標包含下列項目:

Oracle AI Database 啟動檢查點時

檢查點處理作業 (CKPT) 負責將檢查點寫入資料檔標頭與控制檔。

檢查點發生在各種情況下。例如,Oracle AI Database 使用下列類型的檢查點:

其他類型的檢查點包括刪除或截斷綱要物件時的執行處理和媒體復原檢查點和檢查點。

另請參閱:

執行處理復原總覽

執行處理復原是將線上重做日誌中的記錄套用至資料檔,以重新建構在最近檢查點之後所做的變更。

當管理員嘗試開啟先前不一致關閉的資料庫時,就會自動進行執行處理復原。

執行處理復原的用途

執行處理復原可確保資料庫在執行處理失敗後處於一致的狀態。由於 Oracle AI Database 如何管理資料庫變更,因此資料庫的檔案可以保留在不一致的狀態。

重做繫線是執行處理產生之所有變更的記錄。單一執行處理資料庫有一個重做繫線,而 Oracle RAC 資料庫則有多個重做繫線,每個資料庫執行處理各有一個重做繫線。

確認交易時,日誌寫入器處理作業 (LGWR) 會將記憶體中剩餘的重做項目,以及將交易 SCN 寫入線上重做日誌。不過,資料庫寫入器 (DBW) 處理作業會在最有效率的時候,將修改過的資料區塊寫入資料檔。因此,在確認的變更尚不存在於資料檔中時,資料檔中可能會暫時存在未確認的變更。

如果開啟之資料庫的執行處理因 SHUTDOWN ABORT 敘述句或異常終止而失敗,則可能會產生下列情況:

執行處理復原只會使用線上重做日誌檔與目前的線上資料檔,來同步資料檔並確保資料檔一致。

另請參閱:

當 Oracle AI Database 執行執行處理復原時

是否需要執行處理復原,取決於重做繫線的狀態。

當資料庫執行處理以讀 / 寫模式開啟時,重做繫線會標示為在控制檔中開啟,而且會在執行處理一致關閉時標示為關閉。如果重做繫線在控制檔中標示為開啟,但是沒有即時執行處理會保留與這些繫線對應的繫線排入佇列,則資料庫就需要執行處理復原。

在下列情況下,Oracle AI Database 會自動執行執行處理復原:

SMON 背景處理作業會執行執行處理復原,自動套用線上重做。不需要使用者介入。

另請參閱:

執行處理復原的檢查點重要性

執行處理復原使用檢查點來判斷哪些變更必須套用至資料檔。檢查點位置可確保將 SCN 比檢查點 SCN 所確認的每個變更都儲存至資料檔。

下圖說明線上重做日誌中的重做繫線。

圖 5:線上重做日誌中的檢查點位置

cncpt282.gif 圖解描述

在進行執行處理復原期間,資料庫必須套用在檢查點位置與重做繫線結尾之間發生的變更。如圖 16-5 所示,有些變更可能已經寫入資料檔中。不過,只有 SCN 低於檢查點位置的變更保證在磁碟上。

另請參閱:Oracle AI Database Performance Tuning Guide,瞭解如何限制執行處理復原時間

執行處理復原階段

執行處理復原的第一個階段稱為快取復原或向前捲動,然後將線上重做日誌中記錄的所有變更重新套用至資料檔。

因為線上重做日誌包含還原資料,向前復原也會重新產生對應的還原區段。向前復原會視需要進行任意數目的線上重做日誌檔,讓資料庫保持在最新狀態。向前復原之後,資料區塊會包含線上重做日誌檔中記錄的所有確認變更。這些檔案也可能包含未確認的變更,這些變更會在失敗前儲存至資料檔,或是記錄在線上重做日誌,並在快取復原期間引進。

向前復原之後,所有未確認的變更都必須還原。Oracle AI Database 使用檢查點位置,可確保 SCN 低於檢查點 SCN 的每個已確認變更都儲存在磁碟上。Oracle AI Database 會套用還原區塊,以倒回在失敗之前寫入或於快取復原期間導入之資料區塊中未確認的變更。此階段稱為倒回或交易復原。

下圖說明向前復原和倒回,這是從資料庫執行處理失敗復原所需的兩個步驟。

圖 6:基本執行處理復原步驟:向前滾動和倒回

cncpt196.gif 圖解描述

Oracle AI Database 可視需要同時倒回多個交易。所有在失敗時有效的交易都會標示為已終止。不需要等待 SMON 處理作業倒回終止的交易,新的交易會倒回個別的區塊本身來取得必要的資料。

另請參閱:

參數檔概要

若要啟動資料庫執行處理,Oracle AI Database 必須讀取伺服器參數檔 (建議使用) 或文字初始化參數檔 (舊有實行)。這些檔案包含組態參數清單。

若要手動建立資料庫,您必須以參數檔啟動執行處理,然後發出 CREATE DATABASE 敘述句。因此,即使資料庫本身並不存在,執行處理與參數檔還是可以存在。

初始化參數

初始化參數是影響執行處理基本作業的組態參數。執行處理會在啟動時從檔案讀取初始化參數。

Oracle AI Database 提供許多初始化參數,以最佳化其在不同環境中的作業。只有少數參數必須明確設定,因為預設值通常足夠。

初始化參數的功能群組

初始化參數屬於不同的功能群組。

大部分的初始化參數都屬於下列其中一個群組:

變數參數對資料庫管理員特別感興趣,因為它們可以使用這些參數來改善資料庫效能。

基本和進階初始化參數

初始化參數分為兩個群組:基本與進階。

一般而言,您必須僅設定及調整大約 30 個基本參數,才能獲得合理的效能。基本參數會設定一些特性,像是資料庫名稱、控制檔的位置、資料庫區塊大小,以及還原表格空間。

在極少數的情況下,則可能需要修改進階參數才能達到最佳效能。這些進階參數可讓專家 DBA 調整 Oracle AI Database 的行為,以滿足獨特的需求。

Oracle AI Database 會在資料庫軟體提供的起始初始化參數檔中提供值,或由「資料庫組態輔助程式 (DBCA)」為您建立的值。您可以根據組態和計畫調整資料庫的方式,編輯這些 Oracle 提供的初始化參數並新增其他參數。對於參數檔中未包含的相關初始化參數,Oracle AI Database 提供預設值。

另請參閱:

伺服器參數檔案

伺服器參數檔是初始化參數的儲存區域。

伺服器參數檔具有下列主要特性:

伺服器參數檔則不需要為從屬端應用程式維護多個文字初始化參數檔。伺服器參數檔最初是使用 CREATE SPFILE 敘述句從文字初始化參數檔建立的。它也可以直接由「資料庫組態輔助程式」建立。

另請參閱:

文字初始化參數檔案

文字初始化參數檔是包含初始化參數清單的文字檔。

此類型的參數檔 (參數檔的舊有實作) 具有下列主要特性:

文字初始化參數檔包含一系列的 key=value 組,每行一個組。例如,初始化參數檔的一部份可能如下所示:

db_name=sample
control_files=/disk1/oradata/sample_cf.dbf
db_block_size=8192
open_cursors=52
undo_management=auto
shared_pool_size=280M
pga_aggregate_target=29M
.
.
.

為了說明文字參數檔可以建立的管理功能問題,假設您使用電腦 clienta 和 clientb,而且必須能夠在任一部電腦上使用 SQL*Plus 啟動資料庫。在此情況下,每部電腦上必須存在兩個不同的文字初始化參數檔,如圖 16-7 所示。伺服器參數檔可以解決參數檔擴散的問題。

圖 7:多個初始化參數檔

cncpt247.gif 圖解描述

另請參閱:

修改初始化參數值

您可以調整初始化參數以修改資料庫的行為。參數分類為靜態或動態,決定如何修改參數。

下表簡要說明差異。

表格 5 靜態與動態初始化參數

特性 靜態 動態
需要修改參數檔 (文字或伺服器) 是 否
設定生效前需要重新啟動資料庫執行處理 是 否
在 Oracle AI Database Reference 初始化參數項目中說明為「可修改」 否 是
只能修改資料庫或執行處理 是 否

靜態參數包括 DB_BLOCK_SIZE、DB_NAME 和 COMPATIBLE。動態參數會群組成階段作業層次參數,它只會影響目前的使用者階段作業,而會影響資料庫和所有階段作業的系統層次參數。例如,MEMORY_TARGET 是系統層次參數,而 NLS_DATE_FORMAT 是階段作業層次參數。

參數變更的範圍取決於變更生效的時間。使用伺服器參數檔啟動執行處理時,您可以使用 ALTER SYSTEM SET 敘述句來變更系統層次參數的值,如下所示:

資料庫會將初始化參數的新值與舊值列印在警示日誌中。作為預防性評量,資料庫會驗證基本參數的變更,以防止將無效值寫入伺服器參數檔。

另請參閱:

診斷檔案概要

Oracle AI Database 包含一個錯誤診斷基礎架構,可用於防止、偵測、診斷和解決資料庫問題。問題包括程式碼錯誤、描述資料損毀以及客戶資料損毀等嚴重錯誤。

進階錯誤診斷性基礎架構的目標如下:

自動診斷儲存區域

自動診斷儲存區域 (ADR) 是以檔案為基礎的儲存區域,可儲存資料庫診斷資料,例如追蹤檔、警示日誌、DDL 日誌以及「狀況監督器」報表。

ADR 的主要特性包括:

前述特性可讓客戶和 Oracle Support 關聯及分析多個 Oracle 執行處理、元件及產品的診斷資料。

ADR 位於資料庫外部,可讓 Oracle AI Database 在實體資料庫無法使用時存取和管理 ADR。資料庫執行處理可以在建立資料庫之前建立 ADR。

問題與未預期事件

ADR 會主動追蹤問題,這是資料庫中的嚴重錯誤。

嚴重錯誤顯示為內部錯誤,例如 ORA-600 或其他嚴重錯誤。每個問題都有問題鍵值,這是描述問題的文字字串。

當某個問題發生多次時,ADR 會為每次的事件建立時戳的未預期事件。事件是由數字未預期事件 ID 唯一識別。發生未預期事件時,ADR 會將未預期事件警示傳送給 Enterprise Manager。嚴重錯誤的診斷和解決通常開始於未預期事件警示。

因為問題可能會在短時間內產生許多未預期事件,所以 ADR 會在達到特定臨界值之後,將洪水控制套用至未預期事件產生。受洪災控制的未預期事件會產生警示日誌項目,但不會產生未預期事件傾印。如此一來,ADR 會通知您,發生嚴重錯誤並沒有將診斷資料超載系統。

另請參閱:Oracle AI Database Administrator's Guide,瞭解錯誤診斷基礎架構的詳細資訊

ADR 結構

ADR 基本目錄為 ADR 根目錄。

ADR 基本目錄可以包含多個 ADR 本位目錄,其中每個 ADR 本位目錄都是 Oracle 產品或元件之執行處理的所有診斷資料追蹤、傾印、警示日誌等的根目錄。例如,在含有共用儲存體與 Oracle ASM 的 Oracle RAC 環境中,每個資料庫執行處理與每個 Oracle ASM 執行處理都有自己的 ADR 本位目錄。圖 16-8 說明資料庫執行處理的 ADR 目錄階層。其他 Oracle 產品或元件 (例如 Oracle ASM 或 Oracle Net Services) 的其他 ADR 本位目錄可以存在於此階層的相同 ADR 基本目錄底下。

圖 8:Oracle AI Database 執行處理的 ADR 目錄結構

admin077.gif 圖解描述

下列 Linux 範例顯示,當您在建立資料庫之前,以唯一的 SID 和資料庫名稱啟動執行處理時,Oracle AI Database 預設會在主機檔案系統中建立 ADR 作為目錄結構。SID 和資料庫名稱是「ADR 本位目錄」中檔案路徑名稱的一部分。

範例 16-1 建立 ADR

% setenv ORACLE_SID osi
% echo "DB_NAME=dbn" > init.ora
% sqlplus / as sysdba
.
.
.
Connected to an idle instance.

SQL> STARTUP NOMOUNT PFILE="./init.ora"
ORACLE instance started.

Total System Global Area  146472960 bytes
Fixed Size                  1317424 bytes
Variable Size              92276176 bytes
Database Buffers           50331648 bytes
Redo Buffers                2547712 bytes

SQL> COL NAME FORMAT a21
SQL> COL VALUE FORMAT a60
SQL> SELECT NAME, VALUE FROM V$DIAG_INFO;

NAME                  VALUE
--------------------- --------------------------------------------------------
Diag Enabled          TRUE
ADR Base              /d1/3910926111/oracle/log
ADR Home              /d1/3910926111/oracle/log/diag/rdbms/dbn/osi
Diag Trace            /d1/3910926111/oracle/log/diag/rdbms/dbn/osi/trace
Diag Alert            /d1/3910926111/oracle/log/diag/rdbms/dbn/osi/alert
Diag Incident         /d1/3910926111/oracle/log/diag/rdbms/dbn/osi/incident
Diag Cdump            /d1/3910926111/oracle/log/diag/rdbms/dbn/osi/cdump
Health Monitor        /d1/3910926111/oracle/log/diag/rdbms/dbn/osi/hm
Default Trace File    /d1/3910926111/oracle/log/diag/rdbms/dbn/osi/trace/osi_ora_29229.trc
Active Problem Count  0
Active Incident Count 0
ORACLE_HOME           /d1/3910926111/oracle
Attention Log         /d1/3910926111/oracle/log/diag/rdbms/dbn/osi/trace/attention_osi.log
13 rows selected.

警示日誌

每個資料庫都有一個警示日誌,此日誌包含依時間排列的資料庫訊息和錯誤日誌。

警示日誌內容包括下列各項:

如果管理作業成功,Oracle AI Database 會將訊息連同時戳寫入警示日誌中作為「已完成」。

Oracle AI Database 會在您第一次啟動資料庫執行處理時 (即使尚未建立資料庫),於圖 16-8 中顯示的 alert 子目錄中建立警示日誌。此檔案為 XML 格式。trace 子目錄包含純文字警示日誌。

查詢 V$DIAG_INFO 以尋找警示日誌。

注意日誌

每個資料庫都有一個處理日誌,其中包含重要和高度可見的資料庫事件。

注意日誌只包括嚴重和高度可見的資料庫事件,可讓您識別警示並採取適當的動作。每個注意日誌訊息都有各種屬性,包括目標對象、原因以及要採取的動作。關注日誌會以下列格式提供資訊:

Oracle AI Database 會在 trace 子目錄中建立名為 attention_ORACLE_SID.log 的注意日誌,如圖 16-8 所示。您也可以查詢 V$DIAG_INFO 來尋找注意日誌。

DDL 日誌

DDL 日誌的格式和基本行為與警示日誌的格式和基本行為相同,但只包含 DDL 敘述句和詳細資訊。資料庫會將 DDL 資訊寫入自己的檔案,以減少警示日誌中的雜亂情況。

DDL 日誌記錄為 DDL 文字,可選擇性地增強輔助補充資訊。每個 DDL 敘述句都有一個日誌記錄。DDL 日誌儲存在 ADR 本位目錄的 log/ddl 子目錄中。

追蹤檔

追蹤檔是一個檔案,其中包含用來調查問題的診斷資料。此外,追蹤檔也提供調整應用程式或執行處理的相關指示。

追蹤檔類型

每個伺服器與背景處理作業都可以定期寫入至相關聯的追蹤檔。檔案包含有關處理環境、狀態、活動及錯誤的資訊。

SQL 追蹤功能也會建立追蹤檔案,提供個別 SQL 陳述式的效能資訊。您可以透過各種方式啟用從屬端 ID、服務、模組、動作、階段作業、執行處理或資料庫的追蹤功能。例如,您可以執行 DBMS_MONITOR 套裝軟體中的適當程序或設定事件。

另請參閱:

追蹤檔位置

ADR 會將追蹤檔儲存在 trace 子目錄中。追蹤檔名稱是平台相依的,而且副檔名是 .trc。

通常,資料庫背景處理作業追蹤檔案名稱會包含 Oracle SID、背景處理作業名稱以及作業系統處理作業編號。RECO 處理作業的追蹤檔範例為 mytest_reco_10355.trc。

伺服器處理作業追蹤檔名稱包含 Oracle SID、字串 ora 以及作業系統處理作業編號。伺服器處理作業追蹤檔名稱為 mytest_ora_10304.trc 的一個範例。

有時追蹤檔會有對應的追蹤描述資料檔案,副檔名為 .trm。這些檔案包含稱為追蹤對應的結構資訊,資料庫用於搜尋和導覽。

另請參閱:

追蹤檔區段

當追蹤檔大小受到限制時,資料庫最多可以自動將它分割成五個區段。區段是與作用中追蹤檔具有相同名稱的個別檔案,但附加了區段編號,如 ora_1234_2.trc。

每個區段通常都是 MAX_DUMP_FILE_SIZE 所設定限制的 20%。當所有區段的組合大小超過限制時,資料庫會刪除最早的區段 (雖然從未有第一個區段,但它可能包含與處理程序初始狀態相關的資訊),然後建立一個新的空白區段。

另請參閱:Oracle AI Database Administrator's Guide,瞭解如何控制追蹤檔的大小

診斷傾印

診斷傾印檔是一種特殊類型的追蹤檔,包含狀態或結構的詳細時間點資訊。

追蹤通常是連續的診斷資料輸出。相反地,傾印通常是診斷資料的一次性輸出,用來回應事件。

追蹤傾印和未預期事件

大部分的傾印會因為未預期事件而發生。

當未預期事件發生時,資料庫會將一或多個傾印寫入至為該未預期事件建立的未預期事件目錄。未預期事件傾印的檔案名稱中也包含未預期事件編號。

在建立未預期事件期間,應用程式可能會採取堆集或系統狀態傾印作為動作的一部分。在這種情況下,資料庫會將傾印名稱附加到未預期事件檔案名稱,而非預設追蹤檔名稱。例如,因為處理中的未預期事件,資料庫會建立 prod_ora_90348.trc 檔案。未預期事件中的傾印會產生 prod_ora_90348_incident_id.trc 檔案,其中 incident_id 是未預期事件的數值 ID。在未預期事件中建立的堆集傾印動作會產生堆集傾印檔 prod_ora_90348_incident_id_dump_id.trc,其中 dump_id 是追蹤傾印的數值 ID。