專用 Exadata 基礎架構上的 Autonomous Database 高效能功能

本文將說明 Autonomous Database on Dedicated Exadata Infrastructure 中的關鍵效能調整功能。

請注意,在本節中,「您」一詞廣泛用於指組織中負責執行特定任務的任何使用者。在某些情況下,即應用程式 DBA,而其他則是應用程式開發人員。

Autonomous Database 包含數個功能,可自動監控、分析及最佳化資料庫效能。如需 Oracle Autonomous Database 的 SQL 調整與效能管理功能完整清單,以及使用它們的說明,請參閱 Oracle Database 19c SQL Tuning GuideOracle Database 23ai SQL Tuning Guide

您可以看到以下 Autonomous Database 的主要效能調整功能廣泛分類。

秘訣:

在下列影像中,您可以按一下想要進一步探索的功能。


預先定義的資料庫服務

您的應用程式如何連線至資料庫,以及您如何編寫 SQL 呼叫資料庫的程式碼,決定了應用程式之交易處理和報告作業的整體效能。

連線至 Autonomous Database 時,應用程式與資料庫的互動效能取決於您連線的資料庫服務。Autonomous Database 提供多組連線到資料庫時要使用的資料庫服務。這些連線服務的設計目的是支援不同種類的資料庫作業,如自治式資料庫的預先定義資料庫服務名稱中所述。

秘訣:

請務必檢閱預先定義之資料庫服務的重要特性,以及根據這些特性比較不同資料庫服務集合的表格,以決定哪個資料庫服務更適合您的應用程式效能需求。

連線集區

進行 Autonomous Database 連線時,您可以使用連線集區來減少重複建立和銷毀個別連線的效能負荷。這是對應用程式與資料庫互動效能有重大影響的另一個因素。

通常,只有在設計或增強應用程式以提供持續可用性時,才會考慮使用連線集區。不過,使用連線集區而非個別連線幾乎可以讓每個交易處理應用程式受益。連線集區提供下列優點:

  • 減少建立新連線物件的次數。
  • 升級連線物件重複使用。
  • 快速取得連線的程序。
  • 控制用於維護連線的資源數量。
  • 減少手動管理連線物件所需的編碼工作量。

特殊用途連線功能

Oracle Net Services (之前稱為 SQL*Net) 提供各種連線功能,可改善特定連線案例的效能。如需這些功能的說明,請參閱 Oracle Database 19c Net Services Administrator's GuideOracle Database 23ai Net Services Administrator's Guide
  • 主機託管標記功能是一種在某些交易處理應用程式中很有用的功能。如果您的應用程式重複連線到同一個資料庫服務,共置標記允許將所有這類連線導向到同一個資料庫執行處理,略過通常在連線資料庫端執行的負載平衡處理。如需詳細資訊,請參閱 Oracle Database 19cOracle Database 23ai 中的 COLOCATION_TAG of Client Connections

  • 共用伺服器組態是另一個 Autonomous Database 功能支援維護未使用連線集區設計的舊版應用程式。共用伺服器架構可讓資料庫伺服器允許許多從屬端處理作業共用非常少的伺服器處理作業。這會增加應用程式可支援的使用者數目。針對這類舊版應用程式使用共用伺服器架構,讓他們能夠縱向擴展,而無須對應用程式本身進行任何變更。

    您可以在佈建自治式容器資料庫 (ACD) 時啟用共用伺服器連線,此設定會套用至在其中建立的所有資料庫。請參閱建立自治式容器資料庫以取得指示。

    另請參閱 Oracle Database 19c Net Services Administrator's GuideOracle Database 23ai Net Services Administrator's Guide ,瞭解共用伺服器的詳細資訊,包括階段作業多工功能。

    您的自治式容器資料庫啟用共用伺服器連線之後,就不需要變更連線字串。預設的組態設為「專用」。

    附註:

    您無法對在啟用共用伺服器的自治式容器資料庫下建立的特定 Autonomous Database 停用共用伺服器,而且您無法對在啟用共用伺服器的自治式容器資料庫下建立的 Autonomous Database 使用專用連線。

SQL 效能調整功能

