29 septembre 2011

ORA-28002: the password will expire within 6 days / ORA-28011: the account will expire soon / ORA-28000: the account is locked

Profil des comptes Oracle


A compter de Oracle v10, les comptes utilisent un profil par défaut avec les propriétés suivantes :

select * from dba_profiles where resource_type='PASSWORD' order by profile;
 
PROFILE                        RESOURCE_NAME                    RESOURCE LIMIT
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
DEFAULT                        FAILED_LOGIN_ATTEMPTS            PASSWORD 10
DEFAULT                        PASSWORD_LIFE_TIME               PASSWORD 180
DEFAULT                        PASSWORD_REUSE_TIME              PASSWORD UNLIMITED
DEFAULT                        PASSWORD_GRACE_TIME              PASSWORD 7
DEFAULT                        PASSWORD_VERIFY_FUNCTION         PASSWORD NULL
DEFAULT                        PASSWORD_LOCK_TIME               PASSWORD 1
DEFAULT                        PASSWORD_REUSE_MAX               PASSWORD UNLIMITED

Un mot de passe est donc valide 6 mois, et le compte est verrouillé après 10 tentatives de connexion infructueuses (ce qui va très vite si on démarre HR Access avec un objet Topologie HRS mal renseigné).

On aura alors blocage du compte :

select username, profile, account_status from dba_users where username='HR';
 
USERNAME         PROFILE              ACCOUNT_STATUS
- - - - - - - - - - - - - - - - - - - - - - - - -
HR               DEFAULT              LOCKED

Attribuer à HR un profil spécifique


Ci dessous on crée un profil différent du profil par défaut, sans limitations.

CREATE PROFILE HR
LIMIT
SESSIONS_PER_USER          UNLIMITED
CPU_PER_SESSION            UNLIMITED
CPU_PER_CALL               UNLIMITED
CONNECT_TIME               UNLIMITED
IDLE_TIME                  UNLIMITED
LOGICAL_READS_PER_SESSION  UNLIMITED
LOGICAL_READS_PER_CALL     UNLIMITED
PRIVATE_SGA                UNLIMITED
COMPOSITE_LIMIT            UNLIMITED
FAILED_LOGIN_ATTEMPTS      UNLIMITED
PASSWORD_LIFE_TIME         UNLIMITED
PASSWORD_REUSE_TIME        UNLIMITED
PASSWORD_REUSE_MAX         UNLIMITED
PASSWORD_LOCK_TIME         UNLIMITED
PASSWORD_GRACE_TIME        UNLIMITED
PASSWORD_VERIFY_FUNCTION   NULL;

Puis on l'attribue au compte HR :
ALTER USER HR PROFILE HR;

Débloquer le compte


Pour supprimer le verrouillage, se connecter avec le compte administrateur et exécuter l'ordre suivant :
ALTER USER HR ACCOUNT UNLOCK;

NB : si vous êtes sous Unix et que votre compte est dans le groupe "dba", cela se fait par la commande "sqlplus / as sysdba". Sinon il vous faut connaitre le mot de passe du compte "system". Attention : si vous n'avez pas un minimum de compétence Oracle, passez la main à un administrateur plutôt que de casser quelque chose ...

Pour supprimer le warning ORA-28011, le seul moyen que j'ai trouvé est de repositionner l'ancien mot de passe :
ALTER USER HR IDENTIFIED BY ...;

22 septembre 2011

Convertir la description encodée de certains objets HR Access

Depuis HRv3e, un certain nombre d'objets ont une description en base "illisible" car encodée au format MIME base64.

Ci dessous par exemple la description d'une page Web :

select ZONXML from WF25 where GPECRA||CDECRA='FPW0F703' order by NOLIG4;
 
00040018Coder-Version: 1.00037Content-Type: text/xml; charset=UTF-80033Content-Transfer-Encoding: base640034Content-Description:HRWFormEntity00005B44PD94bWwgdmVyc2lvbj0iMS4wIj8+DQo8SFJXSU5ET1cgV2lkdGg9IjEwMjQiIEhlaWdodD0iMTEwMCIgU3R5bGU9IiIgVmVyc2lvbj0iNS4wLjAiIHV1aWQ9IjlBNzMyM0Y4LTQ3MEYtNDJBMy05NzUxLTU0Q0JFRjQxNTkzRCIgQm9yZGVyPSJOb25lIiBGb290ZXJBY3Rpb25zPSJDQU5DRUwiPg0KCTxIUlBBTkVMIE1vZGU9InRhYiIgdXVpZD0iNDlFMzQ3MkItRDk2OC00NDg5LThBRTctMkNFOEQ2NTdFM0UyIiBMZWZ0PSIwIiB
...

