使用Oracle跟踪文件的问题详解
使用Oracle跟踪文件的问题详解
一、什么是跟踪文件?
跟踪文件中包含了大量而详细的诊断和调试信息。通过对跟踪文件的解读和分析,我们可以定位问题、分析问题和解决问题。从跟踪文件的产生的来源来看,跟踪文件又可以分为两类:一类是数据库的操作人员有意生成的;另一类则是由于出现了异常错误,由数据库自动生成的。对于后一类,只对Oracle内部的技术支持人员是有用的,但对于我们,则多半看不懂。前一类,则是我们经常用到的,帮助我们分析、调整和优化应用性能,处理并解决问题。
那么在哪里可以找到跟踪文件呢?通过查询数据字典v$diag_info可以确定跟踪文件的存储路径,如下所示。
select * from v$diag_info;
进入目录/u01/app/oracle/diag/rdbms/orcl/orcl/trace可以看到以trc为后缀的跟踪文件,如下图所示。
二、跟踪文件的命名规则
一个跟踪文件的名字一般由以下几部分组成:
- ORACLE_SID
- 固定字符
- 服务器的进程ID号
- 文件后缀名 .trc
- 各部分之间以下划线连接。
例如:orcl_mmon_12210.trc,其中:“orcl" 是本环境下数据库的SID,"12210"为产生该跟踪文件会话所使用的服务器进程ID号。如何知道我的ORACLE_SID和会话所使用的服务器进程ID呢?
三、如何确定跟踪文件?
为了演示的方便,我们给一个普通用户scott授予dba的角色。
1、使用管理登录,并授予scott授予dba的角色
[oracle@oracle12c ~]$ sqlplus / as sysdba SQL> grant dba to scott; Grant succeeded. SQL>
2、确定Oracle SID,如下所示。这里的SID就是:orcl
SQL> select instance_name from V$instance; INSTANCE_NAME ---------------- orcl SQL>
3、切换到scott用户,并确定会话ID
SQL> conn scott/tiger Connected. SQL> select sid from v$mystat where rownum=1; SID ---------- 70 SQL>
4、根据会话ID,确定会话的地址信息
SQL> select paddr from v$session where sid=70; PADDR ---------------- 000000006DAB6588 SQL>
5、根据会话的地址信息,确定操作系统的进程号
SQL> select spid from v$process where addr='000000006DAB6588'; SPID ------------------------ 54685 SQL>
进入目录/u01/app/oracle/diag/rdbms/orcl/orcl/trace会发现,此时并不存在包含54685的跟踪文件,原因是要使用跟踪文件需要手动开启会话的跟踪。
6、开启会话的跟踪
SQL> alter session set sql_trace=true; Session altered. SQL>
7、执行一条简单的SQL语句,并检查/u01/app/oracle/diag/rdbms/orcl/orcl/trace目录,这时候就可以看到生成的跟踪文件。
[oracle@oracle12c trace]$ pwd /u01/app/oracle/diag/rdbms/orcl/orcl/trace [oracle@oracle12c trace]$ ls *54685.trc orcl_ora_54685.trc [oracle@oracle12c trace]$
四、使用跟踪文件诊断SQL
根据跟踪对于诊断SQL语句是非常有用的,下面通过一个简单的示例来说明。
1、执行下面的的SQL语句
select * from scott.emp where deptno=10; select * from scott.emp where deptno=20; select * from scott.emp where deptno=30;
这三条SQL分别查询10、20和30号部门的员工。通过观察发现,这三条SQL除了where的条件的参数值不一样,其他部分都是一样的。这样的SQL语句叫做“重复的SQL”。如果数据库中存在大量的重复SQL,会使得每次在执行的时候都会进行SQL的解析,再生成执行计划。从而影响数据库的性能。
下面通过跟踪文件来验证上面的结论。
2、由于前面开启了会话的跟踪,如果不再需要进行跟踪了,需要手动关闭一下。
SQL> alter session set sql_trace=false; Session altered. SQL>
3、使用tkprof工具格式化跟踪文件
[oracle@oracle12c trace]$ tkprof orcl_ora_54685.trc /home/oracle/a.txt sys=no sort=fchela TKPROF: Release 12.2.0.1.0 - Development on Mon Jun 28 10:37:48 2021 Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved. [oracle@oracle12c trace]$
4、查看生成的a.txt文件,如下所示:
SQL ID: 1mvxd868z75nf Plan Hash: 3956160932 select * from scott.emp where deptno=30 SQL ID: 2nbac4n9hnzth Plan Hash: 3956160932 select * from scott.emp where deptno=20 SQL ID: 062r5atccuyv4 Plan Hash: 3956160932 select * from scott.emp where deptno=10
可以看成尽管三条SQL对应的SQL ID不一样,但是生成的Plan Hash是一样的。这就说明这三条SQL的执行计划是一样的。既然如此,我们可以使用绑定变量的方式来改写这三条SQL。让这三条SQL语句在执行的时候,不用每次都生成执行计划。只需要复用第一次生成的执行计划即可。从而提高性能。
以上就是使用Oracle的跟踪文件的详细内容,更多关于Oracle跟踪文件的资料请关注趣讯吧其它相关文章!
推荐阅读
-
手动挡汽车换挡速度达到多少合适(手动挡汽车的换挡速度该如何掌握)
手动挡汽车换挡速度的合适性是很多新手司机关心的问题。一般来说,手动挡汽车的换挡速度应该尽可能平稳,避免过快或过慢。具体而言,手动挡...
-
怎么得到兄弟的女朋友 睡兄弟老婆的方法介绍
如果是真心喜欢,既然人家已经有老公了,不建议去破坏人家家庭,默默祝福就好了。运用特殊手段是违法犯罪行为,合理表达自己的爱慕之心,真...
-
查看路由器宽带密码(如何找回路由器管理员密码)
如何查看路由器宽带密码?路由器是现代家庭和企业网络中必不可少的设备。它可以连接多个设备并实现共享网络资源。但是,有时我们需要查看路...
-
失业大军涌入外卖(骑手收入腰斩 外卖骑手感到无力和绝望)
近年来,随着中国经济的不断发展和消费习惯的转变,外卖行业在中国蓬勃发展。越来越多的人加入到外卖行业中,骑手数量也大量涌入。但现在,...
-
真皮皮鞋怎么保养(正确保养真皮皮鞋的小贴士)
皮鞋在我们的日常生活中是常见的鞋履之一,不仅款式多样,而且舒适耐穿。其中,真皮皮鞋是许多人的选择,因为它们具有高品质和永久耐用的特...
-
车改装了找黄牛(汽车改装需谨慎避免找黄牛)
车改装了找黄牛汽车改装是车主展示个人品味和个性的一种方式。然而,如果改装不当,不仅会影响车辆性能和安全,而且还会面临违法处罚的风险...
-
网卡怎么用在路由器上(如何在路由器上使用网卡)
对于一些家庭用户,如果家里的网络需要多个设备同时连接上网,那么路由器无疑是一个必不可少的工具。而网卡则是路由器中非常关键的一部分。...
-
龙城陈宇呈东霓为什么离婚(龙城陈宇呈是个什么样的人)
龙城中陈宇呈是郑东霓第一任丈夫,她们是自由恋爱后面离婚了,陈宇呈35岁,龙城血液中心医生。冷静理智,作为一个优秀的医生,他所有的判...
-
卡其色卫衣配什么裤子(卡其色卫衣的多种搭配方式)
卡其色卫衣是现代休闲装中的一种经典款式,不仅舒适实用,还充满了时尚感。然而,很多人却不知道该如何搭配裤子,以突出卡其色卫衣的特色。...
-
windows系统用苹果鼠标(如何在Windows系统中使用苹果鼠标)
如何在Windows系统中使用苹果鼠标?在日常使用中,很多人可能会遇到这样的问题:手头只有一只苹果鼠标,但使用的电脑却是Windo...