让Oracle的 SHOW PARAMETER 命令显示隐藏参数

转自 http://blog.csdn.net/staricqxyz/article/details/8624549

 

Find internal of "show parameter" by session tracing

 

  1. SQL> select * from v$version;  
  2.   
  3. BANNER  
  4. --------------------------------------------------------------------------------  
  5. Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production  
  6. PL/SQL Release 11.2.0.3.0 - Production  
  7. CORE    11.2.0.3.0  Production  
  8. TNS for Linux: Version 11.2.0.3.0 - Production  
  9. NLSRTL Version 11.2.0.3.0 - Production  
  10.   
  11. SQL> alter session set sql_trace=true;  
  12.   
  13. Session altered.  
  14.   
  15. SQL> oradebug setmypid  
  16. Statement processed.  
  17. SQL> show parameter optimizer  
  18.   
  19. NAME                     TYPE    VALUE  
  20. ------------------------------------ ----------- ------------------------------  
  21. optimizer_capture_sql_plan_baselines boolean     FALSE  
  22. optimizer_dynamic_sampling       integer     2  
  23. optimizer_features_enable        string  11.2.0.3  
  24. optimizer_index_caching          integer     0  
  25. optimizer_index_cost_adj         integer     100  
  26. optimizer_mode               string  ALL_ROWS  
  27. optimizer_secure_view_merging        boolean     TRUE  
  28. optimizer_use_invisible_indexes      boolean     FALSE  
  29. optimizer_use_pending_statistics     boolean     FALSE  
  30. optimizer_use_sql_plan_baselines     boolean     TRUE  
  31. SQL> oradebug tracefile_name  
  32. /u01/app/oracle/diag/rdbms/zhongwc/zhongwc/trace/zhongwc_ora_32320.trc  


Find internal sql statement in trace file.The major statement in trace file looks like following.

 

It‘s clear that "show parameter" actually make query on view v$parameter. 

 

  1. SELECT NAME NAME_COL_PLUS_SHOW_PARAM,  
  2.        DECODE(TYPE,  
  3.               1,  
  4.               ‘boolean‘,  
  5.               2,  
  6.               ‘string‘,  
  7.               3,  
  8.               ‘integer‘,  
  9.               4,  
  10.               ‘file‘,  
  11.               5,  
  12.               ‘number‘,  
  13.               6,  
  14.               ‘big integer‘,  
  15.               ‘unknown‘) TYPE,  
  16.        DISPLAY_VALUE VALUE_CL_PLUS_SHOW_PARAM  
  17.   FROM V$PARAMETER  
  18.  WHERE UPPER(NAME) LIKE UPPER(‘%optimizer%‘)  
  19.  ORDER BY NAME_COL_PLUS_SHOW_PARAM, ROWNUM;  


Examing definition of view v$parameter

 

 

  1. SQL> SELECT view_definition FROM v$fixed_view_definition WHERE view_name = ‘V$PARAMETER‘;  
  2.   
  3. VIEW_DEFINITION  
  4. ----------------------------------------------------------------------------------------------------  
  5. select  NUM , NAME , TYPE , VALUE , DISPLAY_VALUE, ISDEFAULT , ISSES_MODIFIABLE , ISSYS_MODIFIABLE ,  
  6.  ISINSTANCE_MODIFIABLE, ISMODIFIED , ISADJUSTED , ISDEPRECATED, ISBASIC, DESCRIPTION, UPDATE_COMMENT  
  7. , HASH  from GV$PARAMETER where inst_id = USERENV(‘Instance‘)  


Examing definition of view gv$parameter

 

hidden init parameters start with character ‘_‘ 

 

  1. SQL> SELECT view_definition FROM v$fixed_view_definition WHERE view_name = ‘GV$PARAMETER‘;   
  2.   
  3. VIEW_DEFINITION  
  4. --------------------------------------------------------------------------------  
  5. select x.inst_id,x.indx+1,ksppinm,ksppity,ksppstvl, ksppstdvl, ksppstdf,  decode  
  6. (bitand(ksppiflg/256,1),1,‘TRUE‘,‘FALSE‘),  decode(bitand(ksppiflg/65536,3),1,‘I  
  7. MMEDIATE‘,2,‘DEFERRED‘,                  3,‘IMMEDIATE‘,‘FALSE‘),  
  8.   decode(bitand(ksppiflg,4),4,‘FALSE‘,                     decod  
  9. e(bitand(ksppiflg/65536,3), 0, ‘FALSE‘, ‘TRUE‘)),     decode(bitand(ksppstvf,7),  
  10. 1,‘MODIFIED‘,4,‘SYSTEM_MOD‘,‘FALSE‘),  decode(bitand(ksppstvf,2),2,‘TRUE‘,‘FALSE  
  11. ‘),  decode(bitand(ksppilrmflg/64, 1), 1, ‘TRUE‘, ‘FALSE‘),  decode(bitand(ksppi  
  12. lrmflg/268435456, 1), 1, ‘TRUE‘, ‘FALSE‘),  ksppdesc, ksppstcmnt, ksppihash  fro  
  13. m x$ksppi x, x$ksppcv y where (x.indx = y.indx) and  bitand(ksppiflg,268435456)  
  14. = 0 and  ((translate(ksppinm,‘_‘,‘#‘) not like ‘##%‘) and    ((translate(ksppinm  
  15. ,‘_‘,‘#‘) not like ‘#%‘)      or (ksppstdf = ‘FALSE‘) or      (bitand(ksppstvf,5  
  16. ) > 0)))  


