Vous connaissez index advisor, c’est le moteur SQL qui écrit dans le fichier QSYS2/SYSIXADV des suggestions d’index.

Vous pouvez l’utiliser
par SQL select * from QSYS2/SYSIXADV
par Navigator for i
par ACS
Vous avez même des procédures pour automatiser cette gestion

https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_73/rzajq/rzajqservicesperf.htm

Mais il peut arriver que le fichier soit endommagé, et les commandes IBMi habituelles sont inefficaces sur ce fichier (idem pour RCLDBXREF et RCLSTG).
C’est souvent un verrouillage du fichier QSYS2/SYSIXADV par des jobs QDBSRVxx qui fait planter votre sauvegarde par exemple.

Voici la procédure à suivre
Vous devrez trouver le bon CCSID c’est celui de la zone DBXFIL du fichier QADBXREF
par exemple par SQL en faisant

SELECT « CCSID » FROM SYSCOLUMNS
WHERE COLUMN_NAME = ‘DBXFIL’ and
TABLE_NAME = ‘QADBXREF’

  1. Essayer d’arrêter les jobs QDBSRVxx
  2. ALCOBJ OBJ((QSYS2/SYSIXADV *FILE *EXCL)) CONFLICT(*RQSRLS)
  3. DLTF QSYS2/SYSIXADVIX
  4. DLTF QSYS2/CONDIDXA
  5. DLTF QSYS2/SYSIXADV
  6. CHGJOB CCSID(zz)
  7. CALL QSYS/QSQSYSIBM
  8. CALL QSYS/QSQIBMCHK

Si vous n’arrivez pas, allouer le fichier.
Vous allez devoir arrêter index advisor en ajoutant une variable d’environnement
ADDENVVAR ENVVAR(QIBM_NO_INDEX_ADVICE) VALUE( ») LEVEL(SYS) pour que cela soit pris en compte vous devez faire un IPL

Vous devez ensuite refaire la procédure ci dessus attention il faut redémarrer index advisor en enlevant la variable d’environnement par

RMVENVVAR ENVVAR(QIBM_NO_INDEX_ADVICE) LEVEL(SYS)
Vous devez refaire un IPL

Pour contrôler, vous pouvez regarder les variables d’environnement

WRKENVVAR ou
par sql
SELECT
CAST(VAR_BNAME AS CHAR(50)) AS Nom_Variable,
VAR_BVALUE AS Valeur_variable,
VAR_CCSID AS CCSID_variable
FROM QSYS2.ENVIRONMENT_VARIABLE_INFO
WHERE VAR_TYPE = ‘SYSTEM’

et ensuite vous surveillez que le fichier QSYS2/SYSIXADV se remplisse de nouvelles suggestions.

Vous avez des exemples d’utilisation dans ACS.