良好的應用程式會從撰寫完善的 SQL 開始。Oracle Autonomous Database 提供許多功能,可讓您建立高效能應用程式,並驗證 SQL 和 PL/SQL 程式碼。以下列出部分功能:

  • 自動編製索引
  • 最佳化處理程式統計資料和提示
  • 自動解決 SQL 計畫回歸
  • 自動隔離失控 SQL 敘述句
  • SQL 計畫管理
  • SQL 調整集
  • SQL 追蹤

當您開發應用程式時,可以快速瞭解這些功能如何影響您撰寫的 SQL 程式碼,因此使用 Oracle Database Actions (在您的 Autonomous Database 內建) 和 Oracle SQL Developer (您在開發系統上安裝的免費應用程式) 所提供的 SQL 工作表來改善程式碼。

SQL 追蹤

當應用程式作業花費的時間超過預期時,可以追蹤在此作業中執行的所有 SQL 敘述句,其詳細資訊包括剖析、執行以及擷取階段中的該 SQL 敘述句所花費的時間,可協助您識別並解決效能問題的原因。您可以使用 Autonomous Database 上的 SQL 追蹤來達到此目的。

Autonomous Database 中預設會停用 SQL 追蹤功能。您必須啟用它才能開始收集 SQL 追蹤資料。如需啟用及使用 SQL 追蹤的詳細指示,請參閱在 Autonomous Database 上使用 SQL 追蹤

最佳化處理程式統計資料

Autonomous Database 會自動收集最佳化處理程式統計資料,因此您不需要手動執行此作業,這有助於確保統計資料是最新的。自動統計資料收集在 Autonomous Database 中啟用,並在標準維護時段內執行。

附註:

如需維護時段時間和自動最佳化處理程式統計資料收集的詳細資訊,請參閱 Oracle Database 19c Administrator's GuideOracle Database 23ai Administrator's Guide

如需最佳化處理程式統計資料的詳細資訊,請參閱 Oracle Database 19c SQL Tuning GuideOracle Database 23ai SQL Tuning Guide

最佳化處理程式提示

最佳化處理程式提示是 SQL 敘述句中傳送指示至最佳化處理程式的特殊註解。最佳化處理程式會使用提示為敘述句選擇執行計畫,除非在某些條件下已禁止。

最佳化處理程式的 Autonomous Database 預設值和 PARALLEL 提示會因您的工作負載而有所不同:
  • Autonomous Data Warehouse具有資料倉儲的 Autonomous Database 預設會忽略 SQL 敘述句中的最佳化處理程式提示和 PARALLEL 提示。

    如果您的應用程式使用提示,您可以在階段作業或系統層次使用 ALTER SESSIONALTER SYSTEM 將參數 OPTIMIZER_IGNORE_HINTS 設定為 FALSE,即可啟用最佳化處理程式提示。

    例如,下列命令會啟用階段作業中的提示:
    ALTER SESSION 
      SET OPTIMIZER_IGNORE_HINTS=FALSE;

    您也可以使用 ALTER SESSIONALTER SYSTEM,將階段作業或系統層次的 OPTIMIZER_IGNORE_PARALLEL_HINTS 設定為 FALSE,在您的 SQL 敘述句中啟用 PARALLEL 提示。

    例如,下列命令會在您的階段作業中啟用 PARALLEL 提示:
    ALTER SESSION 
      SET OPTIMIZER_IGNORE_PARALLEL_HINTS=FALSE;
  • Autonomous Transaction Processing Autonomous Database 預設 SQL 敘述句中的榮譽最佳化處理程式提示和 PARALLEL 提示。

    您可以使用 ALTER SESSIONALTER SYSTEM,將階段作業或系統層次的 OPTIMIZER_IGNORE_HINTS 參數設為 TRUE,以停用最佳化處理程式提示。

    例如,下列命令會停用階段作業中的提示:

    ALTER SESSION 
      SET OPTIMIZER_IGNORE_HINTS=TRUE;

    您也可以使用 ALTER SESSIONALTER SYSTEM,將階段作業或系統層次的 OPTIMIZER_IGNORE_PARALLEL_HINTS 設定為 TRUE,以停用 SQL 敘述句中的 PARALLEL 提示。

    例如,下列命令會在您的階段作業中啟用 PARALLEL 提示:

    ALTER SESSION 
      SET OPTIMIZER_IGNORE_PARALLEL_HINTS=TRUE;