Ci dessous un exemple de décodage de la description d'une page Web HRv5.
Il a fallu ordonner et joindre les multiples lignes de description :

echo "set lines 3900
select ZONXML||'\' from WF25 where GPECRA||CDECRA='FPW0F703'
order by NOLIG4;" |
i_sql |
sed '$s/\\$//' | sed -e :a -e '/\\$/N; s/\\\n//; ta' | sed -e 's/^.*Content-Description: HRWFormEntity........//' -e 's/^.*Encoding: base64........//' |
perl -MMIME::Base64 -ne 'print decode_base64($_)' | 
sed -e 's/é/é/g' -e 's/ê/ê/g' -e 's/à /à/g'  -e 's/è/è/g' -e 's/#@/@/g' -e 's/ô/ô/g' -e 's/î/î/g' -e 's/â/â/g' -e 's/û/û/g' -e 's/ç/ç/g' -e 's/ù/ù/g' |  tr '@' '\n'

Dans cet exemple de commande on a :
  •  i_sql qui est un utilitaire exécutant un SQLPLUS,
  •  un premier sed qui fusionne les lignes et supprime l'entête HR Access "Content-Description...base64" qui précède la description de l'objet,
  •  un perl qui décode la description,
  •  un second sed qui rétabli les caractères accentués.

ce qui donne :

<?xml version="1.0"?>
<HRWINDOW Width="1024" Height="1100" Style="" Version="5.0.0" uuid="9A7323F8-470F-42A3-9751-54CBEF41593D" Border="None" FooterActions="CANCEL">
<HRPANEL Mode="tab" uuid="49E3472B-D968-4489-8AE7-2CE8D657E3E2" Left="0" Top="0" Width="1024" Height="477" LabelContext="page" Style="PAN05" EnableContext="default">
<HRDS uuid="C2451795-82F1-4C7F-BEDB-712F11229D24" Left="0" Top="0" Width="774" Height="234" Typerep="Z" Maxrowrep="1" Maxcolrep="1" Titlerep="1" Type="normal" HideEmptyrep="0">
<HRPARAMS Left="18" Top="63" Width="738" Height="72" uuid="D21F177F-0433-4011-972E-A52577058799">
<HRPANEL Left="18" Top="63" Width="738" Height="72" Mode="simple" LabelContext="page" Style="PAN02" uuid="83BDF6FD-591F-47E5-A0D1-9ECEEFF251FB" EnableContext="default">
...

21 septembre 2011

Suppression impossible. L'utilisateur est connecté à HRa Space (code erreur 2004)

Avec HRa Suite 7, si vous cherchez a supprimer un compte avec HR Studio, alors que ce compte possède des données de session dans les tables de travail HR Access, votre demande sera rejetée.

Ce rejet est justifié si l'utilisateur est effectivement connecté.

En revanche, il n'est pas rare que les tables MX** se chargent de données obsolètes. Dans ce cas nettoyez les par un DELETE :

  DELETE FROM MX10 WHERE USERID='...';
  COMMIT:

Votre suppression de compte sera alors acceptée.

20 septembre 2011

Accès HRWeb aux travaux ZO associés aux demandes, Correction de ZO2O.NUDORI

Le dossier de travail sous HRv7, conserve dans la rubrique ZO2O.NUDORI le NUDOSS de la demande ZO associée. En cas de suppression et de recréation de la demande, le lien est perdu et l'interface Web ne peut plus afficher les anciens travaux associés à la demande (ce lien est codé dans la page AABV800D)

Pour lister les travaux déphasés :

Ordre SQL DB2:
select ZO00D.NUDOSS, ZO2O.NUDORI, ZO00T.NUDOSS, ZO00T.CDPHAS, ZO00T.CDELMT, ZO00T.TYTMPL, ZO00T.IDREQU, ZO00T.FLGJOB, ZO00T.TISOUM
from ZO00 ZO00T, ZO2O,ZO00 ZO00D
where ZO00T.NUDOSS=ZO2O.NUDOSS
and ZO00T.CDPHAS=ZO00D.CDPHAS and ZO00T.CDELMT=ZO00D.CDELMT and ZO00T.TYTMPL=ZO00D.TYTMPL and ZO00T.IDREQU=ZO00D.IDREQU
and ZO00D.FLGJOB='0' and ZO00D.TISOUM='0001-01-01-00.00.00.000000'
and ZO00D.NUDOSS<>ZO2O.NUDORI