Create pseudo-view of v$paramter

 

 

  1. [oracle@zhongwc ~]$ sqlplus / as sysdba  
  2.   
  3. SQL*Plus: Release 11.2.0.3.0 Production on Fri Mar 1 09:01:58 2013  
  4.   
  5. Copyright (c) 1982, 2011, Oracle.  All rights reserved.  
  6.   
  7.   
  8. Connected to:  
  9. Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production  
  10. With the Partitioning, Automatic Storage Management, OLAP, Data Mining  
  11. and Real Application Testing options  
  12.   
  13. SQL> create or replace view my_v$parameter_with_hidden  
  14.   (NUM,NAME , TYPE, display_Value , ISDEFAULT  , ISSES_MODIFIABLE ,  
  15.    ISSYS_MODIFIABLE ,ISMODIFIED  , ISADJUSTED, DESCRIPTION,  
  16.    UPDATE_COMMENT)  
  17.          as  
  18.          select x.indx+1,ksppinm,ksppity,ksppstvl,ksppstdf,  
  19.                 decode(bitand(ksppiflg/256,1),1,‘TRUE‘,‘FALSE‘),  
  20.                 decode(bitand(ksppiflg/65536,3),1,‘IMMEDIATE‘,2,‘DEFERRED‘,  
  21.                 3,‘IMMEDIATE‘,‘FALSE‘),  decode(bitand(ksppstvf,7),  
  22.                 1,‘MODIFIED‘,4,‘SYSTEM_MOD‘,‘FALSE‘),  
  23.                 decode(bitand(ksppstvf,2),2,‘TRUE‘,‘FALSE‘),  
  24.                 ksppdesc, ksppstcmnt  
  25.           from x$ksppi x, x$ksppcv y  
  26.  14           where (x.indx = y.indx)  
  27.  15  /  
  28.   
  29. View created.  
  30.   
  31. SQL> grant select on my_v$parameter_with_hidden to system;  
  32.   
  33. Grant succeeded.  
  34.   
  35. SQL> conn system  
  36. Enter password:   
  37. Connected.  
  38. SQL> create synonym v$parameter for sys.my_v$parameter_with_hidden;  
  39.   
  40. Synonym created.  


able to use "show parameter" to show hidden init parameters

 

 

  1. SQL> show parameter optimizer  
  2.   
  3. NAME                     TYPE    VALUE  
  4. ------------------------------------ ----------- ------------------------------  
  5. _db_file_optimizer_read_count        integer     8  
  6. _optimizer_adaptive_cursor_sharing   boolean     TRUE  
  7. _optimizer_adjust_for_nulls      boolean     TRUE  
  8. _optimizer_autostats_job         boolean     TRUE  
  9. _optimizer_aw_join_push_enabled      boolean     TRUE  
  10. _optimizer_aw_stats_enabled      boolean     TRUE  
  11. _optimizer_better_inlist_costing     string  ALL  
  12. _optimizer_block_size            integer     8192  
  13. _optimizer_cache_stats           boolean     FALSE  
  14. _optimizer_cartesian_enabled         boolean     TRUE  
  15. _optimizer_cbqt_factor           integer     50  
  16.   
  17. NAME                     TYPE    VALUE  
  18. ------------------------------------ ----------- ------------------------------  
  19. _optimizer_cbqt_no_size_restriction  boolean     TRUE  
  20. _optimizer_ceil_cost             boolean     TRUE  
  21. _optimizer_coalesce_subqueries       boolean     TRUE  
  22. _optimizer_complex_pred_selectivity  boolean     TRUE  
  23. _optimizer_compute_index_stats       boolean     TRUE  
  24. _optimizer_connect_by_cb_whr_only    boolean     FALSE  
  25. _optimizer_connect_by_combine_sw     boolean     TRUE  
  26. _optimizer_connect_by_cost_based     boolean     TRUE  
  27. _optimizer_connect_by_elim_dups      boolean     TRUE  
  28. _optimizer_correct_sq_selectivity    boolean     TRUE  
  29. _optimizer_cost_based_transformation string  LINEAR  

让Oracle的 SHOW PARAMETER 命令显示隐藏参数

上一篇:PL/SQL使用技巧


下一篇:大师级直播程序源码,一次让您玩个够