- 浏览: 1001483 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (529)
- 服务器 (8)
- jsp (1)
- java (6)
- AIX (1)
- solaris (3)
- linux学习 (53)
- javaScript (2)
- hibernate (1)
- 数据库 (74)
- sql语句 (8)
- oracle 学习 (75)
- oracle 案例 (42)
- oracle 管理 (42)
- Oracle RAC (27)
- oracle data guard (12)
- oracle 参数讲解 (14)
- Oracle 字符集 (8)
- oracle性能调优 (24)
- oracle备份与恢复 (12)
- oracle Tablespace (9)
- oracle性能诊断艺术 (1)
- oracle 11g学习 (5)
- oracle streams (1)
- oracle upgrade and downgrade (4)
- db2学习 (13)
- db2命令学习 (2)
- mysql (28)
- sql server (30)
- sql server 2008 (0)
- 工具 (10)
- 操作系统 (3)
- c++ (1)
- stock (1)
- 生活 (5)
- HADOOP (2)
最新评论
-
massjcy:
...
如何将ubuntu文件夹中文名改为英文 -
skypiea:
谢谢。。。
终于解决了。。。
Oracle 10.2.0.4(5)EM不能启动的解决方案(Patch 8350262) -
qwe_rt:
引用vi /etc/sysconfig/network 请问 ...
Linux操作系统下配置静态IP上网 -
liuqiang:
sudo killall -9 apache2
ps 和 kill 命令详解 -
dazuiba:
引用*绝杀 kill -9 PID 当使用此命令时,一定要通过 ...
ps 和 kill 命令详解
SQL_TRACE是Oracle提供的用于进行SQL跟踪的手段,是强有力的辅助诊断工具.在日常的数据库问题诊断和解决中,SQL_TRACE是非常常用的方法。
本文就SQL_TRACE的使用作简单探讨,并通过具体案例对sql_trace的使用进行说明.
一、 基础介绍
(a) SQL_TRACE说明
SQL_TRACE可以作为初始化参数在全局启用,也可以通过命令行方式在具体session启用。
1. 在全局启用
在参数文件(pfile/spfile)中指定:
sql_trace =true |
在全局启用SQL_TRACE会导致所有进程的活动被跟踪,包括后台进程及所有用户进程,这通常会导致比较严重的性能问题,所以在生产环境
中要谨慎使用.
提示: 通过在全局启用sql_trace,我们可以跟踪到所有后台进程的活动,很多在文档中的抽象说明,通过跟踪文件的实时变化,我们可以清晰
的看到各个进程之间的紧密协调.
2. 在当前session级设置
大多数时候我们使用sql_trace跟踪当前进程.通过跟踪当前进程可以发现当前操作的后台数据库递归活动(这在研究数据库新特性时尤其有效),
研究SQL执行,发现后台错误等.
在session级启用和停止sql_trace方式如下:
启用当前session的跟踪: SQL> alter session set sql_trace=true; Session altered. 此时的SQL操作将被跟踪: SQL> select count(*) from dba_users; COUNT(*) ---------- 34 结束跟踪: SQL> alter session set sql_trace=false; Session altered. |
3. 跟踪其他用户进程
在很多时候我们需要跟踪其他用户的进程,而不是当前用户,这可以通过Oracle提供的系统包DBMS_SYSTEM. SET_SQL_TRACE_IN_SESSION
来完成
SET_SQL_TRACE_IN_SESSION过程序要提供三个参数:
SQL> desc dbms_system ... PROCEDURE SET_SQL_TRACE_IN_SESSION Argument Name Type In/Out Default? ------------------------------ ----------------------- ------ -------- SID NUMBER IN SERIAL# NUMBER IN SQL_TRACE BOOLEAN IN ...
|
通过v$session我们可以获得sid、serial#等信息:
获得进程信息,选择需要跟踪的进程: SQL> select sid,serial#,username from v$session 2 where username is not null; SID SERIAL# USERNAME ---------- ---------- ------------------------------ 8 2041 SYS 9 437 EYGLE 设置跟着: SQL> exec dbms_system.set_sql_trace_in_session(9,437,true) PL/SQL procedure successfully completed. .... 可以等候片刻,跟踪session执行任务,捕获sql操作... .... 停止跟踪: SQL> exec dbms_system.set_sql_trace_in_session(9,437,false) PL/SQL procedure successfully completed.
|
(b) 10046事件说明
10046事件是Oracle提供的内部事件,是对SQL_TRACE的增强.
10046事件可以设置以下四个级别:
1 - 启用标准的SQL_TRACE功能,等价于sql_trace
4 - Level 1 加上绑定值(bind values)
8 - Level 1 + 等待事件跟踪
12 - Level 1 + Level 4 + Level 8
类似sql_trace,10046事件可以在全局设置,也可以在session级设置。
1. 在全局设置
在参数文件中增加:
event="10046 trace name context forever,level 12"
|
此设置对所有用户的所有进程生效、包括后台进程.
2. 对当前session设置
通过alter session的方式修改,需要alter session的系统权限:
SQL> alter session set events '10046 trace name context forever'; Session altered. SQL> alter session set events '10046 trace name context forever, level 8'; Session altered. SQL> alter session set events '10046 trace name context off'; Session altered. |
3. 对其他用户session设置
通过DBMS_SYSTEM.SET_EV系统包来实现:
SQL> desc dbms_system
...
PROCEDURE SET_EV
Argument Name Type In/Out Default?
------------------------------ ----------------------- ------ --------
SI BINARY_INTEGER IN
SE BINARY_INTEGER IN
EV BINARY_INTEGER IN
LE BINARY_INTEGER IN
NM VARCHAR2 IN
...
|
其中的参数SI、SE来自v$session视图:
查询获得需要跟踪的session信息: SQL> select sid,serial#,username from v$session where username is not null; SID SERIAL# USERNAME
PL/SQL procedure successfully completed. 结束跟踪: PL/SQL procedure successfully completed. |
(c) 获取跟踪文件
以上生成的跟踪文件位于user_dump_dest目录中,位置及文件名可以通过以下SQL查询获得:
SQL> select 2 d.value||'/'||lower(rtrim(i.instance, chr(0)))||'_ora_'||p.spid||'.trc' trace_file_name 3 from 4 ( select p.spid 5 from sys.v$mystat m,sys.v$session s,sys.v$process p 6 where m.statistic# = 1 and s.sid = m.sid and p.addr = s.paddr) p, 7 ( select t.instance from sys.v$thread t,sys.v$parameter v 8 where v.name = 'thread' and (v.value = 0 or t.thread# = to_number(v.value))) i, 9 ( select value from sys.v$parameter where name = 'user_dump_dest') d 10 /
TRACE_FILE_NAME |
(d) 读取当前session设置的参数
当我们通过alter session的方式设置了sql_trace,这个设置是不能通过show parameter的方式得到的,我们需要通过dbms_system.read_ev来获取:
SQL> set feedback off SQL> set serveroutput on SQL> declare
|
发表评论
-
Oracle enterprise linux 6.0 安装oracle 11g 所需要的包安装
2012-07-22 08:02 7620Linux 版本是Oracle enterprise ... -
Oracle10gR2 中 Oracle Wallet 的初步使用和维护
2011-06-02 01:59 19611) Wallet作用 从Oracle10gR2开始, 通过 ... -
如何手工删除oracle数据库和软件
2011-06-02 00:29 1427一、手工删库和数据库文件有时候,有可能在dbca图形界面中找不 ... -
AIX下设置Oracle10g随机启动,随机关闭的步骤
2011-06-02 00:19 1425假如ORACLE_HOME为/opt/app/oracle/p ... -
数据库突然无法登陆,只有sysdba可以
2011-05-20 18:05 1618数据库突然无法登陆,只有sysdba可以登陆。 检查aler ... -
Linux安装Oracle报Checking operating system version must be redhat-3, SuSE-9, redhat
2011-03-24 01:26 1887在Linux系统中安装oralce的过程中,如果Linux发行 ... -
How To Update NLS_SORT Parameter Value When Using 10g Thin JDBC Driver ? [ID 469
2010-12-17 10:05 2925Applies to: JDBC - Version: 1 ... -
oracle 查询时忽略大小写的方案研究
2010-12-15 02:00 2404项目已经开发完毕,由于业务变动,某些查询需要忽略大小写,研究是 ... -
Read By Other Session
2010-12-02 22:52 728Read By Other Session Definiti ... -
必须引起DBA重视的Oracle数据库碎片
2010-12-01 17:35 975目前,Oracle已经广泛的应用于各个行业。作为一名DBA,及 ... -
Wait Event: cache buffers chains
2010-11-30 15:58 1134cache buffers chains是相对比较常见的冲突事 ... -
log file sync(日志文件同步) 与 Log file parallel write 等待事件
2010-11-28 20:47 2113log file sync(日志文件同步)等待事件具有一个参数 ... -
删除Linux非rac环境下的ASM实例
2010-04-25 01:48 1987环境说明: 操作系统:CentOS 5 x86数据库:O ... -
扩大oracle最大session数以及清除inactive会话
2010-04-12 16:00 7279从上周起,服务器Oracle数据库出现问题,用不到半天,就会报 ... -
设计数据库时需要考虑的问题
2010-03-04 17:34 1505成功的管理系统=50% 的业务+(25%的数据库+25%的程序 ... -
介绍Oracle数据库锁的种类及研究
2009-12-02 09:30 1077本文通过对Oracle数据库锁机制的研究,首先介绍了Oracl ... -
expdp中使用连接字符串和network_link的区别
2009-12-01 11:47 1538expdp属于服务端工具,而exp属于客户端工具,expdp生 ... -
ora10G 使用数据泵(EXPDP和IMPDP)时应该注意的事项
2009-12-01 11:45 1223Oracle Database 10g引入了最新的数据泵(Da ... -
使用Oracle 10g数据泵(EXPDP/IMPDP)
2009-12-01 11:22 1998一、关于数据泵的概述 在Oracle 10 ... -
10g新特性之-expdp与传统exp的速度比较
2009-12-01 11:18 1275测试环境: System Configuration: Su ...
相关推荐
针对数据库的启动和关闭、参数及参数文件、数据字典、内存管理、Buffer Cache与Shared Pool原理、重做、回滚与撤销、等待事件、性能诊断与SQL优化等几大Oracle热点主题,本书从基础知识入手,深入研究相关技术,并...
│ 01.Eygle的DBA工作手记 │ 02.Yangtingkun的DBA工作手记 │ 03.老熊的DBA手记 │ 04.BanPing的DBA工作手记 │ ├─第二篇 诊断案例篇 │ 01.ASM案例分析与诊断 │ 02.监听故障的诊断与分析 │ 03.ORA系列错误与...
oracle DBA手记123部...ORACLE+DBA手记1 数据库诊断案例与性能优化....pdf ORACLE DBA手记2 数据库诊断案例与内部....pdf Oracle DBA手记3_数据库性能优化与内部原理解析.pdf Eygle 大师作品,值得ORACLE 粉拥有!
实践经验丰富,长于数据库诊断、优化与SQL调整。希望与大家共同学习提高Oracle 技术水平。 本文介绍Statspack 的安装,配置,使用和解读,通过这篇文章,我们希望至少可以使每个使用 Oracle 数据库的人,都可以学会...
做、回滚与撤销、等待事件、性能诊断与SQL优化等几大Oracle热点主题,本书从基础知识入手,深入研究 相关技术,并结合性能调整及丰富的诊断案例,力图将Oracle知识全面、系统、深入地展现给读者。 本书给出了大量...
通过使用DBI,用Perl可以很容易的连接到mysql数据库: 代码如下: 复制代码 代码如下:#!/bin/perl use DBI; # Connect to target DB my $dbh = DBI->connect(“DBI:mysql:database=eygle;host=localhost”,”...
盖国强oracle应用总结eygle.chm,有助于我们提高oracle的应用能力。
SQL> grant select on x$ksppi to eygle; grant select on x$ksppi to eygle * ERROR at line 1: ORA-02030: can only select from fixed tables/views 1.2 GV$和V$视图 从Oracle8开始,GV$视图开始被引入,其含义...
eygle的书,推荐阅读。 深入浅出Oracle:DBA入门、进阶与诊断案例.7z.rar
教程名称:盖国强Oracle专题:天道酬勤oracle之路课程目录:【】Oracle DBA 手记3,数据库性能优化与内部原理解析【】Oracle数据安全-盖国强(DTCC2012)【】Oracle数据库DBA专题技术精粹【】Oracle数据库性能优化...
深入解析Oracle,eygle撰写版本,一共10个章节 第一章:数据库的启动和关闭 第二章:控制文件与数据库初始化 第三章:参数及参数文件 第四章:数据字典 第五章:内存管理 ...第十章:性能诊断与SQL优化
根据自己对 Oracle 的理解 把这些 blog 进行了分类 并进行一些整理方便自己的查看 这些文档 中有很多内引用 借鉴了前辈们的资料 和 google 上的 一些信息 如: eygle 君三思 谭怀远 陈吉平等前辈们的书籍和和 blog ...
根据自己对 Oracle 的理解,把这些 blog 进行了分类, 并进行一些整理方便自己的查看 。 这些文档 中有很多内引用 借鉴了前辈们的资料 和 google 上的 一些信息 。 如: eygle,君三思 ,谭怀远 ,陈吉平等前辈们的...
根据自己对 Oracle 的理解,把这些 blog 进行了分类, 并进行一些整理方便自己的查看 。 这些文档 中有很多内引用 借鉴了前辈们的资料 和 google 上的 一些信息 。 如: eygle,君三思 ,谭怀远 ,陈吉平等前辈们的...
根据自己对 Oracle 的理解,把这些 blog 进行了分类, 并进行一些整理方便自己的查看 。 这些文档 中有很多内引用 借鉴了前辈们的资料 和 google 上的 一些信息 。 如: eygle,君三思 ,谭怀远 ,陈吉平等前辈们的...
著名的Eygle写的关于Statspack使用指南,很实用。