在專用 Exadata 基礎架構上使用自治式 AI 資料庫的 SQL 追蹤

您可以將 SQL 追蹤與專用 Exadata 基礎架構上的自治式 AI 資料庫搭配使用,以協助您識別過多資料庫工作負載的來源,例如應用程式中的高負載 SQL 敘述句。

關於 SQL 追蹤

當應用程式作業花費的時間超過預期時,取得在此作業中執行之所有 SQL 敘述句的追蹤,其詳細資訊 (例如該 SQL 敘述句在剖析、執行以及擷取階段所花費的時間) 將可協助您識別並解決效能問題的原因。您可以在自治式 AI 資料庫上使用 SQL 追蹤來達成此目標。

自治式 AI 資料庫預設會停用 SQL 追蹤功能。您必須啟用它,才能開始收集 SQL 追蹤資料。若要追蹤 SQL 敘述句,請以 ADMIN 使用者身分實行下列作業:

在自治式 AI 資料庫設定 SQL 追蹤

若要設定用於 SQL 追蹤的自治式 AI 資料庫,請執行下列作業:

  1. 建立儲存桶,將追蹤檔案儲存在雲端物件儲存中。

    若要儲存 SQL 追蹤檔,儲存桶可以位於自治式 AI 資料庫支援的任何雲端物件存放區中。例如,若要在 Oracle Cloud Infrastructure Object Storage 中建立儲存桶,請參閱建立儲存桶

    提示:在 Oracle Cloud Infrastructure Object Storage 中建立儲存桶時,請務必選擇標準作為儲存層,因為 SQL 追蹤檔案僅支援在標準儲存層中建立的儲存桶。如需標準物件儲存層的資訊,請參閱瞭解儲存層

  2. 使用 DBMS_CLOUD.CREATE_CREDENTIAL 建立您雲端物件儲存帳戶的證明資料。

    舉例而言:

     BEGIN
       DBMS_CLOUD.CREATE_CREDENTIAL(
         credential_name => 'DEF_CRED_NAME',
         username => 'adb_user@example.com',
         password => 'password'
     );END;
     /
    

    請參閱 CREATE_CREDENTIAL 程序,瞭解不同物件儲存服務之 usernamepassword 參數的引數詳細資訊。

  3. 設定初始化參數以指定用於 SQL 追蹤檔案的儲存桶雲端物件儲存 URL,以及指定用於存取雲端物件儲存的證明資料。

    1. 設定資料庫特性 DEFAULT_LOGGING_BUCKET,以指定雲端物件儲存上的日誌記錄儲存桶。

      例如,如果您使用 Oracle Cloud Infrastructure (OCI) Object Storage 建立儲存桶:

       SET DEFINE OFF;
       ALTER DATABASE PROPERTY SET
          DEFAULT_LOGGING_BUCKET = 'https://objectstorage.us-ashburn-1.oraclecloud.com/n/namespace-string/b/bucket_name/o/';
      

      其中 namespace-string 是 OCI 物件儲存命名空間,而 bucket_name 是您先前建立的儲存桶名稱。請參閱瞭解物件儲存命名空間以瞭解詳細資訊。

      如需區域清單,請參閱區域和可用性網域

      用於 SQL 追蹤檔案的雲端物件存放區可以是自治式 AI 資料庫支援的任何雲端物件存放區。

    2. 將資料庫特性 DEFAULT_CREDENTIAL 設為您在步驟 2 中建立的證明資料。

      舉例而言:

       ALTER DATABASE PROPERTY SET DEFAULT_CREDENTIAL = 'ADMIN.DEF_CRED_NAME';
      

      必須在證明資料中包含綱要名稱。在此範例中,綱要為 ADMIN

對自治式 AI 資料庫啟用 SQL 追蹤

注意:啟用 SQL 追蹤可能會在啟用追蹤收集時,降低階段作業的應用程式效能。由於收集和儲存追蹤資料的負荷,預期會造成此效能影響。

若要啟用資料庫階段作業的 SQL 追蹤,請執行下列作業:

  1. (選擇性) 設定應用程式的從屬端 ID。此步驟為選用步驟,但建議使用此步驟。當追蹤檔寫入「雲端物件存放區」時,SQL 追蹤會使用從屬端 ID 作為追蹤檔名稱的元件。

    舉例而言:

     BEGIN
       DBMS_SESSION.SET_IDENTIFIER('sqlt_test');
     END;
     /
    
  2. 選擇性地設定應用程式的模組名稱。此步驟為選用步驟,但建議執行。將追蹤檔寫入「雲端物件存放區」時,SQL 追蹤會使用模組名稱作為追蹤檔名稱的元件。

    舉例而言:

     BEGIN
       DBMS_APPLICATION_INFO.SET_MODULE('modname', null);
     END;
     /
    
  3. 啟用「SQL 追蹤」功能。

     ALTER SESSION SET SQL_TRACE = TRUE;
    
  4. 執行您的工作負載。

    此步驟涉及執行整個應用程式或應用程式的特定部分。當您在資料庫階段作業中執行工作負載時,系統會收集 SQL 追蹤資料。

  5. 停用 SQL 追蹤。

    當您停用 SQL 追蹤時,階段作業收集的資料會寫入階段作業中的表格,以及在您設定 SQL 追蹤時設定的儲存桶追蹤檔案。

