11g中ADR管理下的监听trace文件路径问题

简介: 一个11g的开发库,打算打开sqlplus的trace,看下sqlplus登录的连接信息,但配置sqlnet.

一个11g的开发库,打算打开sqlplus的trace,看下sqlplus登录的连接信息,但配置sqlnet.ora后没有找到trace文件,后来有一天发现磁盘空间不足,经过查询后发现如下路径下有几千个文件,占用了上G的空间:

/u01/app/oracle/11.2.0.4/diag/clients/user_oracle/host_1347578259_80/trace

这些文件是什么?打开一个,发现都是监听sqlpuls登录的信息,即trace文件:
这里写图片描述
那么为什么这个trace文件在这个路径中?

经@Yong Huang提醒,原来这个问题和11g的ADR设置有关,下面是ADR的官方介绍:

The Automatic Diagnostic Repository (ADR) is a file-based repository for database
diagnostic data such as traces, dumps, the alert log, health monitor reports, and more.
It has a unified directory structure across multiple instances and multiple products.
Beginning with release 11g, the database, Oracle Automatic Storage Management (Oracle
ASM), and other Oracle products or components store all diagnostic data in the ADR. Each
instance of each product stores diagnostic data underneath its own ADR home directory
(see “ADR Home”). For example, in an Oracle Real Application Clusters (Oracle RAC)
environment with shared storage and Oracle ASM, each database instance and each Oracle
ASM instance has a home directory within the ADR. The ADR’s unified directory structure
enables customers and Oracle Support to correlate and analyze diagnostic data across
multiple instances and multiple products.

自动诊断库(ADR)是一个基于文件的数据库诊断数据存储库,保存了trace、dump、alert log、health监控报告等等。对于多个实例和多个产品,都有一个统一的目录结构。11g开始,像Oracle ASM还有其他的Oracle产品或组件的诊断数据都会存储在ADR中。每个产品实例都在他自己的ADR根目录下存储诊断数据。ADR统一目录结构能让客户和Oracle支持将不同实例和不同产品的诊断数据关联起来进行分析。

MOS上的这篇文章说明了sqlnet.ora配置后,trace文件如何存放的问题:

NET Client Traces Generated In $ADR_BASE/oradiag_/diag/clients/ Directory (文档 ID 1545533.1)

大义就是如果配置了

ADR_BASE=ADR base location

则trace文件会自动存储在如下路径中:

$ADR_BASE/oradiag_OS user/diag/clients/..

否则就会存储在:

$ADR_BASE/diag/clients/...

实验:
1. 数据库版本
这里写图片描述

2.配置sqlnet.ora打开客户端trace
这里写图片描述

3.这里我没有配置ADR_BASE,只是在listener.ora中配置了ADR_BASE_LISTENER
这里写图片描述

4.执行一个错误的连接,以让其产生trace文件
这里写图片描述

5.由于没有设置ADR_BASE,应该不会有oradiag_OSuser路径,但会有diag路径,此时查看
这里写图片描述
确实在这个路径下生成了trace文件。

注意:
如果开启了sqlplus客户端trace,那么需要关注trace文件所占用空间的使用情况,避免撑爆文件系统,建议使用时开启,用完后需要立即关闭。

目录
相关文章
|
10月前
|
Oracle 前端开发 关系型数据库
在Oracle的ADR中设置自动删除trace文件的策略
姚远在一个有两万个客户的公司做数据库支持,什么稀奇古怪的事情都能遇到,有个客户的数据库不停地产生大量的trace,经常把硬盘撑爆,看看姚远怎么解决这个问题的。
|
SQL Oracle 关系型数据库
ORACLE中STATUS为INACTIVE但是SERVER为SHARED状态的会话浅析
我们知道当ORACLE数据库启用共享服务器模式时,通过共享服务器模式连接到数据库的会话是有一些特征的。在v$session里面,其SERVER的状态一般为SHARED和NONE, 为SHARED时,表示当前会话正在执行SQL语句,其占用共享服务器进程,会话的STATUS状态为ACTIVE;当会话状态STATUS处于INACITVE时,它的SERVER字段值一般为NONE,意味着此时并没有共享服务器进程服务该会话,这个详细请见v$session中server为none与shared值解析 这篇博客。
1251 0
|
关系型数据库 Oracle