M_SQLSCRIPT_PLAN_PROFILER_RESULTS 视图包含以下列: 名称数据类型描述PROCEDURE_DATABASE_ID整数最外层过程的连接 IDPROCEDURE_DATABASE_NAMENVARCHAR(256)最外层过程的数据库名称PROCEDURE_SCHEMA_NAMENVARCHAR(256)最外层过程的模式名称PROCEDURE_LIBRARY_NAMENVARCHAR(256)最外层过程的库名PROCEDURE_NAMENVARCHAR(256)最外层过程的名称RESULT_ID整数参数文件结果标识操作员VARCHAR(5000)操作名称OPERATOR_STRINGNCLOB运算符字符串OPERATOR_DETAILSNCLOB工序详细信息START_TIME时戳工序的开始时间END_TIME时戳工序的结束时间持续时间BIGINTSTART_TIME 和 END_TIME 之间的时钟时间(微秒)ACTIVE_TIME_SELFBIGINT在操作本身花费的时钟时间(以微秒为单位),不包括其子项ACTIVE_TIME_CUMULATIVEBIGINT在操作本身及其子项中花费的总时钟时间(以微秒为单位)CPU_TIME_SELFBIGINT在操作本身花费的 CPU 时间(以微秒为单位),不包括其子项CPU_TIME_CUMULATIVEBIGINT在操作本身及其子项中花费的总 CPU 时间(以微秒为单位)CONNECTION_ID整数用于操作的连接标识TRANSACTION_ID整数用于操作的事务标识STATEMENT_IDVARCHAR(20)用于操作的语句标识THREAD_IDBIGINT用于操作的线程标识OPERATOR_DATABASE_NAMENVARCHAR(256)定义 运算符的过程或函数的数据库名称OPERATOR_SCHEMA_NAMENVARCHAR(256)定义 运算符的过程或函数的模式名称OPERATOR_LIBRARY_NAMENVARCHAR(256)定义运算符的过程/函数的库名称OPERATOR_PROCEDURE_NAMENVARCHAR(256)定义操作符的过程/函数的名称OPERATOR_LINE整数SQL 运算符行OPERATOR_COLUMN整数运算符的 SQL 列OPERATOR_POSITION整数运算符的 SQL 位置OPERATOR_HOSTVARCHAR(64)执行操作的主机OPERATOR_PORT整数执行操作的端口OPERATOR_ID整数操作 ID(不能连接到具有相同名称的任何其它视图)PARENT_OPERATOR_ID整数父工序的 ID(不能连接到具有相同名称的任何其他视图)PROCEDURE_HOSTVARCHAR(64)启动最外层过程的主机的名称PROCEDURE_PORT整数启动最外层过程的端口USED_MEMORY_SIZE_SELFBIGINT操作本身使用的内存,不包括其子项(以字节为单位)USED_MEMORY_SIZE_CUMULATIVEBIGINT操作本身及其子项中使用的总内存(字节)
以下列用于跟踪每个运算符的内存使用情况(类似于 CPU 时间和活动时间):
这些列显示每个 SQL 语句的内存使用情况,例如 M_ACTIVE_PROCEDURES 中的 STATEMENT_EXECUTION_MEMORY_SIZE 和 STATEMENT_MATERIALIZATION_MEMORY_SIZE。对于未收集或未计算内存消耗的条目,显示的值为 '-1'。
必须启用以下两个配置才能激活资源跟踪:
alter system alter configuration ('global.ini', 'system') set ('resource_tracking', 'enable_tracking') = 'true' with reconfigure;alter system alter configuration ('global.ini', 'system') set ('resource_tracking', 'memory_tracking') = 'true' with reconfigure;示例代码do begin v1 = select * from small_table with hint(no_inline); v2 = select * from big_table with hint(no_inline); select * from :v1 union all select * from :v2;end with hint(sqlscript_plan_profiler); M_SQLSCRIPT_PLAN_PROFILER_RESULTS 中的简化结果: 操作员OPERATOR_STRINGOPERATOR_DETAILSUSED_MEMORY_SELFUSED_MEMORY_CUMULATIVE执行 -14084734 执行 SePlan -14084734 顺序操作 -14084734 初始操作 -1-1 并行操作 -14084734 并行评估 -14084734 ( + + from big_table with hint(no_inline) -14035899 执行 SQL 语句 ...,语句执行内存:,itab 大小:4035899 ( + )4035899 表分配工序select * from small_table with hint(no_inline) -116067 执行 SQL 语句 ...,语句执行内存:from $$_SS_SE_TAB_VAR_V1_2$$ "V1" union all ... -132768 执行 SQL 语句 ...,语句执行内存:
以下列提供有关嵌套调用的更多详细信息:
示例代码该示例说明了上述列的内容。create or replace procedure p2(out o table(a int)) as begin insert into t1 values (2); o = select * from t1; end; create or replace procedure p1 as begin call p2(v) with hint(no_inline); select * from :v; end; call p1 with hint(sqlscript_plan_profiler); 下表显示简化的结果输出。 PROCEDURE_SCHEMA_NAMEPROCEDURE_NAME操作员OPERATOR_STRINGOPERATOR_SCHEMA_NAMEOPERATOR_PROCEDURE_NAMEOPERATOR_LINEOPERATOR_COLUMNOPERATOR_POSITION系统P1调用调用 p1 系统P1编译 系统P1执行 SePlan 系统P1初始操作 系统P1调用操作使用提示 (no_inline) 调用 p2(v)系统P13232系统P1编译 系统P1执行 SePlan 系统P1初始操作 系统P1DML 操作insert into t1 values (2)系统P23252系统P1表分配工序select * from t1系统P24281系统P1终端操作 系统P1获取元素操作 系统P131040系统P1选择工序select * from :v系统P14267系统P1终端操作