Appuyez sur Entrée pour rechercher

Un écran une histoire - IBM i Services (SQL) à la rescousse

18/02/2021
Author Avatar
Rudi van Helvoirt

Que pouvez-vous faire pour déterminer quelle est la cause d'une utilisation soudaine et rapide de l'espace disque ? Je vais l’expliquer ici.

Le déclencheur

Vendredi 29 janvier 2021 Je suis dans une réunion d’équipes qui touche à sa fin, alors que le téléphone sonne. Un SMS rapide constitue la réponse, indiquant à l'interlocuteur que je le rappellerai dans les 10 minutes. Au moment où je me prépare à rappeler, un autre client appelle. Cet appel prend du temps et encore une fois le téléphone sonne, je reconnais le numéro dès le premier appel. Je termine rapidement mon appel et rappelle. Bientôt, je comprends leur urgence, leur système prenait de l'espace disque à un rythme alarmant.

Ils me demandent des conseils. Sur la base de l’expérience précédente, il est probable qu’une requête ad hoc remplisse le système. Je leur conseille de regarder les tâches SQL sur le système, de regarder les E / S disque pour en déterminer la cause. Je propose de jeter un coup d’œil moi-même, mais l’appelant me dit que leurs system administrators vont l’examiner.

Un appel dans l’après-midi, me dit qu’il a fallu deux heures et demie à ces administrateurs pour trouver la cause. Une tâche d’IBM i Web Access avait créé un fichier XML au format IFS de près d’un demi-To. Cette tâche elle-même a été initiée par un 'ad hoc query request' d’un utilisateur.

disk pool


Ce qui s’est passé ce jour-là, est l’inspiration de cet article. Que pouvez-vous faire pour déterminer quelle est la cause d’une utilisation soudaine et rapide de l’espace disque. C’est ici que DB2 for i Services peut être d’une grande aide, sans vous coûter du temps en regardant l’écran vert 5250.

Pourquoi DB2 for i Services est une bouée de sauvetage

L’espace disque est utilisé par les utilisateurs. Ainsi, lorsque l’espace disque est utilisé, la consommation de stockage d’au moins un utilisateur augmente. Le script SQL ci-dessous vous aidera à mettre ces informations à la lumière du jour.

-

- Inventaire des utilisateurs avec leur consommation de stockage

SELECT AUTHORIZATION_NAME, PREVIOUS_SIGNON, STATUS, STORAGE_USED, LAST_USED_TIMESTAMP
DE QSYS2.USER_INFO ORDER par STORAGE_USED DESC;

- Créer un tableau avec les informations permettant de faire le point sur la croissance du stockage utilisé

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;

- Maintenant, vous avez la table triez-la dans le bon ordre

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

-

- Dertermine l’intervalle nécessaire pour collecter les données en laissant suffisamment de temps pour pouvoir mesurer un changement

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);

- Collectez un ensemble supplémentaire de données

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);

- Consultez le tableau pour détecter l’utilisateur avec le plus de croissance

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

- Maintenant que vous avez l’utilisateur, jetez un œil à ses tâches si l’utilisation de l’espace disque continue d’augmenter

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

- Si vous êtes à jour avec la dernière version de DB2 PTF GROUP => Les informations Open File sont disponibles

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';

- La dernière chose que vous devez savoir est la taille de l’objet appartenant à l’utilisateur
- Pour cela, IBM a un exemple prêt à être utilisé

- Tout le texte ci-dessous est tiré de l'exemple

- Catégorie: Services IBM i


- la description: Stockage - Détails du stockage
pour un utilisateur spécifique

-
- Récupérer les détails des objets appartenant à un utilisateur spécifique

- Remarque: remplacez le nom d’utilisateur par le nom du profil utilisateur qui vous intéresse

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;

- S’il ne s’agit pas d’un objet dans une bibliothèque, l’exemple ci-dessous vous aidera davantage
- encore une fois, tout le texte ci-dessous est tiré d'un exemple prêt à être utilisé

- vous devez remplacer la valeur par le nom d’utilisateur correct

- Catégorie: Services IBM i
- la description: IFS - Stockage IFS consommé pour un utilisateur spécifique

- minvrm: V7R3M0

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;

Avertissement: ce script n’est en aucun cas parfait et n’est pas la solution à tous les problèmes de croissance de l’espace disque que vous pouvez rencontrer, mais j’espère qu’il vous permettra de commencer à plonger dans le monde appelé SQL et IBM i Service en particulier.

Cela vous donne suffisamment d’indices pour lancer l’enquête vous-même. Je vous souhaite la bienvenue dans le monde des services IBM i!

New call-to-action

Offres d'emploi actuelles

Abonnez-vous

Suivez-nous

  

Partage cet article