oraclesqltrace
㈠ 如何删除大量oracle中的小trace文件
删除大量的oracle的trace文件需要写shell脚本。
比如删除一个月前的trace文件
find /u01/app/oracle/diag/rdbms/testgg1/testgg1/trace -mtime +30 -type f -name "*" -exec rm -rf {} \;
可以写成shell脚本如下:
[oracle@Primary shell]$ vi delete_trace.sh
#! /bin/sh
export ORACLE_SID=testgg1
VALUE=`sqlplus -S "/ as sysdba" << EOF_SQLPLus
set pagesize 0 feedback off verify off heading off echo off
select value from v\\\$diag_info where name='Diag Trace';
exit;
END`
find $VALUE -mtime +30 -type f -name "*" -exec rm -rf {} \;
~
配合crontab自动删除一个月前的trace文件,由于某些数据库可能会产生trace文件比较多如果没有及时去清理这些无效的trace文件,很容易导致空间暴涨,做一个job自动去删除,免去了DBA的烦恼。
Shell可以在DBA的运维过程中带来了很多的方便,目前正在学习shell,谨以此纪录并提高自己
㈡ oracle 中的sql_trace是什么意思
sql 跟踪记录, 就是某个时间段内执行的sql的详细记录, 包含sql、开始时间、等待时间、运行时间、结果条数等等, 是用来分析sql性能的
㈢ 如何查看oracle trace 文件
1.获得当前trace文件生成路径
SQL> select tracefile from v$process where addr in (select paddr from v$session where sid in (select sid from v$mystat));
1
1
TRACEFILE
f:\Oracle\administrator\diag\rdbms\orcl\orcl\trace\orcl_ora_1160.trc
1
1
2.开启当前session的trace
SQL> alter session set sql_trace=true;
SQL> select count(*) from t1;
1
2
3
1
2
3
3.转换trc文件内容为可读的输出结果
C:\Documents and Settings\Administrator>tkprof f:\oracle\administrator\diag\rdbm
s\orcl\orcl\trace\orcl_ora_1160.trc output=c:\aa.txt
TKPROF: Release 11.2.0.1.0 - Development on 星期六 10月 6 23:51:07 2012
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
1
2
3
4
5
1
2
3
4
5
4.打开c:\aa.txt, 就会看到关于SQL语句 ‘ select count(*) from t1;’ 的执行计划
SQL ID: 5bc0v4my7dvr5
Plan Hash: 3724264953
select count(*) from t1
call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 1 0.00 0.04 0 1 0 0
Execute 1 0.00 0.00 0 0 0 0
Fetch 2 0.03 0.01 0 1070 0 1
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 4 0.03 0.06 0 1071 0 1
Misses in library cache ring parse: 1
Optimizer mode: ALL_ROWS
Parsing user id: 91
Rows Row Source Operation
------- ---------------------------------------------------
1 SORT AGGREGATE (cr=1070 pr=0 pw=0 time=0 us)
72597 TABLE ACCESS FULL T1 (cr=1070 pr=0 pw=0 time=172543 us cost=298 size=0 card=66014)
㈣ linux oracle trace文件可以删除么
可以删除的
跟踪文件(trace file)能提供调试信息,服务器遇到问题时,它会生成一个包含大量诊断信息的跟踪文件。如果开发人员设置了sql_trace=true,服务器就会生成一个包含性能相关信息的跟踪文件。我们之所以可以使用这些跟踪文件,是因为是一个允许充分测量的软件。编写内核的程序员在内核中放入了调试代码,而且调试代码相当多,这些调试代码是被程序员有意留在内核中的。
要关闭和删除块修改跟踪文件,还要用一次alter database命令:
alter database disable block
㈤ oracle 如何跟踪全表扫描进程
Maclean教你读Oracle 10046 SQL TRACE
有同学一直向Maclean反应希望做一期10046 SQL trace的教程, 正好这几天有空 我们就理一理。
为什么我们要使用10046 trace?
10046 trace帮助我们解析 一条/多条SQL、PL/SQL语句的运行状态 ,这些状态包括 :Parse/Fetch/Execute三个阶段中遇到的等待事件、消耗的物理和逻辑读、CPU时间、执行计划等等。
即10046 为我们揭示了 一条/多条SQL 的运行情况, 对于 以点入手的 SQL调优是很好的辅助工具,特别是在 10g之前没有ASH的情况下。 但整体系统调优 不是10046 所擅长的, 10046 是 性能调优的起钉器 , AWR是性能调优 的锤子。
10046还能帮助我们分析 一些 DDL维护命令的内部工作原理, RMAN、Data Pump Expdp/Impdp等工具的缓慢问题等, 是研究 oracle 数据库原理的 居家旅行必备良品。
10046 和SQL TRACE的区别?
10046 比 SQL_TRACE参数提供更多的控制选项, 更详细的内容输出, 一般Maclean只用10046 而不用sql_trace
10046 和10053 的区别?
10053 是最常用的Oracle 优化器optimizer 跟踪trace, 10053 可以作为我们解析 优化器为什么选择某个执行计划,其中的理由的辅助工具,但并不告诉我们这个执行计划 到底运行地如何。
而10046 并不解释 optimizer优化器的工作, 但它同样说明了在SQL解析parse阶段所遇到的等待事件和所消耗的CPU等资源,以及Execute执行和Fetch阶段的各项指标。
简而言之10046 告诉我们SQL(执行计划)运行地如何, 10053告诉我们 优化器为什么为这个SQL选择某个执行计划。
10046 TRACE的LEVEL:
不同的Level 对应不同的跟踪级别
1 启用标准的SQL_TRACE功能 ( 默认) 包含了 SQL语句、响应时间、服务时间、处理的行数,物理读和写的数目、执行计划以及其他一些额外信息。 到版本10.2中 执行计划写入到 trace 的条件是仅当相关游标 已经关闭时, 且与之相关的执行统计信息是所有执行次数的总和数据。 到版本11.1中仅在每次游标的第一次执行后将执行计划写入到trace , 执行统计信息仅仅和这第一次执行相关
4 比level 1时多出 绑定变量的 trace
8 比level 1多出等待事件,特别对于9i中指出 latch free等待事件很有用,对于分析全表扫描和索引扫描也很有用
12 比level 1 多出 绑定变量和 等待事件
16 在11g中为每一次执行生成STAT信息,仅在11.1之后可用
32 比level 1少执行计划
64 和level 1 相比 在第一次执行后还可能生成执行计划信息 ; 条件是某个游标在前一次执行的前提下 运行耗时变长了一分钟。仅在 11.2.0.2中可用
Level 28 (4 + 8 + 16) 代表 同时启用 level 4 、level 8、level 16
level 68 ( 64 + 4 ) 代表 同时启用 level 64、level 4
设置的方法如下:
session 级别:alter session set events ’10046 trace name context forever,level X’;
system 级别 : alter system set events ’10046 trace name context forever,level X’;
㈥ oracle 11g trace 文件夹下的文件都是什么作用谢谢
oracle 的trace文件主要是追踪后台进程和用户进程所做的事情。先跟你说一下前台用户进程,比如你发出一个sql语句:“select * from a",如果你开启10053事件,则就会在后面生成一个trace文件,里面详细记录了你发出这条语句之后 oracle都做了些什么事情,包括采用什么连接方法等等细节,通俗地说就是把一个sql的详细的流程以trace的方式展现给你。
在说后台进程,你上面的那些trace文件都是后台进程锁生成的,不同的进程生成的trace文件就不一样,如果你弄明白了每个后台进程是干什么的,那么自然就知道他们有什么不同了。
比如那个lgwr,管理联机日志写的。smon负责实例恢复和资源整理的。等等,所以你要先明白上面每个进程都是做什么的。