自動編製索引

自動編製索引會將 Autonomous Database 中的索引管理工作自動化。自動編製索引在 Autonomous Database 中預設為停用。

手動建立索引需要對資料模型、應用程式和資料分佈有深入的瞭解。在過去,DBA 負責選擇要建立的索引,然後有時 DBA 在條件變更時不會修改其選擇或維護索引。因此,改善的機會喪失,而使用不必要的指數可能成為表現負債。

Autonomous Database 中的自動編製索引功能可監控應用程式工作負載,並自動建立及維護索引。

秘訣:

如需示範這些指示的「試用」替代方案,請在 Oracle Autonomous Database Dedicated for Developers and Database Users Workshop 中執行 Lab 14:Automatic Indexing
啟用自動索引
  • 使用 DBMS_AUTO_INDEX.CONFIGURE 程序啟用自動編製索引功能。例如,執行以下敘述句可在資料庫中自動編製索引,並將任何新的自動索引建立為可見的索引,以便在 SQL 敘述句中使用這些索引。
    EXEC DBMS_AUTO_INDEX.CONFIGURE('AUTO_INDEX_MODE','IMPLEMENT');
  • 使用 DBMS_AUTO_INDEX 套裝程式報告自動工作,以及設定自動編製索引偏好設定。

    附註:

    注意:啟用自動編製索引功能時,預設會啟用自動索引的索引壓縮功能。
停用自動編製索引
使用 DBMS_AUTO_INDEX.CONFIGURE 程序停用自動編製索引功能。例如,執行以下敘述句會停用資料庫中的自動編製索引功能,因此不會建立新的自動索引。不過,現有的自動索引會保持啟用狀態。
EXEC DBMS_AUTO_INDEX.CONFIGURE('AUTO_INDEX_MODE','OFF');

如需詳細資訊,請參閱 Oracle Database 19c Administrator's Guide 中的 Managing Auto IndexesOracle Database 23ai Administrator's Guide

快速擷取

快速擷取可將高頻、單一資料列資料插入資料庫的處理最佳化。快速擷取會在將插入寫入磁碟之前,使用大型集區來緩衝插入,以改善資料插入效能。

最快速的目的是支援產生大量資訊資料的應用程式,這些資料在聚總中具有重要值,但不一定需要完整的 ACID 保證。Internet of Things (IoT) 中的許多應用程式都有快速的「火災和遺忘」類型工作負載,例如感測器資料、智慧型儀表資料,甚至是流量相機。對於這些應用程式,可能會收集資料並以高容量寫入資料庫,以供日後分析。

快速擷取與一般 Oracle Database 交易處理非常不同,這類處理會將資料記錄下來,也不會在資料寫入資料庫後遺失 (亦即已確認)。為了達到最大的擷取傳輸量,會略過一般的 Oracle 交易機制,應用程式必須負責檢查所有資料是否確實寫入資料庫。已新增可呼叫的特殊 API,以檢查資料是否已寫入資料庫。

如需快速擷取的簡介以及使用此功能所涉及的步驟,請參閱 Oracle Database 19c Performance Tuning Guide 中的 Using Fast IngestOracle Database 23ai Performance Tuning Guide

若要快速擷取 Autonomous Database ,您必須:

使用 Oracle Scheduler 的預先定義工作類別

Autonomous Database 包含要與 Oracle Scheduler 搭配使用的預先定義 job_class 值。這些工作類別可讓您將共用通用特性與行為的工作群組成較大的實體,以便透過控制配置給各個類別的資源來排列這些類別的優先順序。

透過預先定義的工作類別,您可以確保關鍵工作具有優先權和足夠的資源來完成。例如,若要讓重要的專案載入資料倉儲,您可以將所有資料倉儲工作合併成一個類別,然後透過配置高比例的可用資源來排定其他工作的優先順序。您也可以將相對優先順序指派給工作類別中的工作。

預先定義的 job_classTPURGENTTPHIGHMEDIUM 以及 LOW 會對應至對應的用戶群組。這些工作類別可讓您指定使用 DBMS_SCHEDULER.CREATE_JOB 執行工作的用戶群組。

