Général:FAQ JobsOnDemand
Sommaire
[masquer]Généralités
Limites de cette section
Nous proposons ici des exemples courants d'utilisation de la fonctionnalité JobsOnDemand observés et demandés par nos utilisateurs.
Tous les scripts dbSQware peuvent être utilisés par cette fonctionnalité, mais cela n'aura parfois que peu d'intérêt.
Ce que nous allons vous présenter dans ce MODOP sur les JobsOnDemand :
- Des exemples de création,
- Des exemples de planification,
- Le suivi des jobs planifiés,
- La possibilité de les déléguer à des utilisateurs,
Introduction
Les JobsOnDemand permettent de créer des ensembles composés de scripts et de leurs paramètres existants, ensembles dont l'exécution est demandée directement dans SQWareAdmin.
Vous pouvez imaginer toutes sortes de cas d'usages par exemple :
- Un ensemble script/paramètres spécifique et récurant mais non planifiable,
- Un ensemble script/paramètres qui sera exécuter 1 fois à un moment bien précis et donc planifiable,
- etc ...
Cela permet également d'avoir des JobsOnDemand qui peuvent être exécutés par des utilisateurs qui n'ont pas accès aux scripts dbSQWare en particulier et, ou à la machine dbSQWare en général.
Vous trouverez le menu dédié aux JobsOnDemand (Menu 2) dans chaque moteur et bien sûr dans la vue TOUS SGBD.
Lors de la création d'un JobsOnDemand utilisant un script dbSQWare cela ne fonctionnera que si les paramètres spécifiés sont disponibles pour ce script.
Vous pouvez vérfier cela en ligne de commande dans l'aide en ligne et, ou sur ce wiki sur la page dédié à ce script.
Par exemple pour le script sqwora_Expdp.ksh :
- avec l'aide en ligne, option -h
oracle@srvORAexample:~/SQWareProduction/oracle/bin (ORAEXAMPLE) $ ./sqwora_Expdp.ksh -h Sourcing sqwora_Global.lib v2025.02 SQWareProduction for Oracle (dbSQWare) ... Usage: sqwora_Expdp.ksh [-h] -I <instance> -T <ExpType> [+ options] DESCRIPTION sqwora_Expdp.ksh expdp script SUPPORT Oracle supported versions: 10gR2 <= v <= 21c PARAMETERS -I instance : Target instance to expdp. -T type_exp : Type of expdp (full,schema,structure,parfile,tables). OPTIONS -h : Display the full usage. -s : Display samples of usage. -HI nb_gen : Number of generations to keep (by default: 1). -P Nb threads : Number of threads in parallel (by default 2). -FU owner : Schema to expdp. -Pdb pdb_name : pdb_name for multitenant. -PAR parfile : Parfile to use. -OPT option : Option to add to the expdp command. -ZIP extension : Compressor extension gz,bz2,Z,none (by default: none). -FRT return_code : Force return code value on error. -AddMail email : Email address to add at 'dba@domaine.com'. -SendReport : Send execution log report. -NoConsistent : Remove 'flashback_time=systimestamp' option. -RD directory : Expdp directory (par defaut /orabackup/${ORACLE_SID}/expdp). -PutInf u@h:path : user@host:path to push dump to distant host. -Dist : For distant connection to database (change $gvsqw_DbaUser to $gvsqw_DistDbaUser@$ORACLE_SID ). -Sysdba : '/ as sysdba' connection instead of $gvsqw_DbaUser. -NoMail : Deactivate sendmail on error to dba@domaine.com (by default, send on error). -Locale locale : Force Locale for help display (fr,en). -Exec : Execute expdp (by default, display generated commands).
- Ou alors sur ce wiki sur la page dédiée sqwora_Expdp.ksh
Dépendance
Les JobsOnDemand nécessitent que le service sqwScheduler de SQWareCentral soit actif.
Vous pouvez vérifier son exécution :
dbsqware@srvdbsqware:~ (SQWareCentral) $ sqwScheduler status status of sqwScheduler no process 'sqwScheduler' started !
Et le démarrer si nécessaire :
dbsqware@srvdbsqware:~ (SQWareCentral) $ sqwScheduler start startup of sqwScheduler dbsqware 3792005 3791870 8 11:21 pts/2 00:00:00 /bin/bash ./sqwScheduler process 'sqwScheduler' started ! dbsqware@srvdbsqware:~ (SQWareCentral) $ sqwScheduler status status of sqwScheduler dbsqware 3792005 1 0 11:21 pts/2 00:00:00 /bin/bash ./sqwScheduler Load new parameters 2025-04-02 11:21:50 2025-04-02 11:21:50 Actual parameters for sqwScheduler 2025-04-02 11:21:50 gvsqw_SchedulerCheckInterval=2m gvsqw_SchedulerAdvanceTimeTreshold=4m 2025-04-02 11:21:50 Actual parameters for sqwScheduler 2025-04-02 11:21:50 gvsqw_SchedulerCheckInterval=120 gvsqw_SchedulerAdvanceTimeTreshold=240 2025-04-02 11:22:18 Actual parameters for sqwScheduler 2025-04-02 11:22:18 gvsqw_SchedulerCheckInterval=120 gvsqw_SchedulerAdvanceTimeTreshold=240
Création de JobsOnDemand
Dans tous les cas
Pour Ajouter un nouveau JobsOnDemand il faut aller sur l'interface web de dbSQWare soit dans ALL RDBMS, soit le moteur concerné par le job que vous voulez créer (menu 1) OnDemandJobs (menu 2) JobsParam (menu 3).
En haut à droite vous cliquez sur le bouton "Add".
Depuis All RDBMS :
Depuis un moteur par exemple Oracle :
Le formulaire suivant s'ouvre :
Les paramètres obligatoires sont :
- DbAlias, l'instance sur laquelle le script va être exécuté,
- Si vous l'avez lancé depuis ALL RDBMS vous verrez toutes les instances de SQWareRepository,
- Si vous l'avez lancé depuis un moteur (par exemple Oracle) vous ne verrez que les instances de ce moteur présentes dans SQWareRepository,
- Job Name, seulement le nom du job pour les différencier,
- User name, utilisateur qui va lancer le script
- Host Name, l'hôte sur lequel le script sera exécuté,
- Script, quel est le script que le JobsOnDemand devra utiliser, il faut inclure le path.
Les paramètres optionnels sont :
- Parameters, tous les scripts n'ont pas forcément de paramètres cela dépend du script,
- Description, une brève description du pourquoi du Job.
Cas de Job avec des paramètres "durcis"
Lorsque vous créez un job vous devez au moins saisir ses paramètres obligatoires, dans le cas d'un job "durcis" tous les paramètres que le script va prendre en compte sont explicites.
Si on reprend le script sqwora_Expdp.ksh on a vu précédemment que les paramètres obligatoires sont -I pour l'instance et -T pour le type d'export (selon le type d'export d'autres paramètres peuvent s'ajouter, par exemple si c'est un export basé sur un parfile, il faudra spécifier le -PAR avec comme valeur le chemin pour trouver le parfile).
Par exemple : si l'on veut créer un Job sur l'instance ORAEXAMPLE présente sur l'hôte srvORAexample pour faire un expdp de type full alors on va remplir le formulaire de cette façon :
A noter :
- On utilise la variable d'environnement $gvsqw_OraBin/ on aurait pu saisir le chemin complet : /home/oracle/SQWareProduction/oracle/bin/
- Dans Parameters on a ajouté le -Exec pour que le script s'exécute, sinon il se lance en DryRun.
Cas de Job avec des paramètres "souples"
Lorsque vous créez un job vous devez au moins saisir ses paramètres obligatoires, dans le cas d'un job "souples" tout ou partie des paramètres que le script va prendre en compte sont saisis au moment du lancement du job.
On remplacera la valeur des paramètres par une variable locale encadrée par < et >, par convention le premier sera <Arg1>, le second <Arg2>, etc... .
N'hésitez pas à nommer vos variables de façon explicite, par exemple -I <InstanceCible>...
Example avec sqwora_Expdp.ksh
Si on reprend le script sqwora_Expdp.ksh on a vu précédemment que les paramétrées obligatoires sont -I pour l'instance et -T pour le type d'export (selon le type d'export d'autres paramètres peuvent s'ajouter, par exemple si c'est un export basé sur un parfile, il faudra spécifier le -PAR avec le chemin pour trouver le parfile).
Par exemple : on peut créer un Job sur l'instance ORAEXAMPLE présente sur l'hôte srvORAexample pour faire un expdp de type schema en laissant le paramétrage du schema être saisi lors du lancement, alors on va remplir le formulaire de cette façon :
A noter :
- Ici on propose 1 seul argument "souple", mais ce n'est limité qu'au nombre de paramètres proposés par le Job
Example avec sqwora_SchemaRefreshExpdp.ksh
Si on prend maintenant un script qui a plus de paramètres obligatoires par exemple sqwora_SchemaRefreshExpdp.ksh. On vérifie son fonctionnement :
oracle@srvORAexample:~/SQWareProduction/oracle/bin (ORAEXAMPLE) $ ./sqwora_SchemaRefreshExpdp.ksh -h Sourcing sqwora_Global.lib v2025.02 SQWareProduction for Oracle (dbSQWare) ... Usage: sqwora_SchemaRefreshExpdp.ksh [-h] -I <instance> -IS <instance> -US <hostname> -O <owner> [+ options] DESCRIPTION sqwora_SchemaRefreshExpdp.ksh refresh schema(s) by expdp/impdp SUPPORT Oracle supported versions: 10gR2 <= v <= 21c PARAMETERS -I instance : Target instance to reload schema(s). -IS instance : Instance source of the export. -US hostname : Source hostname. -O owner(s) : Owner(s) of schema(s) to reload. OPTIONS -h : Display the full usage. -s : Display samples of usage. -P Nb threads : Number of threads in parallel (by default 2). -F filename : File with list of tables to keep (save/restore). -TU owner(s) : To user, target schema(s) to reload. -RD directory : Directory to copy dump file on local host (by default /orabackup/${ORACLE_SID}/expdp). -RDS directory : Directory to write dump file on distant host (by default /orabackup/${lvsqw_InstanceSource}/expdp). -Pdb pdb_name : pdb_name for multitenant (target instance). -PdbS pdb_name : pdb_name for multitenant (source instance). -OptExp option : Option to add to the expdp command. -OptImp option : Option to add to the impdp command. -FRT code : Force return code value on error. -UUS username : Source unix user(by default, same as target). -NoConsistent : Remove 'flashback_time=systimestamp' option. -LockKill : Lock users accounts and kill sessions (target schema(s) to reload). -Before scriptname : Script to execute before reload and before drop of objects. -After scriptname : Script to execute after reload. -AddMail email : Email address to add at 'dba@domaine.com'. -SendReport : Send execution log report. -NoMail : Deactivate sendmail on error to dba@domaine.com (by default, send on error). -Locale locale : Force Locale for help display (fr,en). -Exec : Execute the reload (by default, display generated commands).
Cette fois on veut créer un Job sur l'instance ORAEXAMPLE présente sur l'hôte srvORAexample pour faire un Schemarefresh mais sans préciser à l'avance ni l'instance de destination (-I <Arg1>), ni l'instance source (-IS <Arg2>), ni le serveur avec l'instance source (-US <Arg3>), ni le schema (-O <Arg4>), alors on va remplir le formulaire de cette façon :
A noter :
- On a ajouter le paramètre -LockKill de façon explicite pour que le schéma à recharger soit lock et que les sessions soient fermées,
- Lorsque vous avez de nombreux paramètres et, ou que le job est utilisé par d'autres utilisateurs il est préférable de nommer vos valeurs de paramètres par exemple -I <Arg1> -IS <Arg2> -US <Arg3> -O <Arg4> -LockKill -Exec peut être écrit : -I <InstanceCible> -IS <InstanceSource> -US <HoteSource> -O <Schema> -LockKill -Exec,
- On a sélectionné l'instance cible dès le début du formulaire, notez que le -I <Arg1> ou -I <InstanceCible> n'a d'intérêt que pour la démonstration en production on aurait saisi cela en paramètre durci : -I ORAEXAMPLE -IS <InstanceSource> -US <HoteSource> -O <Schema> -LockKill -Exec.
Lancement de JobsOnDemand
Une fois que le job est créé, vous pouvez cliquer sur le bouton "run" pour le lancer, dans l'onglet JobsParam (Menu 3) de OnDemandJobs (Menu 2) :
Cela vous ouvre le formulaire de lancement :
Lancer un script avec des paramètres "souples"
On reprend l'exemple précédent si on veut lancer ce job il faut maintenant préciser la valeur des paramètres suivant :
- l'instance de destination (-I <Arg1>),
- l'instance source (-IS <Arg2>),
- le serveur avec l'instance source (-US <Arg3>),
- et le schema (-O <Arg4>).
Cette fois l'instance de destination sera ORAEXAMPLE, l'instance source ORAPROD, l'hôte source srvORAproduction et le schéma à refresh sera MYSCHEMA, alors on doit remplir le champ option de cette façon :
Lancement immédiat
Si vous voulez exécuter le script tout de suite vous pouvez sélectionner le bouton radio "immediate" (valeur par défaut), puis cliquer sur "Validate" :
A noter :
- Si votre JobsOnDemand a des paramètres souples, il faut penser à remplir le champ option, sinon son contenu est inutilisé,
- Seul le champ description est obligatoire et permet de différencier chaque exécution d'un même JobsOnDemand .
Lancement différé
Si vous voulez planifier l'exécution du script vous devez sélectionner le bouton radio "scheduled" , puis vous devez remplir le le champ "Execution Date" (existe et est obligatoire si et seulement si le bouton "scheduled" est actif) :
Pour remplir le le champ "Execution Date" vous pouvez :
- saisir votre date et heure directement dans le champ,
- cliquer sur le petit bouton en forme de calendrier dans la partie droite du champ.
Cette seconde option ouvre un outil de sélection de date et heure :
Une fois la date et l'heure précisées vous pouvez enregistrer le job avec "Validate"
Suivi de la planification et de l'exécution des JobsOnDemand
Affichage du suivi des JobsOnDemand
Après avoir validé la planification d'un job vous êtes automatiquement redirigé vers l'onglet JobsSchedule (Menu 3) :
Vous pouvez voir l'ensemble des jobs lancés, en cours, et, ou planifiés (par défaut seulement les 5 derniers jours), ainsi que le code retour de chaque exécution dans la colonne status.
En complément des journaux générés par l'exécution du script lancé par le job , l'exécution du job génère une log dans ~/admin/SQWareCentral/logs/ExecOnDemandJob. Vous pouvez accéder directement à cette log directement dans le tableau AllOnDemandJobs (Menu 3)
Bein sûr si vous voulez cela est accessible pour
dbsqware@srvdbsqware:~ (SQWareCentral) $ log total 7424 [.résultats ommis.] drwxrws--- 2 dbsqware dba 4096 Apr 2 11:47 ExecOnDemandJob [.résultats ommis.] dbsqware@srvdbsqware:~ (SQWareCentral) $ cd ExecOnDemandJob dbsqware@srvdbsqware04:~/admin/SQWareCentral/logs/ExecOnDemandJob (SQWareCentral) $ ll total 24 drwxrws--- 2 dbsqware dba 4096 Apr 2 11:47 . drwxr-xr-x 33 dbsqware dba 4096 Mar 31 17:04 .. -rw-r--r-- 1 dbsqware dba 2975 Apr 2 11:41 ExecOnDemandJob_20250402_114145_3792922.log -rw-r--r-- 1 dbsqware dba 2889 Apr 2 11:41 ExecOnDemandJob_20250402_114145_3792922.mail.log -rw-r--r-- 1 dbsqware dba 2975 Apr 2 11:47 ExecOnDemandJob_20250402_114702_3817644.log -rw-r--r-- 1 dbsqware dba 2889 Apr 2 11:47 ExecOnDemandJob_20250402_114702_3817644.mail.log -rwxrwxr-x 1 dbsqware dba 0 Apr 2 11:47 .sqw
Codes retours possibles
- -1 Job prêt mais non démarré
- -5 Job mis en file d'attente par le service sqwScheduler
- -10 Connexion SSH réussie, en attente de l'échéance planifié
- -20 Job en cours
- -30 Job terminé mais sans code retour ! (par exemple un script de provenant pas de dbSQWare)
- 0 Job terminé sans aucune erreur
- 12 Job terminé mais avec erreur(s)
- 31 Erreur pendant la connexion SSH
- 51 Connexion SSH échouée.
Délégation d'exécution
Nous partirons du principe que le groupe concerné existe et que des utilisateurs sont dedans.
Si besoin vous avez une FAQ pour la gestion et la création des utilisateurs Général:FAQ_GestionUtilisateurs.
Par défaut les nouveaux groupes n'ont pas accès au menu des JobsOnDemand.
Pour ajouter cet accès à un groupe : il faut aller sur l'interface web de dbsqware dans Administration (menu 1) MenuManagement (menu 2) Menu2Privileges (menu 3).
- Dans la colonne Groupe Name tapez le nom du groupe auquel vous voulez donner des droits, dans notre exemple ce sera TEST_JOB.
- Dans la colonne Menu2 Name tapez OnDemandJobs.
- Vous pouvez cliquer sur le symbole de crayon pour éditer le ou les Menu2 OnDemandJobs de votre choix :
- pour ALL RDBMS,
- pour un seul moteur, par exemple Oracle,
- pour plusieurs moteurs,
- etc... .
Cela vous ouvre une fenêtre avec des cases à cocher, cocher les cases OnDemandJobs.
La fenêtre Administration (menu 1) MenuManagement (menu 2) Menu2Privileges (menu 3) avec les filtres de l'exemple :
La fenêtre avec les cases à cocher :
Donner les droits à un groupe
Vous pouvez cliquer directement sur l'icône en forme de portrait (Grant) :
Dans le formulaire ajouter le groupe voulu, dans notre exemple c'est toujours TEST_JOB :
Maintenant cet utilisateur pourra lancer ce job et pas l'éditer, voilà ce qu'il voit dans ce menu :