Dans le post précédent je me suis trouvé confronté au souci suivant: le passage du paramètre control_management_pack_access de NONE à DIAGNOSTIC+TUNING sur Linux ne déclenchait pas toutes les collectes de statistiques nécessaires au bon établissement d’un rapport AWR et ce malgré le caractère dynamique dudit paramètre.
Deux contournements m’ont été proposés par le support :
- Redémarrer la base (SIC!)
- Ou manuellement Alimenter les tables dont les données ne sont pas collectées à l’aide des scripts suivants :
Stocker l’identifiant de la base dans une variable de liaison
var dbid number exec select dbid into :dbid from v$database
Alimenter la table WRH$_PARAMETER_NAME
Avant de collecter ces données, vérifier que la table WHR$ est bien vide
INSERT INTO WRH$_PARAMETER_NAME( dbid , PARAMETER_HASH , PARAMETER_NAME ) SELECT DISTINCT :dbid , KSPPIHASH , KSPPINM FROM X$KSPPI;
Alimenter la table WRH$_EVENT_NAME
Avant de collecter ces données, vérifier que la table WHR$ est bien vide
INSERT INTO WRH$_EVENT_NAME( dbid , EVENT_ID , EVENT_NAME , PARAMETER1 , PARAMETER2 , PARAMETER3 , WAIT_CLASS_ID , WAIT_CLASS ) SELECT DISTINCT :dbid , EVENT_ID , NAME , PARAMETER1 , PARAMETER2 , PARAMETER3 , WAIT_CLASS_ID , WAIT_CLASS FROM V$EVENT_NAME;
Alimenter la table WRH$_LATCH_NAME
Avant de collecter ces données, vérifier que la table WHR$ est bien vide
INSERT INTO WRH$_LATCH_NAME( dbid , LATCH_HASH , LATCH_NAME , LATCH#) SELECT DISTINCT :dbid , HASH , NAME , LATCH# FROM V$LATCHNAME;
Alimenter la table WRH$_OSSTAT_NAME
Avant de collecter ces données, vérifier que la table WHR$ est bien vide
INSERT INTO WRH$_OSSTAT_NAME( dbid , STAT_ID , STAT_NAME) SELECT DISTINCT :dbid , OSSTAT_ID , STAT_NAME FROM V$OSSTAT;
Alimenter la table WRH$_IOSAT_FUNCTION_NAME
INSERT INTO WRH$_IOSTAT_FUNCTION_NAME( dbid , FUNCTION_ID , FUNCTION_NAME) SELECT DISTINCT :dbid , FUNCTION_ID , FUNCTION_NAME FROM V$IOSTAT_FUNCTION;
Alimenter la table WRH$_IOSTAT_FILETYPE_NAME
Avant de collecter ces données, vérifier que la table WHR$ est bien vide
INSERT INTO WRH$_IOSTAT_FILETYPE_NAME( dbid , FILETYPE_ID , FILETYPE_NAME) SELECT DISTINCT :dbid , FILETYPE_ID , FILETYPE_NAME FROM V$IOSTAT_FILE;
Alimenter la table WRH$_PLAN_OPERATION_NAME
Avant de collecter ces données, vérifier que la table WHR$ est bien vide
INSERT INTO WRH$_PLAN_OPERATION_NAME( dbid , OPERATION_ID , OPERATION_NAME) SELECT DISTINCT :dbid , XPLTON_ID , XPLTON_NAME FROM X$XPLTON;
Alimenter la table WRH$_PLAN_OPTION_NAME
Avant de collecter ces données, vérifier que la table WHR$ est bien vide
INSERT INTO WRH$_PLAN_OPTION_NAME( dbid , OPTION_ID , OPTION_NAME) SELECT DISTINCT :dbid , XPLTOO_ID , XPLTOO_NAME FROM X$XPLTOO;
Alimenter la table WRH$_SQLCOMMAND_NAME
Avant de collecter ces données, vérifier que la table WHR$ est bien vide
INSERT INTO WRH$_SQLCOMMAND_NAME( dbid , COMMAND_TYPE , COMMAND_NAME) SELECT DISTINCT :dbid , COMMAND_TYPE , COMMAND_NAME FROM V$SQLCOMMAND;
Alimenter la table WRH$_TOPLEVELCALL_NAME
Avant de collecter ces données, vérifier que la table WHR$ est bien vide
INSERT INTO WRH$_TOPLEVELCALL_NAME( dbid , TOP_LEVEL_CALL# , TOP_LEVEL_CALL_NAME) SELECT DISTINCT :dbid , TOP_LEVEL_CALL# , TOP_LEVEL_CALL_NAME FROM V$TOPLEVELCALL;
Alimenter la table WRH$_STAT_NAME
Avant de collecter ces données, vérifier que la table WHR$ est bien vide
INSERT into wrh$_stat_name ( stat_id , dbid , stat_name) select stat_id , :dbid , stat_name from (select stat_id , name stat_name from v$statname union select stat_id , stat_name from v$sys_time_model);