Deze week een beheer issue bij de hand gehad m.b.t. een “monitoring filter”. Een Cronacle gebruiker had een eigen filter geschreven. Na het aanklikken van het filter duurde het meer dan 1 uur voordat er jobs getoond werden.
Analyse
Via een aparte SQL sessie heb ik de repository geraadpleegd welke “where clause” definities er waren voor filters. De betreffende where conditie heb ik aan een explain plan onderworpen. Er was voor een kolom gekozen, welke niet geïndexeerd was, waardoor het filter een full table scan deed op de repository view JCS_JOBS.
Een nieuw filter bouwen, gebaseerd op andere kolommen die wel geïndexeerd zijn, is dan een oplossing.
Verwijderen oude filter
Normaliter kan men een filter verwijderen door:
– filter selecteren
– rechter muis knop
– “delete” selecteren
Echter bij het selecteren van het filter wordt eerst de detail informatie opgehaald.
Daar wil ik nu geen uur op wachten…..
Verwijderen filter via Redwood Shell
Het filter kan ook verwijderd worden via de Redwood Shell. Hierbij kan gebruik gemaakt worden van het jcs_registry pacakge. Filter informatie ligt opgeslagen via registry instellingen. Met de volgende query kan men de “key waarde” van een betreffend filter terugvinden, welke we nodig hebben om het filter te kunnen verwijderen.
select key_id, name, private
from sysjcs.rs_all_registry_keys
where parent_key_id in ( select key_id from sysjcs.rs_all_registry_keys where name=’Filters’ )
and jcs_registry.key_path(key_id) like ‘%/Monitor/Jobs/Filters/%’;
Een voorbeeld van de output is:
KEY_ID
NAME
PRIVATE
5520
PL_TEST_DROP_FILTER
Y
Na het opstarten van een Redwood Shell (RS), kan men het volgende commando geven:
begin
jcs_registry.drop_key(key_id=>5520, recursive=>’Y’);
end;
Na het bouwen van jobchains en/of scripts kun je de kwaliteit van de parameters en constraints controleren met de volgende query. In de query worden alle jobchains en scripts van een bepaalde applicatie, in dit voorbeeld ABC_DEF, gepresenteerd.
select a.owner, a.name
, b.parameter_id, b.parameter_name, b.data_default, b.data_type, b.data_length, b.groupname
, c.name constraint_name, c.constraint_id
,d.message_text, d.search_condition
from jcs_scripts a
, jcs_script_parameters b
, jcs_script_constraint_columns c
, jcs_script_constraints d
where a.application_name = ‘ABC_DEF’
and a.script_id = b.script_id
and b.parameter_id < 1000
and b.script_id = c.script_id (+)
and c.script_id = d.script_id(+)
and c.constraint_id = d.constraint_id (+)
and b.parameter_id = c.parameter_id (+);