Ordre SQL Oracle : remplacer "0001-01-01-00.00.00.000000" par "0001-01-01"

Pour corriger les déphasages :

Ordre SQL DB2:
update ZO2O
set ZO2O.NUDORI = (
select coalesce(
(select ZO00D.NUDOSS from ZO00 ZO00D, ZO00 ZO00T
where  ZO00T.NUDOSS=ZO2O.NUDOSS
and ZO00T.CDPHAS=ZO00D.CDPHAS and ZO00T.CDELMT=ZO00D.CDELMT and ZO00T.TYTMPL=ZO00D.TYTMPL and ZO00T.IDREQU=ZO00D.IDREQU
and ZO00D.FLGJOB='0' and ZO00D.TISOUM='0001-01-01-00.00.00.000000')
,0)
from SYSIBM.SYSDUMMY1)

Ordre SQL Oracle : remplacer "coalesce" par "nvl", "0001-01-01-00.00.00.000000" par "0001-01-01" et "SYSIBM.SYSDUMMY1" par "DUAL"

12 septembre 2011

Message d'erreur SORT020U: SORT(EXTSM) failed - sort engine status = 24

Cette erreur provient de l'utilitaire mfsort. Elle survient lors de la génération d'un fichier indexés de plus de 4 Go.

  SORT013U: I/O error on dataset '/hraccess/file/PAPFR/PVBDFAS0
  SORT014U: Status = 24
  SORT020U: SORT(EXTSM) failed - sort engine status = 24