DBMS_SCHEDULER.CREATE_JOB 程序支援 Autonomous Databasejob_type 參數的 PLSQL_BLOCKSTORED_PROCEDURE 工作類型。

例如:使用下列方法建立在 HIGH 用戶群組中執行的單一一般工作:

BEGIN
   DBMS_SCHEDULER.CREATE_JOB (
     job_name => 'update_sales',
     job_type => 'STORED_PROCEDURE',
     job_action => 'OPS.SALES_PKG.UPDATE_SALES_SUMMARY',
     start_date => '28-APR-19 07.00.00 PM Australia/Sydney',
     repeat_interval => 'FREQ=DAILY;INTERVAL=2',
     end_date => '20-NOV-19 07.00.00 PM Australia/Sydney',
     auto_drop => FALSE,
     job_class => 'HIGH',
     comments => 'My new job');
END;
/

Oracle Scheduler 注意事項:

  • 可能需要針對特定角色或權限使用 DBMS_SCHEDULER.CREATE_JOB 其他授權。ADMIN 使用者和具有 DWROLE 的使用者具有必要的 CREATE SESSIONCREATE JOB 權限。如果使用者沒有 DWROLE,則需要授與 CREATE SESSIONCREATE JOB 權限。

  • Autonomous Database 上執行的 Oracle Scheduler 工作會忽略 instance_id 工作屬性。

請參閱 Oracle Database 19cOracle Database 23ai 中的 Scheduling Jobs with Oracle Scheduler ,瞭解 Oracle Scheduler 和 DBMS_SCHEDULER.CREATE_JOB 的詳細資訊。

請參閱 Oracle Database 19c 中的 SET_ATTRIBUTE 程序Oracle Database 23ai ,瞭解工作屬性的相關資訊。

效能監控和調整工具

某些情況 (例如變更工作負載、應用程式和資料庫伺服器的資源限制,或只是網路瓶頸) 可能會導致應用程式效能問題。Oracle 提供了多種工具來幫助您監控效能、診斷效能問題,並調整應用程式或資料庫以解決問題。以下列出其中一些:
工具 詳細資訊
效能中心

Oracle Cloud Infrastructure (OCI) 主控台提供功能豐富的立即可用工具。Performance Hub 也內建 Oracle Database Actions 和 Oracle Enterprise Manager。

請參閱使用效能中心監控資料庫效能以瞭解詳細資訊。

Autonomous Database 指標

Autonomous Database 指標可協助您測量有用的量化資料,例如 CPU 和儲存使用率、成功和失敗的資料庫登入和連線嘗試次數、資料庫作業、SQL 查詢和交易等等。您可以使用度量資料來診斷 Autonomous Database 資源的問題並進行疑難排解。

請參閱使用 Autonomous Database Metrics 監控資料庫,瞭解詳細資訊,例如先決條件、使用狀況,以及專用 Exadata 基礎架構上的 Autonomous Database 可用的度量清單。

自動工作負載儲存區域 (AWR) 和自動資料庫診斷監督器 (ADDM)

其他兩種常用的工具有「自動工作負載儲存區域 (AWR)」與「自動資料庫診斷監督 (ADDM)」。

AWR 會儲存 Oracle 資料庫的效能相關統計資料,而 ADDM 是一種診斷工具,可定期分析 AWR 資料、找出任何效能問題的根本原因、提供更正問題的建議以及找出系統的非問題區域。因為 AWR 是歷史效能資料的儲存區域,所以 ADDM 可以分析事件後的效能問題,因此通常會節省時間和資源來重現問題。

如需使用這些工具的指示,以及有關資料庫效能監督與調整的詳細資訊,請參閱 Oracle Database 19c Performance Tuning GuideOracle Database 23ai Performance Tuning Guide

「效能中心」也提供 AWR 與 ADDM。請參閱使用效能中心監控資料庫效能以瞭解詳細資訊。

如需資料庫效能監督與調整的快速介紹,請參閱 Oracle Database 19c 2 Day + Performance Tuning GuideOracle Database 23ai 2 Day + Performance Tuning Guide