Lister les paramètres cachés et ce qu’ils font

cachée

Les paramètres cachés sont ceux qu’on n’est pas censé toucher. Ceux qui sont là en cas d’extrème urgence pour contourner un bug le temps qu’Oracle ponde un “patch”. Ils sont là pour contourner les bugs, c’est du moins le message du support Oracle.

Ils servent aussi d’interrrupteur et de paramétrage des fonctionalités ( le nombre de secondes entre deux snapshots d’ASH, c’est un paramètre caché, l’utilisation de certaines fonctions de l’optimiseur ce sont aussi des paramètres cachés.) Afin de les trouver et de déterminer leur fonction, il est possible d’interroger la base de dpnnées ou plus exctement ses structures mémoire qui ont ces informations en stock.

set lines 155 pages 50000

SELECT
x.inst_id inst_id,
x.indx num,
x.ksppinm name,
decode(x.ksppity, 1, 'BOOLEAN',
2, 'STRING',
3, 'INTEGER',
4, 'PARAMETER FILE',
5, 'RESERVED',
6, 'BIG INTEGER', 'UNKNOWN') type,
y.ksppstvl value,
decode(y.ksppstdf, 'TRUE', 'DEFAULT VALUE',
'FALSE', 'INIT.ORA') isdefault,
decode(bitand(x.ksppiflg / 256, 1), 1, 'IS_SESS_MOD(TRUE)', 'FALSE') isses_modifiable,
decode(bitand(x.ksppiflg / 65536, 3), 1, 'MODSYS(NONDEFERED)',
2, 'MODSYS(DEFERED)',
3, 'MODSYS(*NONDEFERED*)', 'FALSE') issys_modifiable,
decode(bitand(y.ksppstvf, 7), 1, 'MODIFIED_BY(SESSION)',
4, 'MODIFIED_BY(SYSTEM)', 'FALSE') ismodified,
decode(bitand(y.ksppstvf, 2), 2, 'ORA_STARTUP_MOD(TRUE)', 'FALSE') isadjusted,
x.ksppdesc description,
y.ksppstcmnt update_comment,
x.ksppihash hash
FROM x$ksppi x, x$ksppcv y
WHERE x.inst_id = y.inst_id
and x.indx = y.indx
and x.ksppinm like '%&name%';

ou

set lines 155 pages 50000

col name for a40
col type for a15
col value for a30 wrap

SELECT
x.ksppinm name,
decode(x.ksppity, 1, 'BOOLEAN',
2, 'STRING',
3, 'INTEGER',
4, 'PARAMETER FILE',
5, 'RESERVED',
6, 'BIG INTEGER', 'UNKNOWN') type,
y.ksppstvl value,
decode(bitand(y.ksppstvf, 7), 1, 'MODIFIED_BY(SESSION)',
4, 'MODIFIED_BY(SYSTEM)', 'FALSE') ismodified,
decode(bitand(y.ksppstvf, 2), 2, 'ORA_STARTUP_MOD(TRUE)', 'FALSE') isadjusted,
x.ksppdesc description
FROM x$ksppi x, x$ksppcv y
WHERE x.inst_id = y.inst_id
and x.indx = y.indx
and x.ksppinm like '%&name%';

Ce qui pour la vraible name settée à “quarantine” en Oracle 19c donne :

NAME TYPE VALUE ISMODIFIED ISADJUSTED
DESCRIPTION
_quarantine_enabled BOOLEAN TRUE FALSE FALSE
quarantine: enable
_quarantine_max_objs INTEGER 10000 FALSE FALSE
quarantine: max number of objects
_quarantine_max_mem INTEGER 1 FALSE FALSE
quarantine: max amount of memory
_quarantine_per_hour INTEGER 60 FALSE FALSE
quarantine: limit per hour
_optimizer_quarantine_sql BOOLEAN TRUE FALSE FALSE
enable use of sql quarantine