Cause : Par défaut le format des fichiers indexés on un IDXFORMAT (format des fichiers indexés) à 1 pour les fichiers dont les enregistrements sont de longueur fixe, et IDXFORMAT 3 pour les longueurs variables. Ces formats de fichier sont limités à 4 Go (cf http://supportline.microfocus.com/documentation/books/sx20books/fhlimi.htm#s006)

Solution : Changer le format des fichiers indexés pour passer l'IDXFORMAT à 8, ce qui porte la limite de volume à 128 To ou 8MTo avec FILEPOINTERSIZE=8 (longueur en octets pour stockage des pointeurs)
  • Ajouter dans le fichier $EXTFH le paramètre IDXFORMAT=8
  [XFH-DEFAULT]
  FILEMAXSIZE=8
  IDXFORMAT=8
  • Convertir les fichiers avec la commande rebuild ... (à confirmer : je n'ai pas eu l'occasion de tester)
  rebuild in-file[,out-file] [ -option ...]
  -i[:command]        - rebuild and display information
  -v[:n]              - display running count every n records
  -e                  - continue after duplicate key error
  -q                  - quick rebuild
  -p                  - rebuild format 8 file in place (no backup)
  -n[:command]        - no output - just display file information
  -x:n                - key of reference [out-file only]
  -d                  - rebuild corrupt data file
  -y                  - force rebuild when file size discrepancy reported
  -z                  - specifies server for all files

Ci joint un lien Microfocus à consulter sur le sujet.

Attention : ces fichiers prennent la forme d'un fichier unique (par opposition aux habituels fichiers .idx associés aux fichiers de données). Ceci peut avoir un impact sur des chaines ou des scripts qui prennent en charge ces fichiers ".idx".

2 septembre 2011

La version de l'applet (x.x.x) est incompatible avec celle de l'application (y.y.y)

En cas de montée de version, ce message d'erreur peut survenir lors de l'affichage des pages du client riche HRaSpace v7.
Il est dû au fait que l'upgrade a déployé sur le serveur Web des fichiers dont l'horodatage est antérieur à votre dernière navigation.

La meilleure solution est donc de demander à l'installateur de mettre à jour l'horodatage des fichiers du serveur Web (pour forcer les postes clients a rafraichir leur cache). Par exemple pour un serveur Unix ou Linux :
  cd .../webapps
  find . -type f -exec touch {} \;

Sinon, une solution de contournement est de nettoyer le cache de votre JVM.

La JVM SUN garde dans son cache les applet des différentes applications auxquelles le poste s'est connecté.
Ce cache est différent de celui de IE ou Firefox.
Pour mon poste il se trouve dans C:\Documents and Settings\Administrator\Application Data\Sun\Java\Deployment\cache

Pour le nettoyer,
  • Affichez le panneau de configuration Java (par exemple sous Windows XP dans "Démarrer/ Panneau de configuration / Java")
  • Trouvez la section "Fichiers Internet temporaires", bouton "Affichez",
  • Dans la pop-up sélectionner les "ressources", et triez par URL.
  • Il est ensuite nécessaire de retrouver les fichiers préfixés par l'URL de votre environnement (nom/adresse IP + port). 
  • L'applet est nommée "hrapplet.jar". Mais par sécurité supprimez tous les fichiers faisant référence à l'environnement concerné.
Dans le doute supprimez tous les fichiers en cache... Ils seront ramenés au fil de vos futures navigations.

1 septembre 2011

Console d'évènement sous HRaSpace v7

Avec HRv7 est apparue la console d'évènements. On y trouve en général des messages concernant les traitements batch.


Les évènements sont stockés dans la table EV10 :
 NUMEVT  INTEGER       
 SOURCE  CHARACTER     12
 CATEGO  CHARACTER     12
 SERVNM  CHARACTER     40
 TIMDEB  TIMESTAMP    
 TIMFIN  TIMESTAMP    
 POERRE  CHARACTER      1
 IDGPRG  INTEGER       
 USERID  CHARACTER     25
 TEANNU  CHARACTER      1
 FILENM  CHARACTER    254
 DESCRS  CHARACTER     55
 DESCRL  VARCHAR     3000
 COMPLT  VARCHAR      200

Il est possible de retrouver les évènements tracés en table EV10 et analysant les squelettes :
*    squelette  (source/catégorie)
* BCM "DESCENTER"   "ERRSYS"    <- Conditionnement <DEBESP> dans le squelette
* BHR "HRASERVER"   "CONNECT"   <- Conditionnement <DEBESP> dans le squelette
* BHV "SELFSERVICE" "INSTANT"   <- Conditionnement <DEBESP> dans le squelette
* BOP "HRASERVER"   "BATCHJOB"
* BTS "DESCENTER"   "DEPLOY"    <- Conditionnement <DEBESP> dans le squelette

On note que malheureusement, la plupart des évènements sont réservés à HRAS du fait d'un conditionnement dans  BGZ et BGX si W-WPVA-ESPISV = "ISV" au lieu de "ESP" (les plates-formes dites "ESP" sont des plates formes hébergeant des clients à HRAS) ... Contournement possible : générer un BGZ et un BGX spécifique avec W-WPVA-ESPISV = "ESP", créer une chaine RBZ spécifique, regénérer les programmes  BHR BCM BHV BTS (et faire un arret/relance de OpenHR)

Notez qu'il est possible de faire apparaître des évènement sur traitements TP grâce au contexte TBP079 de BNL

Activation de mails d'alerte

Pour compléter la console d'évènement accessible en Web, il est possible de demander l'activation d'un envoi de mail sur évènement :
  •  création et déploiement du modèle de mail DIGIXXXX créé pour l'occasion :
  Un évènement système a été relevé : "SOURCE" ${SOURCE} "CATEGO" ${CATEGO} "TIMDEB" ${TIMDEB} "USERID" ${USERID} "DESCRS" ${DESCRS} "FILENM" ${FILENM} ... Mail envoyé par Hraccess Design Server.
  • Alimentation en PP15 des paramètres d'activation de la fonctionnalité 'Nom du serveur de mail, Destinataires du mail, Code template
  insert into PP15 values ('PPCLIDEV','EV_SRVMAIL','digix.smtp-server');
  insert into PP15 values ('PPCLIDEV','EV_RCVMAIL','digix@webmail.com');
  insert into PP15 values ('PPCLIDEV','EV_CDTEMP','DIGIXXXX');

En revanche cette fonction est dans la pratique inutilisable :
  •  impossible de choisir les types d'évènements justifiant un mail - on est donc "noyé" sous le nombre des messages,
  •  l'objet du mail correspond au libellé du modèle de mail et ne peut être enrichi,
  •  le mail contient trop peu d'informations (par exemple, en cas de tentative de connexion, le mail n'est pas dit si cette dernière a été acceptée ou refusée !),
  •  un mail peut arriver 15 minutes après l'évènement ... pas essence le mail n'est pas un système d'alerte fiable.