在專用 Exadata 基礎架構上的 Autonomous Database 上使用 SQL 追蹤
您可以使用 SQL 追蹤搭配 Autonomous Database on Dedicated Exadata Infrastructure ,協助您識別過多資料庫工作負載的來源,例如應用程式中的高負載 SQL 陳述式。
關於 SQL 追蹤
當應用程式作業花費的時間超過預期時,可以追蹤在此作業中執行的所有 SQL 敘述句,其詳細資訊包括剖析、執行以及擷取階段中的該 SQL 敘述句所花費的時間,可協助您識別並解決效能問題的原因。您可以使用 Autonomous Database 上的 SQL 追蹤來達到此目的。
- 從設定資料庫開始以儲存 SQL 追蹤檔。請參閱在 Autonomous Database 上設定 SQL 追蹤以瞭解詳細資訊。
- 然後,啟用 SQL 追蹤。請參閱啟用 Autonomous Database 上的 SQL 追蹤。
附註:
啟用 SQL 追蹤功能可能會在啟用追蹤收集時,降低階段作業的應用程式效能。此效能影響預期是因為收集並儲存追蹤資料的超載所致。 - 若要停止收集 SQL 追蹤資料,您必須停用 SQL 追蹤。請參閱停用 SQL 追蹤。
- 當您停用 SQL 追蹤時,在階段作業執行並啟用追蹤功能時所收集的追蹤資料會寫入階段作業中的
SESSION_CLOUD_TRACE
視觀表,以及您在設定 SQL 追蹤時設定的儲存桶追蹤檔。有兩個選項可以檢視追蹤資料:- 檢視並分析儲存至「雲端物件存放區」之追蹤檔中的「SQL 追蹤」資料。請參閱檢視儲存至 Autonomous Database 上雲端物件存放區的追蹤檔以瞭解詳細資訊。
- 檢視並分析儲存至檢視
SESSION_CLOUD_TRACE
的 SQL 追蹤資料。如需詳細資訊,請參閱在 Autonomous Database 的 SESSION_CLOUD_TRACE View 中檢視追蹤資料。
在 Autonomous Database 上啟用 SQL 追蹤
附註:
啟用 SQL 追蹤功能可能會在啟用追蹤收集時,降低階段作業的應用程式效能。此效能影響預期是因為收集並儲存追蹤資料的超載所致。若要啟用資料庫階段作業的 SQL 追蹤,請執行下列動作:
在 Autonomous Database 上檢視儲存至雲端物件存放區的追蹤檔
DEFAULT_LOGGING_BUCKET
設定的雲端物件存放區儲存桶。
「SQL 追蹤」功能會以下列格式,將階段作業中收集的追蹤資料寫入「雲端物件存放區」:
default_logging_bucket/sqltrace/clientID/moduleName/sqltrace_numID1_numID2.trc
檔案名稱的元件為:
-
default_logging_bucket :是
DEFAULT_LOGGING_BUCKET
資料庫特性的值。請參閱在 Autonomous Database 上設定 SQL 追蹤以瞭解詳細資訊。 -
clientID
:是從屬端 ID。請參閱啟用 Autonomous Database 上的 SQL 追蹤以瞭解詳細資訊。 -
moduleName
:是模組名稱。請參閱啟用 Autonomous Database 上的 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
,將追蹤檔轉譯成可讀取的輸出檔。
在 Autonomous Database 上的 SESSION_CLOUD_TRACE 檢視中檢視追蹤資料
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
會累計顯示所有重複項目的追蹤資料。因此,在先前停用追蹤之後,於階段作業中重新啟用追蹤並不會移除先前反覆產生的追蹤資料。