Oracle隐含参数查看

Oracle隐含参数查看
在sqlplus中使用show parameter xx可查看到Oracle定义的参数,它是通过查询v$parameter获得。另外Oracle中还有一些隐含的参数无法直接通过show parameter的方式查询。Oracle的隐含参数(hidden parameters),由Oracle内部使用,以'_'开头。当实例开启时的后台日志中可以看到实例启动都加载了哪些参数,但后台参数是看不到的。
我们查看select * from v$parameter的执行计划:
SYS@source>set autotrace traceonly
SYS@source>select * from v$parameter;

352 rows selected.


Execution Plan
----------------------------------------------------------
Plan hash value: 1128103955

------------------------------------------------------------------------------
| Id  | Operation	  | Name     | Rows  | Bytes | Cost (%CPU)| Time     |
------------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |	     |	   1 |	4414 |	   0   (0)| 00:00:01 |
|*  1 |  HASH JOIN	  |	     |	   1 |	4414 |	   0   (0)| 00:00:01 |
|*  2 |   FIXED TABLE FULL| X$KSPPI  |	   1 |	 249 |	   0   (0)| 00:00:01 |
|   3 |   FIXED TABLE FULL| X$KSPPCV |	 100 |	 406K|	   0   (0)| 00:00:01 |
SYS@source>desc x$ksppi
 Name								   Null?    Type
 ----------------------------------------------------------------- -------- --------------------------------------------
 ADDR									    RAW(8)
 INDX									    NUMBER
 INST_ID								    NUMBER
 KSPPINM								    VARCHAR2(80)
 KSPPITY								    NUMBER
 KSPPDESC								    VARCHAR2(255)
 KSPPIFLG								    NUMBER
 KSPPILRMFLG								    NUMBER
 KSPPIHASH								    NUMBER

SYS@source>desc x$ksppcv
 Name								   Null?    Type
 ----------------------------------------------------------------- -------- --------------------------------------------
 ADDR									    RAW(8)
 INDX									    NUMBER
 INST_ID								    NUMBER
 KSPPSTVL								    VARCHAR2(4000)
 KSPPSTDVL								    VARCHAR2(4000)
 KSPPSTDF								    VARCHAR2(9)
 KSPPSTVF								    NUMBER
 KSPPSTCMNT								    VARCHAR2(255)

由此,可通过如下方式查询当前实例的所有隐含参数:
就可以通过如下方式查询当前实例的所有隐含参数:
 
select x.ksppinm  name, y.ksppstvl  value, y.ksppstdf  isdefault, decode(bitand(y.ksppstvf,7),1,'MODIFIED',4,'SYSTEM_MOD','FALSE')  ismod, decode(bitand(y.ksppstvf,2),2,'TRUE','FALSE')  isadj
 
from sys.x$ksppi x, sys.x$ksppcv y where x.inst_id = userenv('Instance') and
 
y.inst_id = userenv('Instance') and x.indx = y.indx order by
translate(x.ksppinm, ' _', ' ')
 

通过以下脚本可以查询获得这些被隐含的参数:
set linesize 132
column name format a30
column value format a25
select
  x.ksppinm  name,
  y.ksppstvl  value,
  y.ksppstdf  isdefault,
  decode(bitand(y.ksppstvf,7),1,'MODIFIED',4,'SYSTEM_MOD','FALSE')  ismod,
  decode(bitand(y.ksppstvf,2),2,'TRUE','FALSE')  isadj
from
  sys.x$ksppi x,
  sys.x$ksppcv y
where
  x.inst_id = userenv('Instance') and
  y.inst_id = userenv('Instance') and
  x.indx = y.indx and
  x.ksppinm like '%_&par%'
order by
  translate(x.ksppinm, ' _', ' ')
/



查看oracle隐含参数

select a.ksppinm name, b.ksppstvl value, a.ksppdesc description
  from x$ksppi a, x$ksppcv b
 where a.indx = b.indx and a.ksppinm like '_spin_count';
 
 修改隐含参数时, alter system set "parameter_name"=value scope=both sid='*';
有些可以在memory而有些仅仅可以通过spfile更改, 尝试一下就知道了
需要注意的是一定要加上双引号, 另外引号内不能有空格, 只能包含参数的名字

你可能感兴趣的:(oracle,oracle隐含参数)