PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 20/09/2012 11:16:54

dmeurisse
Membre

WIN: PGAgent: Execution JOB - toujours "Failed"

Bonjour, j'essaye de mettre en place une JOB de backup avec PGAgent sous Windows Server (Serveur SQL sur la même machine).
Ayant quelques problèmes, j'ai commencé une série de "test" en régression pour mettre le doigt sur ce qui ne va pas!

Pour commencé, j'ai défini une simple tâche SQL que j'essaye d'exécuter avec PGAgent (via l'option "Run Now" sur PGAdmin).
Le but étant d'avoir une tache qui fonctionne avant d'aller plus avant.

0) Versions
PostgreSql: 9.1
pgAgent: installé avec le StackBuilder

1) Définition de la tâche:

=== JOB "Test" ===
Type: Miscellaneous
Steps: "Run Sql"
Host Agent: SERVEUR.home (trouvé via requête sur le seveur)
=== STEP "Run SQL" ===
Connection Type: Local
Database: stockprod
Kind: Sql
On Error: Fail
Definition:
select * from file0050 limit 12;  (ce SQL fonctionne parfaitement depuis la pgAdminIII

2) Service pgAgent
Comme j'ai eu beaucoup de problèmes, j'ai démarré le service PGAgent en mode DEBUG
La ligne de commande utilisée est:

C:\Program Files (x86)\pgAgent\bin>pgAgent.exe DEBUG hostaddr=127.0.0.1 dbname=postgres user=postgres password=xxx -l 2

Le mode debug semble fonctionner correctement.
Ce dernier présente d'ailleurs l'exécution du JOB.

C:\Program Files (x86)\pgAgent\bin>pgAgent.exe DEBUG hostaddr=127.0.0.1 dbname=postgres user=postgres password=xxx -l 2
DEBUG: Creating primary connection
DEBUG: Connection Information:
DEBUG:      user         : postgres
DEBUG:      port         : 0
DEBUG:      host         : 127.0.0.1
DEBUG:      dbname       : postgres
DEBUG:      password     : xxx
DEBUG:      conn timeout : 0
DEBUG: Connection Information:
DEBUG:      user         : postgres
DEBUG:      port         : 0
DEBUG:      host         : 127.0.0.1
DEBUG:      dbname       : postgres
DEBUG:      password     : xxx
DEBUG:      conn timeout : 0
DEBUG: Creating DB connection: user=postgres hostaddr=127.0.0.1 password=xxx dbname=postgres
DEBUG: Database sanity check
DEBUG: Clearing zombies
DEBUG: Checking for jobs to run
DEBUG: Creating job thread for job 2
DEBUG: Creating DB connection: user=postgres hostaddr=127.0.0.1 password=xxx dbname=postgres
DEBUG: Allocating new connection to database postgres
DEBUG: Starting job: 2
DEBUG: Sleeping...
DEBUG: Creating DB connection: user=postgres hostaddr=127.0.0.1 password=xxx dbname=postgres dbname=stockprod
DEBUG: Allocating new connection to database stockprod
DEBUG: Executing SQL step 3 (part of job 2)
DEBUG: Returning connection to database stockprod
DEBUG: Returning connection to database postgres
DEBUG: Completed job: 2
DEBUG: Destroying job thread for job 2

Je ne note rien de vraiment spécial... sauf peut être une double utilisation de "dbname=" dans la ligne suivante:
  Creating DB connection: user=postgres hostaddr=127.0.0.1 password=xxx dbname=postgres dbname=stockprod

Je n'ai trouvé aucun message dans "Event Viewer" (rien d'évident en tout cas).

Quelqu'un aurait-il une suggestion?
Ai-je raté quelque-chose de fondamental?
Ou est caché la raison du "failed?"

Hors ligne

#2 20/09/2012 11:37:59

rjuju
Administrateur

Re : WIN: PGAgent: Execution JOB - toujours "Failed"

Bonjour,

je ne suis pas certain que le "Host agent" soit nécessaire.

Sinon, si un pas est en erreur, vous devriez voir un message associé dans l'onglet "Statistics" dans la colone "Output" du pas en question qui sera j'espère plus parlant.

Hors ligne

#3 20/09/2012 12:17:28

dmeurisse
Membre

Re : WIN: PGAgent: Execution JOB - toujours "Failed"

Merci pour la réaction rapide :-)

