<!--
@page { margin: 2cm }
P { margin-bottom: 0.21cm }
-->
当使用oracle
AUTOTRACE功能时,在oracle内部实际上启动了两个会话(session)连接,一个session用于执行查询等操作,另一个session用于记录执行计划和输出最终结果等操作。
在启用AUTOTRACE之前:
SQL>
select sid,serial#,username from v$session t where t.username is not
null;
SID
SERIAL# USERNAME
----------
---------- ------------------------------
125
5 SYS
在启用AUTOTRACE之后:
SQL>
set autotrace on;
SQL>
select sid,serial#,username from v$session t where t.username is not
null;
SID
SERIAL# USERNAME
----------
---------- ------------------------------
125
5 SYS
139
18 SYS
可以看到oracle建立了一个新的session.
并且这两个session由同一个进程创建:
SQL>
select t.sid,t.serial#,t.username,t2.pid,t2.spid from v$session
t,v$process t2 where t.paddr=t2.addr and t.username is not null;
SID
SERIAL# USERNAME PID SPID
----------
---------- ------------------------------ ----------
------------------------
125
5 SYS 19 1963
139
18 SYS 19 1963
而此处的v$process.spid正是操作系统的进程号:
SQL>
!ps -ef|grep 1963|grep -v grep
oracle
1963 1692 0 Apr09 ? 00:00:01 oracleorcl
(DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
以上可知,一个进程在数据库中可能对应多个session。通过在全局启用10046事件可以得到AUTOTRACE的内部操作。使用TKPROF格式化跟踪文件,查看跟踪文件或格式化后的文件可以查看以上两个session是如何工作的(内部操作)。
<!--
@page { margin: 2cm }
P { margin-bottom: 0.21cm }
-->
获取跟踪文件sql语句:
select
d.value||'/'||lower(rtrim(i.instance,chr(0)))||'_ora_'||p.spid||'.trc'
trace_file_name
from
(select
p.spid
from
sys.v$mystat m,sys.v$session s,sys.v$process p
where
m.statistic#=1 and s.sid = m.sid and p.addr = s.paddr) p,
(select
t.instance from sys.v$thread t,sys.v$parameter v
where
v.name='thread' and (v.value=0 or t.thread#=to_number(v.value))) i,
(select
value from sys.v$parameter where name= 'user_dump_dest') d;
<!--
@page { margin: 2cm }
P { margin-bottom: 0.21cm }
-->
获取正在执行的 sql:
select
sql_text from v$sqltext a
where
a.hash_value=(select sql_hash_value
from v$session b
where b.sid='&sid') --sid
order
by piece asc
/
<!--
@page { margin: 2cm }
P { margin-bottom: 0.21cm }
-->
来自
: 深入解析Oracle.DBA入门进阶与诊断案例
分享到:
相关推荐
AUTOTRACE是一个SQL*Plus工具,用于跟踪SQL的执行计划,收集执行时所耗用资源的统计信息,是SQL优化工具之一,下面给出启用AUTOTRACE 功能步骤。
10.1.2 Oracle 10g AUTOTRACE功能的增强 473 10.1.3 AUTOTRACE功能的内部操作 475 10.1.4 使用AUTOTRACE功能辅助SQL优化 477 10.2 获取SQL执行计划的方法 479 10.2.1 通过V$SQL_PLAN获得执行计划 479 ...
10.1 使用AUTOTRACE功能辅助SQL优化 10.2 获取SQL执行计划的方法 10.3 捕获问题SQL解决过度CPU消耗问题 10.4 使用SQL_TRACE/10046事件进行数据库诊断 10.5 使用物化视图进行翻页性能调整 ...
10.1 使用AUTOTRACE功能辅助SQL优化 10.2 获取SQL执行计划的方法 10.3 捕获问题SQL解决过度CPU消耗问题 10.4 使用SQL_TRACE/10046事件进行数据库诊断 10.5 使用物化视图进行翻页性能调整 ...
10.1 使用AUTOTRACE功能辅助SQL优化 10.2 获取SQL执行计划的方法 10.3 捕获问题SQL解决过度CPU消耗问题 10.4 使用SQL_TRACE/10046事件进行数据库诊断 10.5 使用物化视图进行翻页性能调整 ...
AutoTrace是用于将位图转换为矢量图形的实用程序。 特征 追踪轮廓和中线 减少颜色和去除斑点 支持很多输入输出格式 执照 该程序可以在GNU通用公共许可证下使用。 输入和输出功能( input-*.[ch]和output-*.[ch] )...
自动追踪 运行一个过程,并在一个终端窗口中为您提供输出以及该过程中的其他遥测。 这是我通过使用以下命令查看strace和... 如果您需要其他功能,请提高PR 安装 # Requires: # python (2 or 3) # pip pip install au
##较早且功能齐全的AutoTrace系统需要Matlab以及一些与GTK +相关的python依赖项。 由于有GTK +,尽管可以使用MacPorts()将其安装在Mac OS X上,但该版本最好在Linux上运行。 ##(正在开发中)目前正在开发不包含...
SQL*PLUS下使用AUTOTRACE1.AUTOTRACE简介AUTOTRACE是SQL*Plus的一项功能,其作用是自动跟踪SQL语句,为SQL语句生成一个执行计划并且提供与该语句的处理有关的统计信息。SQL*PlusAUTOTRACE可以用来替代SQLTrace使用,...
自动化思维,数据和功能分开处理,用数据驱动程序自动运行 接口化设计,数据与程序的对接方式要清晰明了 二维数据应用,应用维度组织数据,二维数据最常用 代码 # AutoTrace.py import turtle as t t.title(自动...
注意:此版本的库是功能原型。 将来可能会更改实现。安装该gem使用C扩展名从Ruby OpenSSL::SSL::SSLSocket对象提取数据。 这意味着必须使用与编译Ruby解释器相同的OpenSSL标头来构建Gem。 查找include目录的逻辑...
在以前查看SQL执行计划的时候,我都是使用set autotrace命令,不过现在看来,DBMS_XPLAN包给出了更加简化的获取和显示计划的方式。 这5个函数分别对应不同的显示计划的方式,DBMS_XPLAN包不仅可以获取解释计划,它还...
柱状图是 Oracle 的一项功能,展示了列上的数据分布,大致可理解为列上每个值的记录数,即数据倾斜度。可以使用 `User_tab_statistics`、`User_ind_statistics` 和 `User_tab_col_statistics` 等视图查看统计信息。 ...
可以查看SQL语句的执行情况:通过下方的AutoTrace窗口 ,看到SQL语句的实际执行结果和执行效率。 支持历史SQL(F8) :可以方便的查询以前执行过的SQL,不用反复重新输入。 可以执行匿名块,存储过程,从...
8.5.5 使用 AUTOTRACE 获得 SQL 语句 执行计划和统计数据 8.6 优化回退段 8.6.1 最小化回退段争用 8.6.2 使动态扩充最小化 8.6.3 分布回退段的 I/O 8.7 优化索引 8.7.1 怎样确定和重建产生碎片的索引 8.7.2 ...
§12.8.6 AUTOTRACE 实用程序 157 第13章 数据访问方法 160 §13.1 使用索引的访问方法 161 §13.1.1 何时创建索引 161 §13.1.2 索引列和表达式的选择 161 §13.1.3 选择复合索引的主列 161 §13.1.4 要用可选择性...