停用 SQL 指令追蹤

若要停用 SQL 追蹤,請執行下列作業:

  1. 停用「SQL 追蹤」功能。

     ALTER SESSION SET SQL_TRACE = FALSE;
    
  2. 視環境需要,您可以視需要重設資料庫特性 DEFAULT_LOGGING_BUCKET,以清除雲端物件儲存上日誌記錄儲存桶的值。

    舉例而言:

     ALTER DATABASE PROPERTY SET DEFAULT_LOGGING_BUCKET = '';
    

停用 SQL 追蹤功能時,會將啟用追蹤功能的階段作業執行時所收集的追蹤資料複製到表格,並傳送至雲端物件存放區上的追蹤檔。

在自治式 AI 資料庫上檢視儲存至雲端物件存放區的追蹤檔

您可以使用 SQL 追蹤檔資料分析自治式 AI 資料庫的應用程式效能。當您在資料庫階段作業中停用 SQL 追蹤時,資料會寫入以 DEFAULT_LOGGING_BUCKET 設定的雲端物件存放區儲存桶。

「SQL 追蹤」功能會以下列格式,將階段作業中收集的追蹤資料寫入「雲端物件存放區」:

default_logging_bucket/sqltrace/clientID/moduleName/sqltrace_numID1_numID2.trc

檔案名稱的元件為:

例如,當您將從屬端 ID 設為 "sql_test",並將模組名稱設為 "modname" 時,下列為範例產生的追蹤檔案名稱:

sqltrace/sqlt_test/modname/sqltrace_5415_56432.trc

您可以執行 TKPROF,將追蹤檔轉譯成可讀取的輸出檔。

  1. 將追蹤檔從「物件存放區」複製到本機系統。

  2. 瀏覽至儲存追蹤檔的目錄。

  3. 使用下列語法,從作業系統提示執行 TKPROF 公用程式:

     tkprof filename1 filename2 [waits=yes|no] [sort=option] [print=n]
      [aggregate=yes|no] [insert=filename3] [sys=yes|no] [table=schema.table]
      [explain=user/password] [record=filename4] [width=n]
    

    輸入檔和輸出檔是唯一必要的引數。

  4. 若要檢視線上說明,請呼叫不含引數的 TKPROF

    如需有關使用 TKPROF 公用程式的資訊,請參閱 Oracle Database 19c SQL Tuning GuideOracle Database 26ai SQL Tuning Guide 中的 Tools for End-to-End Application Tracing

在自治式 AI 資料庫的 SESSION_CLOUD_TRACE 檢視中檢視追蹤資料

啟用「SQL 追蹤」時,在啟用追蹤的階段作業中,SESSION_CLOUD_TRACE 視觀表會提供與儲存在「雲端物件存放區」追蹤檔相同的追蹤資訊。

雖然您仍在資料庫階段作業中,您可以在 SESSION_CLOUD_TRACE 視觀表中檢視 SQL 追蹤資料。SESSION_CLOUD_TRACE 視觀表包含兩個資料欄:ROW_NUMBERTRACE

DESC SESSION_CLOUD_TRACE

Name       Null? Type
---------- ----- ------------------------------
ROW_NUMBER       NUMBER
TRACE            VARCHAR2(32767)

ROW_NUMBER 會指定 TRACE 資料欄中追蹤資料的順序。寫入追蹤檔的每一行追蹤輸出都會成為表格中的一個資料列,可在 TRACE 資料欄中使用。

停用階段作業的 SQL 追蹤之後,您可以在 SESSION_CLOUD_TRACE 視觀表上執行查詢。

舉例而言:

SELECT trace FROM SESSION_CLOUD_TRACE ORDERBY row_number;

SESSION_CLOUD_TRACE 中的資料會保留階段作業的持續時間。在您登出或關閉階段作業之後,資料就無法再使用。

如果在同一個階段作業內多次啟用和停用「SQL 追蹤」,SESSION_CLOUD_TRACE 會累計顯示所有重複項目的追蹤資料。因此,在先前停用追蹤之後,在階段作業中重新啟用追蹤並不會移除先前重複所產生的追蹤資料。