J'ai essayé sans "Host Agent" (ne change rien)
La colonne output ne contient simplement rien, pas de messages particuliers (sauf à mes tout premiers essais ou l'authentification échouait).

Par pure curiosité, j'ai remplacé mon SQL par la suivant:
SELECT 'HELLO';

Mais il n'y a toujours rien qui apparait dans la colonne output.
Pourtant ce SQL est valide... et la tâche (la seule du job) devrait retourner un résultat.
La question que je me pose: manque t'il quelque-chose à mon SQL?

Toujours ouvert aux suggestions...

Hors ligne

#4 20/09/2012 12:53:14

rjuju
Administrateur

Re : WIN: PGAgent: Execution JOB - toujours "Failed"

C'est bizarre, en cas d'erreur la colonne output devrait contenir un message.

Par sécurité, essayez

SELECT jsloutput from pgagent.pga_jobsteplog WHERE jslstatus != 's' AND jslouput != '' ORDER BY jslstart DESC;

Sinon, peut-être y a-t-il des informations dans les log de postgres.

Hors ligne

#5 20/09/2012 13:34:38

dmeurisse
Membre

Re : WIN: PGAgent: Execution JOB - toujours "Failed"

La liste contient plein de jsloutput vide, rien avec mes essais récents (commande SQL).
Par contre, je vois le texte d'erreur une fois que fait un export (ou copier coller de la cellule apparemment vide de pgAdmin vers notepad).

L'idéal serait d'obtenir les outputs correspondants à mes essais "Run Now". Ceux qui sont listés ci-dessous ne concerne que les tâches programmées.
J'ai aussi noté quelque-chose d'interessant... mais je fais un autre post juste après celui-ci.

"
C:\Program Files (x86)\pgAgent\bin>"c:\Program Files\PostgreSQL\9.1\bin\pg_dump.exe" --no-password --host localhost --port 5432 --username "postgres" --role "postgres"  --format tar --blobs --encoding UTF8 --oids --verbose --file "d:\GGBackup\Serveur\StockProd.backup" "stockprod"
pg_dump: [programme d'archivage (db)] la connexion à la base de données « stockprod » a échoué : fe_sendauth: no password supplied
pg_dump: *** interrompu du fait d'erreurs
"

Hors ligne

#6 20/09/2012 13:38:43

dmeurisse
Membre

Re : WIN: PGAgent: Execution JOB - toujours "Failed"

Dans les statistiques d'exécutions, tous les essais "Run Now" sont a "failed".
Pourtant la colonne Result affiche 1 (normal, la commande est... Select 'hello') et pour les tâches plus anciennes la colonne Result contient "12" (normal, je faisait un select blblbla LIMIT 12).
Donc le SQL fonctionne bien... mais pourquoi donc ce job avec un seul step SQL se termine en failed?

Postscriptum:
Merci rjuju pour la requête dans jsloutput... ce sera utile!

Hors ligne

#7 20/09/2012 15:05:42

rjuju
Administrateur

Re : WIN: PGAgent: Execution JOB - toujours "Failed"

Vous pouvez retailler la hauteur des lignes dans pgAdmin pour voir le contenu en cas de texte sur plusieurs lignes.

Pour ne filtrer que votre job, vous pouvez faire :

SELECT jsloutput
FROM pgagent.pga_job j
JOIN pgagent.pga_jobstep js ON jstjobid = jobid
JOIN pgagent.pga_jobsteplog jsl ON jsljstid = jstid
WHERE jobname = 'Test'

Pour l'erreur de sauvegarde, il faut soit fournir un mot de passe, soit passer en trust la connexion.

Sinon, est-ce le job et/ou le(s) step qui sont en erreur ?

Hors ligne

#8 20/09/2012 15:51:33

dmeurisse
Membre

Re : WIN: PGAgent: Execution JOB - toujours "Failed"

Fort de la constatations du "failed" reporté abusivement, je me suis lancé dans la mise en place du backup avec pg_dump.
Cette tâche est configure et produit le fichier backup... même si le job de backup retourne "failed" (comme pour le job SQL évoqué plus haut).
J'ai d'ailleurs utilisé ton SQL pour pêcher l'output du JOB de backup.
"
C:\Windows\system32>"c:\Program Files\PostgreSQL\9.1\bin\pg_dump.exe" --no-password --host localhost --port 5432 --username "postgres" --role "postgres"  --format tar --blobs --encoding UTF8 --oids --verbose --file "d:\GGBackup\Serveur\StockProd.backup" "stockprod"
pg_dump: lecture des schémas
pg_dump: lecture des tables utilisateur
pg_dump: lecture des extensions
pg_dump: lecture des fonctions utilisate
....
"

Je ne m'explique pas cette persistance à retourner Failed mais le plus important dans ce premier temps c'est que le Job fonctionne!

Merci rjuju, c'est ton aide sur jsloutput qui m'a mis la puce à l'oreille (pgAgent qui retourne Failed même lorsque cela fonctionne :-/ ).

Si quelqu'un a une suggestion pour le "Failed" même lorsque le Step est OK, je suis ouvert aux essais.

Hors ligne

Pied de page des forums