- 浏览: 1019702 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (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 7688Linux 版本是Oracle enterprise ... -
Oracle10gR2 中 Oracle Wallet 的初步使用和维护
2011-06-02 01:59 19891) Wallet作用 从Oracle10gR2开始, 通过 ... -
如何手工删除oracle数据库和软件
2011-06-02 00:29 1458一、手工删库和数据库文件有时候,有可能在dbca图形界面中找不 ... -
AIX下设置Oracle10g随机启动,随机关闭的步骤
2011-06-02 00:19 1449假如ORACLE_HOME为/opt/app/oracle/p ... -
数据库突然无法登陆,只有sysdba可以
2011-05-20 18:05 1646数据库突然无法登陆,只有sysdba可以登陆。 检查aler ... -
Linux安装Oracle报Checking operating system version must be redhat-3, SuSE-9, redhat
2011-03-24 01:26 1919在Linux系统中安装oralce的过程中,如果Linux发行 ... -
How To Update NLS_SORT Parameter Value When Using 10g Thin JDBC Driver ? [ID 469
2010-12-17 10:05 2962Applies to: JDBC - Version: 1 ... -
oracle 查询时忽略大小写的方案研究
2010-12-15 02:00 2483项目已经开发完毕,由于业务变动,某些查询需要忽略大小写,研究是 ... -
Read By Other Session
2010-12-02 22:52 752Read By Other Session Definiti ... -
必须引起DBA重视的Oracle数据库碎片
2010-12-01 17:35 1009目前,Oracle已经广泛的应用于各个行业。作为一名DBA,及 ... -
Wait Event: cache buffers chains
2010-11-30 15:58 1162cache buffers chains是相对比较常见的冲突事 ... -
log file sync(日志文件同步) 与 Log file parallel write 等待事件
2010-11-28 20:47 2142log file sync(日志文件同步)等待事件具有一个参数 ... -
删除Linux非rac环境下的ASM实例
2010-04-25 01:48 2018环境说明: 操作系统:CentOS 5 x86数据库:O ... -
扩大oracle最大session数以及清除inactive会话
2010-04-12 16:00 7329从上周起,服务器Oracle数据库出现问题,用不到半天,就会报 ... -
设计数据库时需要考虑的问题
2010-03-04 17:34 1537成功的管理系统=50% 的业务+(25%的数据库+25%的程序 ... -
介绍Oracle数据库锁的种类及研究
2009-12-02 09:30 1111本文通过对Oracle数据库锁机制的研究,首先介绍了Oracl ... -
expdp中使用连接字符串和network_link的区别
2009-12-01 11:47 1571expdp属于服务端工具,而exp属于客户端工具,expdp生 ... -
ora10G 使用数据泵(EXPDP和IMPDP)时应该注意的事项
2009-12-01 11:45 1245Oracle Database 10g引入了最新的数据泵(Da ... -
使用Oracle 10g数据泵(EXPDP/IMPDP)
2009-12-01 11:22 2027一、关于数据泵的概述 在Oracle 10 ... -
10g新特性之-expdp与传统exp的速度比较
2009-12-01 11:18 1304测试环境: 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数据库作为全球广泛使用的大型关系型数据库管理系统,其复杂性和多样性使得故障诊断成为一个涉及多个层面的技术领域。以下是一些核心的Oracle故障诊断方法和知识点: 1. **日志分析**:Oracle数据库的日志...
oracle DBA手记123部...ORACLE+DBA手记1 数据库诊断案例与性能优化....pdf ORACLE DBA手记2 数据库诊断案例与内部....pdf Oracle DBA手记3_数据库性能优化与内部原理解析.pdf Eygle 大师作品,值得ORACLE 粉拥有!
《深入浅出Oracle:DBA入门、进阶与诊断案例》是eygle撰写的一本针对Oracle数据库管理员(DBA)的教程,旨在帮助初学者快速掌握Oracle基础知识,并逐步提升到高级诊断技能。这本书通过丰富的案例分析,使得学习过程...
在进阶部分,eygle 推荐学习 Oracle 数据库性能优化、备份恢复、SQL 优化诊断案例等高级主题,以此帮助 DBA 学习到更高级的技能和知识。这些主题可以帮助 DBA 学习到 Oracle 数据库管理系统的高级功能和优化技术。 ...
- 学习使用Oracle企业管理器(OEM)和命令行工具(如SQL*Plus)进行日常管理任务。 2. Oracle DBA进阶: - 深入学习数据库的高级特性,例如分区、高级复制、高级备份和恢复技术。 - 掌握性能调优,包括SQL语句...
- 使用`sqlplus`工具执行SQL脚本来完成数据库的具体创建过程。 #### 2. SQL脚本 文档中还提供了几个SQL脚本,例如`CreateDB.sql`、`CreateDBFiles.sql`等,它们分别负责不同的任务: - `CreateDB.sql`:用于创建...
在Oracle数据库中,进行文件读写操作是一项常见的需求。通过特定的目录管理功能,用户可以方便地实现文件的读取与写入,这极大地提升了Oracle数据库的灵活性与扩展性。本文将详细介绍如何在Oracle数据库中创建目录...
《深入解析Oracle-数据库架构设计与性能优化实践》是一本专注于Oracle数据库的深度解析书籍,由数据库专家盖国强(eygle)撰写。eygle先生是北京恩墨科技的创始人,拥有超过10年的Oracle数据库经验,同时他也是ITPUB...
在“oraclexuexi”这个压缩包中,包含了一本名为“Eygle [深入浅出 Oracle DBA 进阶、入门与诊断案例] 盖国强 2006.6.pdf”的书籍,这本书是Oracle数据库管理员(DBA)学习的经典资料,适合新手入门和进阶学习。...
ADDM是Oracle 10g中的一个核心性能诊断工具,它通过分析AWR快照来诊断数据库的性能问题,并生成诊断报告。报告中不仅包含了问题分析,还提供了改进建议。 #### 七、解读分析报告 - **数据库及采样信息**:报告首先...
《深入解析Oracle》是由盖国强(网名eygle)所著的一部关于Oracle数据库的经典之作。盖国强是ITPUB论坛的超级版主、Oracle ACE Director、独立咨询顾问和技术支持顾问,同时,他还有自己的个人站点***。本书内容涵盖...
这份"Oracle数据库性能优化完整版资料.ppt"可能是由eygle编写的,eygle在IT领域,特别是Oracle数据库管理方面有着深厚的背景和专业知识。这份资料可能包含了eygle对Oracle数据库性能调优的深入见解和实践经验。 ...
《Oracle之路与数据库优化》这一主题深入探讨了Oracle数据库的学习路径、最佳实践以及数据库优化的关键要素,由IT领域的资深专家盖国强(eygle)撰写。以下是对该文档中的核心知识点进行的详细解读: ### Oracle...