在專用 Exadata 基礎架構上使用自治式 AI 資料庫的 SQL 追蹤
您可以將 SQL 追蹤與專用 Exadata 基礎架構上的自治式 AI 資料庫搭配使用,以協助您識別過多資料庫工作負載的來源,例如應用程式中的高負載 SQL 敘述句。
關於 SQL 追蹤
當應用程式作業花費的時間超過預期時,取得在此作業中執行之所有 SQL 敘述句的追蹤,其詳細資訊 (例如該 SQL 敘述句在剖析、執行以及擷取階段所花費的時間) 將可協助您識別並解決效能問題的原因。您可以在自治式 AI 資料庫上使用 SQL 追蹤來達成此目標。
自治式 AI 資料庫預設會停用 SQL 追蹤功能。您必須啟用它,才能開始收集 SQL 追蹤資料。若要追蹤 SQL 敘述句,請以 ADMIN 使用者身分實行下列作業:
-
從設定資料庫開始儲存「SQL 追蹤」檔案。請參閱設定自治式 AI 資料庫的 SQL 追蹤以瞭解詳細資訊。
-
接著,啟用 SQL 追蹤功能。請參閱在 Autonomous AI 資料庫上啟用 SQL 追蹤。
注意:啟用 SQL 追蹤可能會在啟用追蹤收集時,降低階段作業的應用程式效能。由於收集和儲存追蹤資料的負荷,預期會造成此效能影響。
-
若要停止收集 SQL 追蹤資料,您必須停用 SQL 追蹤功能。請參閱停用 SQL 追蹤。
-
當您停用 SQL 追蹤功能時,在啟用追蹤功能的階段作業執行時所收集的追蹤資料會寫入您階段作業中的
SESSION_CLOUD_TRACE視觀表,以及儲存桶中的追蹤檔 (您在設定 SQL 追蹤時所設定的追蹤檔)。您有兩個檢視追蹤資料的選項:-
檢視並分析儲存至「雲端物件存放區」之追蹤檔中的「SQL 追蹤」資料。如需詳細資訊,請參閱檢視儲存在自治式 AI 資料庫之雲端物件存放區的追蹤檔。
-
檢視並分析儲存至檢視
SESSION_CLOUD_TRACE的「SQL 追蹤」資料。如需詳細資訊,請參閱在自治式 AI 資料庫上檢視 SESSION_CLOUD_TRACE 視觀表中的追蹤資料。
-
在自治式 AI 資料庫設定 SQL 追蹤
若要設定用於 SQL 追蹤的自治式 AI 資料庫,請執行下列作業:
-
建立儲存桶,將追蹤檔案儲存在雲端物件儲存中。
若要儲存 SQL 追蹤檔,儲存桶可以位於自治式 AI 資料庫支援的任何雲端物件存放區中。例如,若要在 Oracle Cloud Infrastructure Object Storage 中建立儲存桶,請參閱建立儲存桶。
提示:在 Oracle Cloud Infrastructure Object Storage 中建立儲存桶時,請務必選擇標準作為儲存層,因為 SQL 追蹤檔案僅支援在標準儲存層中建立的儲存桶。如需標準物件儲存層的資訊,請參閱瞭解儲存層。
-
使用
DBMS_CLOUD.CREATE_CREDENTIAL建立您雲端物件儲存帳戶的證明資料。舉例而言:
BEGIN DBMS_CLOUD.CREATE_CREDENTIAL( credential_name => 'DEF_CRED_NAME', username => 'adb_user@example.com', password => 'password' );END; /請參閱 CREATE_CREDENTIAL 程序,瞭解不同物件儲存服務之
username和password參數的引數詳細資訊。 -
設定初始化參數以指定用於 SQL 追蹤檔案的儲存桶雲端物件儲存 URL,以及指定用於存取雲端物件儲存的證明資料。
-
設定資料庫特性
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 資料庫支援的任何雲端物件存放區。
-
將資料庫特性
DEFAULT_CREDENTIAL設為您在步驟 2 中建立的證明資料。舉例而言:
ALTER DATABASE PROPERTY SET DEFAULT_CREDENTIAL = 'ADMIN.DEF_CRED_NAME';必須在證明資料中包含綱要名稱。在此範例中,綱要為
ADMIN。
-
對自治式 AI 資料庫啟用 SQL 追蹤
注意:啟用 SQL 追蹤可能會在啟用追蹤收集時,降低階段作業的應用程式效能。由於收集和儲存追蹤資料的負荷,預期會造成此效能影響。
若要啟用資料庫階段作業的 SQL 追蹤,請執行下列作業:
-
(選擇性) 設定應用程式的從屬端 ID。此步驟為選用步驟,但建議使用此步驟。當追蹤檔寫入「雲端物件存放區」時,SQL 追蹤會使用從屬端 ID 作為追蹤檔名稱的元件。
舉例而言:
BEGIN DBMS_SESSION.SET_IDENTIFIER('sqlt_test'); END; / -
選擇性地設定應用程式的模組名稱。此步驟為選用步驟,但建議執行。將追蹤檔寫入「雲端物件存放區」時,SQL 追蹤會使用模組名稱作為追蹤檔名稱的元件。
舉例而言:
BEGIN DBMS_APPLICATION_INFO.SET_MODULE('modname', null); END; / -
啟用「SQL 追蹤」功能。
ALTER SESSION SET SQL_TRACE = TRUE; -
執行您的工作負載。
此步驟涉及執行整個應用程式或應用程式的特定部分。當您在資料庫階段作業中執行工作負載時,系統會收集 SQL 追蹤資料。
-
停用 SQL 追蹤。
當您停用 SQL 追蹤時,階段作業收集的資料會寫入階段作業中的表格,以及在您設定 SQL 追蹤時設定的儲存桶追蹤檔案。
停用 SQL 指令追蹤
若要停用 SQL 追蹤,請執行下列作業:
-
停用「SQL 追蹤」功能。
ALTER SESSION SET SQL_TRACE = FALSE; -
視環境需要,您可以視需要重設資料庫特性
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
檔案名稱的元件為:
-
default_logging_bucket :是
DEFAULT_LOGGING_BUCKET資料庫特性的值。請參閱設定自治式 AI 資料庫的 SQL 追蹤以瞭解詳細資訊。 -
clientID:為用戶端識別碼。請參閱在自治式 AI 資料庫啟用 SQL 追蹤以瞭解詳細資訊。 -
moduleName:為模組名稱。請參閱在自治式 AI 資料庫啟用 SQL 追蹤以瞭解詳細資訊。 -
numID1_numID2:「SQL 追蹤」功能提供的兩個 ID。numID1和numID2數值會使用追蹤功能,在雲端物件儲存的相同儲存桶中建立追蹤檔案,以唯一的方式區分每個追蹤檔案名稱與其他階段作業。當資料庫服務支援併行執行,且階段作業執行平行查詢時,「SQL 追蹤」功能可以產生多個具有不同
numID1和numID2值的追蹤檔。注意:在同一個階段作業內多次啟用和停用 SQL 追蹤時,每個追蹤重複項目都會在「雲端物件存放區」中產生個別的追蹤檔。為了避免覆寫在階段作業中產生的上一個追蹤,後續產生的檔案會遵循相同的命名慣例,並在追蹤檔案名稱加上數字尾碼。此數值字尾以數字 1 開始,之後每個追蹤重複都會以 1 遞增。
例如,當您將從屬端 ID 設為 "sql_test",並將模組名稱設為 "modname" 時,下列為範例產生的追蹤檔案名稱:
sqltrace/sqlt_test/modname/sqltrace_5415_56432.trc
您可以執行 TKPROF,將追蹤檔轉譯成可讀取的輸出檔。
-
將追蹤檔從「物件存放區」複製到本機系統。
-
瀏覽至儲存追蹤檔的目錄。
-
使用下列語法,從作業系統提示執行
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]輸入檔和輸出檔是唯一必要的引數。
-
若要檢視線上說明,請呼叫不含引數的
TKPROF。如需有關使用
TKPROF公用程式的資訊,請參閱 Oracle Database 19c SQL Tuning Guide 或 Oracle 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_NUMBER 和 TRACE。
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 會累計顯示所有重複項目的追蹤資料。因此,在先前停用追蹤之後,在階段作業中重新啟用追蹤並不會移除先前重複所產生的追蹤資料。