Duw op enter om te zoeken

Een scherm een verhaal – IBM i Services (SQL) biedt hulp

18/02/2021
Author Avatar
Rudi van Helvoirt

Wat kan je doen om te bepalen wat de oorzaak is van een plotseling snel toenemend gebruik van schijfruimte? Ik zal het uitleggen.

De trigger

Op vrijdag 29 januari 2021 nam ik deel aan een Teams-vergadering. Toen die bijna ten einde was, ging de telefoon. Ik stuurde even snel een sms om de beller te laten weten dat ik binnen 10 minuten terug zou bellen. Toen ik voorbereidingen trof om dat te doen, belde een andere klant. Dit gesprek nam wat tijd in beslag en weer ging de telefoon. Ik herkende het nummer van de eerste oproep. Ik heb het gesprek snel afgerond om terug te kunnen bellen. Al snel daarna begreep ik wat er zo urgent was, hun systeem nam in een alarmerend tempo schijfruimte in beslag.

Ze vragen mij om advies. Op basis van eerdere ervaringen weet ik dat het waarschijnlijk is dat een ad hoc query het systeem vol laat lopen. Ik adviseerde hen de SQL-taken op het systeem na te kijken en de schijf-I/O te bekijken om de oorzaak vast te stellen. Ik bied aan om er zelf naar te kijken, maar de beller vertelt me dat de systeembeheerders dit zullen doen.

Na het telefoontje later die middag weet ik dat het die systeembeheerders tweeënhalf uur heeft gekost om de oorzaak te vinden. Een taak van IBM i Web Access had in het IFS een XML-bestand aangemaakt van bijna een halve TB groot. Deze taak was opgestart vanuit een ad hoc queryverzoek van een gebruiker.

disk pool

De gebeurtenissen van die dag vormden de inspiratie voor dit artikel: wat kan je doen om te bepalen wat de oorzaak is van een plotseling snel toenemend gebruik van schijfruimte.
> Hier kan DB2 voor i Services van grote waarde zijn, zonder dat je tijd verliest met het kijken naar het 5250 green screen.

Waarom DB2 voor i Services uitkomst biedt

Schijfruimte wordt gebruikt door gebruikers, dus als schijfruimte wordt gebruikt, neemt het opslagverbruik van ten minste één gebruiker toe. Je kunt het hieronder getoonde SQL-script gebruiken om die informatie boven water te krijgen.



— Inventarisatie van gebruikers met hun opslagverbruik.

SELECT AUTHORIZATION_NAME, PREVIOUS_SIGNON, STATUS, STORAGE_USED, LAST_USED_TIMESTAMP
FROM QSYS2.USER_INFO ORDER by STORAGE_USED DESC;

— Maak een tabel aan met de informatie die het mogelijk maakt om de toename van de gebruikte opslagruimte te bekijken.

CREATE TABLE QRPLOBJ.USER_Storage_Usage AS
(SELECT TIMESTAMP, AUTHORIZATION_NAME, PREVIOUS_SIGNON, STATUS, STORAGE_USED,
LAST_USED_TIMESTAMP
FROM QSYS2.USER_INFO)
WITH DATA;

— Als je de tabel hebt aangemaakt, zet je alles in de juiste volgorde.

SELECT *
FROM QRPLOBJ.USER_Storage_Usage
ORDER BY STORAGE_USED DESC, AUTHORIZATION_NAME, CREATION_TIMESTAMP;



— Bepaal het interval dat nodig is om de gegevens te verzamelen, zodat er genoeg tijd is om een verandering te meten.

CL:DLYJOB DLY(90);
insert into QRPLOBJ.USER_Storage_Usage
(SELECT TIMESTAMP, AUTHORIZATION_NAME, PREVIOUS_SIGNON, STATUS, STORAGE_USED,
LAST_USED_TIMESTAMP
FROM QSYS2.USER_INFO);

Verzamel een extra set data.

CL:DLYJOB DLY(90);
insert into QRPLOBJ.USER_Storage_Usage
(SELECT TIMESTAMP, AUTHORIZATION_NAME, PREVIOUS_SIGNON, STATUS, STORAGE_USED,
LAST_USED_TIMESTAMP
FROM QSYS2.USER_INFO);

