5.未公开的Oracle数据库秘密笔记——隐藏参数——跟踪文件权限
通过视图V$PARAMETER能够访问在文档中说明的初始化参数。此视图基于X$固定表X$KSPPI和X$KSPPCV。
所有隐藏参数均以一个或者两个下划线开头。
可以通过如下代码进行查询:
setpages 9999
setlines 140
colname format a45
colvalue format a25 word_wrapped
coldescription format a45 word_wrapped
settrimspool on
settrimout on
SELECT
x.ksppinm name,
y.ksppstvl VALUE,
ksppdescdescription
FROM x$ksppix,
x$ksppcv y
WHERE x.inst_id = userenv('Instance')
AND y.inst_id= userenv('Instance')
AND x.indx =y.indx
and substr(x.ksppinm,1,1)='_'
order by 1
;
隐藏参数在12C中达到了3597个。
正常情况下隐藏参数只应该在Oracle Support Services的帮助下进行设置。
1. 参数_TRACE_FILES_PUBLIC
跟踪文件要根据需求创建(ALTERSYSTEM SET SQL_TRACE=TRUE)
跟踪文件的前台进程保存在USER_DUMP_DEST参数的目录,跟踪文件的后台进程则保存在BACKGROUND_DUMP_DEST目录。
跟踪文件默认只能被ORACLE安装用户或者安装用户组的成员读取。
由于跟踪文件可能包含敏感信息,无论是作为绑定变量还是常量,恰当的做法是限制默认权限。在一个测试系统中,使用TKPROF分析输出,最好任何用户可以读取跟踪文件。
_TRACE_FILES_PUBLIC参数是的任何人都能读取新生成的跟踪文件。
col name format a30
col value format a8
col description format a40 word_wrapped
set verify off
SELECT x.ksppinm name, y.ksppstvl value, x.ksppdescdescription
FROM x$ksppi x, x$ksppsv y
WHERE x.inst_id = userenv('Instance')
AND y.inst_id = userenv('Instance')
AND x.indx = y.indx
AND x.ksppinm LIKE '&hidden_parameter_name';
执行如下,输入 _trace_files_public
可以发现,默认是FALSE。
修改系统隐藏参数,如下:
sys@ORCL> alter system set"_trace_files_public"=true scope=spfile;
静态参数,需要重启。
可以使用ORADEBUG,
sys@ORCL> oradebug setmypid;
Statement processed.
sys@ORCL> oradebug tracefile_name
/u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_5176.trc