在专用 Exadata 基础结构上的 Autonomous Database 上使用 SQL 跟踪
您可以将 SQL 跟踪与 Autonomous Database on Dedicated Exadata Infrastructure 一起使用,以帮助您确定过度数据库工作负载的来源,例如应用中的高负载 SQL 语句。
关于 SQL 跟踪
当应用程序操作花费的时间比预期的要长时,获取在此操作过程中执行的所有 SQL 语句的跟踪以及详细信息(例如,该 SQL 语句在语法分析、执行和提取阶段所花费的时间)将帮助您确定并解决性能问题的原因。您可以在 an Autonomous Database 上使用 SQL 跟踪来实现此目的。
- 首先配置数据库以保存 SQL 跟踪文件。有关详细信息,请参阅在 Autonomous Database 上配置 SQL 跟踪。
- 然后,启用 SQL 跟踪。请参阅在 Autonomous Database 上启用 SQL 跟踪。
注意:
启用 SQL 跟踪可能会在启用跟踪收集时降低会话的应用程序性能。这种性能影响是由于收集和保存跟踪数据的开销所致。 - 要停止收集 SQL 跟踪数据,必须禁用 SQL 跟踪。请参阅禁用 SQL 跟踪。
- 禁用 SQL 跟踪时,在启用了跟踪的情况下运行会话时收集的跟踪数据将写入会话中的
SESSION_CLOUD_TRACE
视图以及存储桶中的跟踪文件,在设置 SQL 跟踪时会对其进行配置。可以使用两个选项来查看跟踪数据:- 查看和分析保存到云对象存储的跟踪文件中的 SQL 跟踪数据。有关详细信息,请参阅 View Trace File Saved to Cloud Object Store on Autonomous Database 。
- 查看和分析保存到视图
SESSION_CLOUD_TRACE
的 SQL 跟踪数据。有关详细信息,请参阅在 Autonomous Database 上的 SESSION_CLOUD_TRACE 视图中查看跟踪数据。
在 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
:是客户机标识符。有关详细信息,请参阅在 Autonomous Database 上启用 SQL 跟踪。 -
moduleName
:是模块名称。有关详细信息,请参阅在 Autonomous Database 上启用 SQL 跟踪。 -
numID1
_numID2
:是 SQL 跟踪工具提供的两个标识符。numID1
和numID2
数值使用在云对象存储的同一存储桶中跟踪和创建跟踪文件,可唯一地区分每个跟踪文件名与其他会话。当数据库服务支持并行操作并且会话运行并行查询时,SQL 跟踪工具可以生成多个具有不同
numID1
和numID2
值的跟踪文件。
注意:
如果在同一会话中多次启用和禁用 SQL 跟踪,则每次跟踪迭代都会在云对象存储中生成单独的跟踪文件。为了避免覆盖会话中生成的先前跟踪,随后生成的文件遵循相同的命名约定,并向跟踪文件名添加数字后缀。此数字后缀以数字 1 开头,并在此后每次跟踪迭代时递增 1。例如,以下是将客户机标识符设置为 "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
会累计显示所有迭代的跟踪数据。因此,在之前禁用跟踪之后在会话中重新启用跟踪不会删除早期迭代生成的跟踪数据。