— Bekijk de tabel om de Gebruiker met de grootste toename op te sporen.

SELECT *
FROM QRPLOBJ.USER_Storage_Usage
ORDER BY STORAGE_USED DESC, AUTHORIZATION_NAME, CREATION_TIMESTAMP;

— Gebruiker gevonden? Loop taken na en kijk of het gebruik in schijfruimte nog steeds toeneemt.

SELECT JOB_NAME, AUTHORIZATION_NAME, ELAPSED_TOTAL_DISK_IO_COUNT, ELAPSED_CPU_PERCENTAGE
FROM TABLE (
QSYS2.ACTIVE_JOB_INFO(DETAILED_INFO => ‘ALL’)
) X
WHERE X.AUTHORIZATION_NAME = ‘RUDI’;

— Als je op de hoogte bent van de nieuwste DB2 PTF GROUP => ‘Open File’ informatie is beschikbaar.

SELECT JOB_NAME, AUTHORIZATION_NAME, ELAPSED_TOTAL_DISK_IO_COUNT, ELAPSED_CPU_PERCENTAGE, X.OPEN_FILES
FROM TABLE (
QSYS2.ACTIVE_JOB_INFO(DETAILED_INFO => ‘ALL’)
) X
WHERE X.AUTHORIZATION_NAME = ‘RUDI’;

— Het laatste wat je moet achterhalen is de grootte van het object dat eigendom is van de gebruiker.
— Daar heeft IBM een voorbeeld voor dat je zo kunt gebruiken.

— Alle tekst hieronder is afkomstig uit het voorbeeld.

— categorie: IBM i Services


— omschrijving: Storage – Storage details
voor een specifieke gebruiker


— Vraag de gegevens op van objecten die eigendom zijn van een specifieke gebruiker.

— Let op: vervang de gebruikersnaam door de naam van het gewenste gebruikersprofiel.

SELECT b.objlongschema, b.objname, b.objtype, b.objattribute, b.objcreated, b.objsize, b.objtext, b.days_used_count, b.last_used_timestamp,b.* FROM
TABLE (QSYS2.OBJECT_STATISTICS(‘ALLUSRAVL ‘, ‘LIB’) ) as a,
TABLE (QSYS2.OBJECT_STATISTICS(a.objname, ‘ALL’) ) AS b
WHERE b.OBJOWNER = ”
ORDER BY b.OBJSIZE DESC
FETCH FIRST 100 ROWS ONLY;

— Als het geen object in een bibliotheek betreft, helpt onderstaand voorbeeld je op weg.
— ook hier is onderstaande tekst afkomstig van een kant-en-klaar voorbeeld.
— je hoeft alleen de waarde te vervangen door de juiste gebruikersnaam.

— categorie: IBM i Services
— omschrijving: IFS – IFS storage verbruikt voor een specifieke gebruiker

— minvrm: V7R3M0

with ifsobjs (path, type) as (
select path_name, object_type
from table(qsys2.object_ownership(”)) a
where path_name is not null
)
select i., data_size, z.
from ifsobjs i, lateral (
select * from
table(qsys2.ifs_object_statistics(
start_path_name => path,
subtree_directories => ‘NO’))) z
order by data_size desc;

Disclaimer: Dit script is zeker niet perfect en biedt geen oplossing voor elke toename in schijfruimtegebruik waar je mee te maken kunt krijgen. Door in de wereld te duiken van SQL en IBM i Service in het bijzonder, hoop ik echter wel dat het je op weg helpt.

Het geeft je genoeg aanknopingspunten om zelf op onderzoek uit te gaan. Dus wat mij betreft: welkom in de wereld van IBM i Services!

AutoDBE - virtuele database engineer voor betere IBM i performantie

Vacatures

Wij zijn voortdurend op zoek naar nieuwe collega's!

Als je onze waarden deelt en op zoek bent naar een uitdagende job in België's Best Workplace, bezoek dan onze website.

Solliciteer nu

Schrijf je in voor onze nieuwsbrief

Follow us

  

Deel dit artikel