联系:手机/微信(+86 17813235971) QQ(107644445)
作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]
1、使用trace查找show parameter执行语句
alter session set events '10046 trace name context forever,level 12'; show parameter process; alter session set events '10046 trace name context off';
2、查找trace文件
SELECT d.VALUE || '/' || LOWER (RTRIM (i.INSTANCE, CHR (0))) || '_ora_' || p.spid || '.trc' trace_file_name FROM (SELECT p.spid FROM v$mystat m, v$session s, v$process p WHERE m.statistic# = 1 AND s.SID = m.SID AND p.addr = s.paddr) p, (SELECT t.INSTANCE FROM v$thread t, v$parameter v WHERE v.NAME = 'thread' AND (v.VALUE = 0 OR t.thread# = TO_NUMBER (v.VALUE))) i, (SELECT VALUE FROM v$parameter WHERE NAME = 'user_dump_dest') d
3、格式化trace文件
tkprof D:\oracle\diag\rdbms\xff\xff\trace\xff_ora_4780.trc D:\oracle\diag\rdbms\xff\xff\trace\abc.txt
4、找出对应sql语句
SELECT NAME NAME_COL_PLUS_SHOW_PARAM, DECODE(TYPE, 1, 'boolean', 2, 'string', 3, 'integer', 4, 'file', 5, 'number', 6, 'big integer', 'unknown') TYPE, DISPLAY_VALUE VALUE_COL_PLUS_SHOW_PARAM FROM V$PARAMETER WHERE UPPER(NAME) LIKE UPPER('%process%') ORDER BY NAME_COL_PLUS_SHOW_PARAM, ROWNUM;
5、查找上面语句发现使用v$parameter对象
6、查看第一种来源
select owner,object_name,object_type from dba_objects where object_name ='V$PARAMETER'; select dbms_metadata.get_ddl(object_type=>'SYNONYM',NAME=>'V$PARAMETER',SCHEMA=>'PUBLIC') from dual;
7、无结果,查看第二种来源
select * from v$fixed_table where name ='V%PARAMETER%'; select * from v$fixed_view_definition where view_name='GV$PARAMETER';
8、得出结果,从中学习到数据库中的对象有两种来源
1)sys的fixed table : x$ksppi x, x$ksppcv y
2)sys的fixed view: GV$PARAMETER
3)sys的fixed view: V$PARAMETER
4) sys的普通view: V_$PARAMETER
5) public的synonym: v$parameter
所以,如果用sys访问v$parameter, 就是3=>2=>1
other user访问v$parameter, 就是5=>4=>3=>2=>1.