Chinaunix首页 | 论坛 | 博客
  • 博客访问: 28609
  • 博文数量: 14
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 150
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-27 04:53
文章分类

全部博文(14)

文章存档

2013年(14)

我的朋友

分类: Oracle

2013-08-04 16:37:28


SHOW PARAMETER 命令显示隐藏参数


Find internal of "show parameter" by session tracing


SQL> select * from v$version;


BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bi
PL/SQL Release 10.2.0.1.0 - Production
CORE    10.2.0.1.0      Production
TNS for Linux: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production


  
SQL> alter session set sql_trace=true;  
  
Session altered.  
  
SQL> oradebug setmypid  

Statement processed.  


SQL> show parameter optimizer

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
optimizer_dynamic_sampling           integer     2
optimizer_features_enable            string      10.2.0.1
optimizer_index_caching              integer     0
optimizer_index_cost_adj             integer     100
optimizer_mode                       string      ALL_ROWS
optimizer_secure_view_merging        boolean     TRUE


SQL> oradebug tracefile_name  

/u01/app/oracle/admin/test1/udump/test1_ora_20533.trc

SQL> oradebug CLOSE_TRACE

Statement processed.


Find internal sql statement in trace file. The major statement in trace file looks like following.
"show parameter" actually make query on view v$parameter. 


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_CL_PLUS_SHOW_PARAM  
  FROM V$PARAMETER  
 WHERE UPPER(NAME) LIKE UPPER('%optimizer%')  
 ORDER BY NAME_COL_PLUS_SHOW_PARAM, ROWNUM;  


Examing definition of view v$parameter


SQL> SELECT view_definition FROM v$fixed_view_definition WHERE view_name = 'V$PARAMETER';  
  
VIEW_DEFINITION  
-----------------------------------------------------
SELECT NUM,
       NAME,
       TYPE,
       VALUE,
       DISPLAY_VALUE,
       ISDEFAULT,
       ISSES_MODIFIABLE,
       ISSYS_MODIFIABLE,
       ISINSTANCE_MODIFIABLE,
       ISMODIFIED,
       ISADJUSTED,
       ISDEPRECATED,
       ISBASIC,
       DESCRIPTION,
       UPDATE_COMMENT,
       HASH
  FROM GV$PARAMETER
 WHERE inst_id = USERENV ('Instance')




Examing definition of view gv$parameter
hidden init parameters start with character '_' 

SQL> SELECT view_definition FROM v$fixed_view_definition WHERE view_name = 'GV$PARAMETER';   
  
VIEW_DEFINITION  
--------------------------------------------------------------------------------  
SELECT x.inst_id,
       x.indx + 1,
       ksppinm,
       ksppity,
       ksppstvl,
       ksppstdv l,
       ksppstdf,
       DECODE (BITAND (ksppiflg / 256, 1), 1, 'TRUE', 'FALSE'),
       DECODE (BITAND (ksppiflg / 65536, 3),
               1, 'IMMEDIATE',
               2, 'DEFERRED',
               3, 'IMMEDIATE',
               'FALSE'),
       DECODE (BITAND (ksppiflg, 4),
               4, 'FALSE',
               DECODE (BITAND (ksppiflg / 65536, 3), 0, 'FALSE', 'TRUE')),
       DECODE (BITAND (ksppstvf, 7),
               1, 'MODIFIED',
               4, 'SYSTEM_MOD',
               'FALSE'),
       DECODE (BITAND (ksppstvf, 2), 2, 'TRUE', 'FALSE'),
       DECODE (BITAND (ksppilrmflg / 64, 1), 1, 'TRUE', 'FALSE'),
       ksppdesc,
       ksppstcmnt,
       ksppihash
  FROM x$ksppi x, x$ksppcv y
 WHERE     (x.indx = y.indx)
       AND (    (TRANSLATE (ksppinm, '_', '#') NOT LIKE '##%')
            AND (   (TRANSLATE (ksppinm, '_', '#') NOT LIKE '#%')
                 OR (ksppstdf = 'FALSE')
                 OR (BITAND (ksppstvf, 5) > 0)))


Create pseudo-view of v$paramter

[oracle@test1 ~]$  sqlplus / as sysdba 

SQL*Plus: Release 10.2.0.1.0 - Production on Sun Aug 4 16:32:50 2013
Copyright (c) 1982, 2005, Oracle.  All rights reserved.

Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options


  
SQL> show user
USER is "SYS"

CREATE OR REPLACE VIEW my_v$parameter_with_hidden
(
   NUM,
   NAME,
   TYPE,
   display_Value,
   ISDEFAULT,
   ISSES_MODIFIABLE,
   ISSYS_MODIFIABLE,
   ISMODIFIED,
   ISADJUSTED,
   DESCRIPTION,
   UPDATE_COMMENT
)
AS
   SELECT x.indx + 1,
          ksppinm,
          ksppity,
          ksppstvl,
          ksppstdf,
          DECODE (BITAND (ksppiflg / 256, 1), 1, 'TRUE', 'FALSE'),
          DECODE (BITAND (ksppiflg / 65536, 3),
                  1, 'IMMEDIATE',
                  2, 'DEFERRED',
                  3, 'IMMEDIATE',
                  'FALSE'),
          DECODE (BITAND (ksppstvf, 7),
                  1, 'MODIFIED',
                  4, 'SYSTEM_MOD',
                  'FALSE'),
          DECODE (BITAND (ksppstvf, 2), 2, 'TRUE', 'FALSE'),
          ksppdesc,
          ksppstcmnt
     FROM x$ksppi x, x$ksppcv y
    WHERE (x.indx = y.indx)
/

View created.  
  

SQL> grant select on my_v$parameter_with_hidden to jordan;  
  
Grant succeeded.  
  
SQL> conn jordan/123456  


Enter password:   
Connected.  


SQL> create synonym v$parameter for sys.my_v$parameter_with_hidden;  
  
Synonym created.  

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


SQL> show user
USER is "JORDAN"


SQL> create synonym v$parameter for sys.my_v$parameter_with_hidden;  
  
Synonym created.  


SQL> show parameter unnest


NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
_distinct_view_unnesting             boolean     FALSE
_unnest_subquery                     boolean     TRUE


SQL> show parameter optimizer  

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
_db_file_optimizer_read_count        integer     8
_optimizer_adjust_for_nulls          boolean     TRUE
_optimizer_autostats_job             boolean     TRUE
_optimizer_better_inlist_costing     string      ALL
_optimizer_block_size                integer     8192
_optimizer_cache_stats               boolean     FALSE
_optimizer_cartesian_enabled         boolean     TRUE
_optimizer_cbqt_factor               integer     50
_optimizer_cbqt_no_size_restriction  boolean     TRUE
_optimizer_ceil_cost                 boolean     TRUE
_optimizer_choose_permutation        integer     0
_optimizer_complex_pred_selectivity  boolean     TRUE
_optimizer_compute_index_stats       boolean     TRUE
_optimizer_correct_sq_selectivity    boolean     TRUE
_optimizer_cost_based_transformation string      LINEAR
_optimizer_cost_filter_pred          boolean     FALSE
_optimizer_cost_hjsmj_multimatch     boolean     TRUE
_optimizer_cost_model                string      CHOOSE



阅读(767) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~