Oracle Support给出一条用来查找trace file存储位置的命令:
SQL> SELECT name,value FROM v$parameter WHERE name LIKE 'user_dump_dest';
查询后得到结果:
NAME VALUE
---------------------- -------------------------------------------------
user_dump_dest /u01/app/oracle/product/19.3/db1/rdbms/log
当你去查询到的路径里寻找你需要的trace file时,你很有可能一无所获。如果你使用的Oracle Database是11g以前的老版本,如9g、10g,或许你能在这个路径中找到trace file;但现在都1202年了,谁还会用那么老的数据库?!我想你一定是使用11g及11g以后的新版本了,那么大概率的要恭喜你成功入坑!
通过查询USER_DUMP_DEST
的Oracle官方文档可以看到:
Note:This parameter is ignored by the diagnosability infrastructure introduced in Oracle Database 11g Release 1 (11.1), which places trace and core files in a location controlled by the DIAGNOSTIC_DEST
initialization parameter.
根据官方说明,这个参数在11g中已被忽略,trace file的位置由这个参数DIAGNOSTIC_DEST
来控制。那么我们就来查询下DIAGNOSTIC_DEST
:
SQL> show parameter DIAGNOSTIC_DEST
NAME TYPE VALUE
------------------------------------ ----------- ----------------------------
diagnostic_dest string /u01/app/oracle
但查询出来的只是大致路径,并不是具体的路径,还是无法知道trace file具体的存储位置。问题来了,如何在新版本的数据库中查询trace file的具体存储路径呢?
接下来就是出坑环节:
SQL> SELECT name,value FROM v$diag_info WHERE name LIKE 'Diag Trace';
NAME VALUE
-------------------- -----------------------------------------------------------
Diag Trace /u01/app/oracle/diag/rdbms/nwt/NWT/trace
通过这个SQL语句查询出来的路径就成功的找到了需要的trace file。
本人Oracle小学生一枚,如有纰漏和不足,欢迎批评指正,谢谢