Berthou.comJava, DB2, Websphere, apache, ma vision de l’informatique… | |
Backup de DB2 sous WindowsUne base de données c'est très bien mais il est toujours souhaitable de réaliser très régulièrement des sauvegardes de ses données. Pour cela IBM/DB2 offre une interface graphique parfaitement fonctionnelle dans le "Control-Center" mais si on désire inclure cette sauvegarde dans une procédure plus importante il faut revenir au script. Ce petit article vous explique comment réaliser ce fichier de commandes windows (.bat ou .cmd) en essayant de rester simple et relativement adaptable. Nous considérons que la sauvegarde doit s'effectuer bases fermées ( il est possible de le faire en mode "online" mais cela implique d'inclure les fichiers de log) et nous utilisons la base "sample". Le but de ces scripts étant de :
Les commandes DB2Pour exécuter en script une commande DB2 on doit initialiser son contexte de travail. Sous Windows cela se fait par la commande db2cmd alors que sous Unix/Linux cela se fait par l'exécution du db2profile. Les commandes QUIESCE et UNQUIESCE permettent d'effectuer la "fermeture" et "l'ouverture" de la base de données et la commande BACKUP DATABASE effectuera la sauvegarde. Fichier sample_backup.db2CONNECT TO sample ; QUIESCE DATABASE IMMEDIATE FORCE CONNECTIONS; CONNECT RESET; BACKUP DATABASE sample TO "C:\db2_backup" WITH 2 BUFFERS BUFFER 1024 PARALLELISM 1 WITHOUT PROMPTING; CONNECT TO sample; UNQUIESCE DATABASE; CONNECT RESET; TERMINATE ; CONNECT TO sample USER monuser USING monpassword; PRUNE HISTORY 20071021 AND DELETE; Le fichier de scriptJe ne pense pas être un spécialiste du langage script de windows (dos) et à mon avis le calcul de la date delmax de ce script peut être amélioré. Je proposerai prochainement un script équivalent pour les environnements Unix/Linux (qui est tout de même plus simple).@echo off REM +----------------------------------------------------------+ REM + Script de sauvegarde DB2 avec gestion de delete + REM +----------------------------------------------------------+ REM + Ver. + Auteur + Remarques + REM +------+----------+----------------------------------------+ REM + 1.00 + RBerthou + + REM +----------------------------------------------------------+ REM +-- Attention les numeriques de la forme 01 .. 0999 sont -+ REM +-- considérés comme des nb octal donc prb de calcul -+ REM +-- d ou l ajout du 1 devant certaines variables -+ REM +- Attention la date est au considéré au format français -+ REM +- Format de la date "dd/mm/yyyy" -+ REM +- a modifier suivant vos paramètres -+ for /f "tokens=1-4 delims=/-\ " %%a in ('date /t') do ( set mjour=%%a set mmois=%%b set mannee=%%c ) set mydate=%mannee%%mmois%%mjour% set nbhisto=07 if /I "%mjour%" GTR "%nbhisto%" ( set /a mjour=1%mjour%-1%nbhisto% ) else ( if /I "%mmois%" == "01" ( set /a mannee=%mannee%-1 set /a mmois=12 ) else ( set /a mmois=%mmois%-1 ) set /a mjour=1%mjour%+30-1%nbhisto% ) if %mmois% LSS 10 ( set mmois=0%mmois%) if %mjour% LSS 10 ( set mjour=0%mjour%) set delmax=%mannee%%mmois%%mjour% REM +- Fin initialisation -+ set destdir=c:/db2_backup set db2backupdir=%destdir%/SAMPLE.0/DB2/NODE0000/CATN0000 echo "DB2 Backup du %mydate%" db2cmd /c /w /i db2 -v -t -f%destdir%/sample_backup.db2 -z%destdir%/sample_backup.log if not %errorlevel% == 0 ( echo "ERROR: Backup Error backupDB2, RC=%errorlevel% " goto fin ) echo "Compression du Backup DB2" del /S %destdir%/db2_zip.jar jar.exe -cvf %destdir%/db2_zip.jar %db2backupdir%/%mydate% if not %errorlevel% == 0 ( echo "ERROR: Backup Error zipDB2, RC=%errorlevel% " goto fin ) echo "DB2 delete catclogue Backup précédent le %delmax%" db2cmd /c /w /i db2 -v CONNECT TO sample db2cmd /c /w /i db2 -v prune history %delmax% and delete db2cmd /c /w /i db2 -v CONNECT RESET db2cmd /c /w /i db2 -v TERMINATE if not %errorlevel% == 0 ( echo "ERROR: Backup Error, deleteDB2 RC=%errorlevel% " goto fin ) echo "DB2 delete fichier Backup précédent le %delmax%" for /f "skip=%nbhisto%" %%i in ('dir %db2backupdir% /b /o:-n') do ( rmdir /Q/S %%i if not %errorlevel% == 0 ( echo "ERROR: Backup Error, deleteHisto RC=%errorlevel% " ) ) :fin if %errorlevel% == 0 ( echo " Fin de la sauvegarde du %mydate% " ) else ( echo " Erreur de la sauvegarde du %mydate% " ) Remarques
Voir aussiIntroduction to DB2 UDB Scripting on Windows Exemple de script batch windows |
CatégoriesMots-clefsArticles récentsCommentaires récents
|
|
| |
Ajouter une réponse