Bonjour
Pouvez-vous m'aider à trouver un tutoriel afin de créer un script de backup automatique avec envoi d'un email d'information sur l'état de l'exécution du script.
Merci.
Bonjour
Pouvez-vous m'aider à trouver un tutoriel afin de créer un script de backup automatique avec envoi d'un email d'information sur l'état de l'exécution du script.
Merci.
voila mon script a adapter a tes besoins
la commande d'envoi des mail utilisé est "mutt" je crois que c'est spécifique a HPUX ou a notre site en general on utilise "sendmail"
ce script est surement trop compliqué et pleins de default
si vous avez des commentaires n'hésiter pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171 #!/bin/sh LIST_BASE="BUR102 SUR102 MOA102 TDUN102 CRDV102 CRRE102" # listes des bases a sauvegarder MAILDEST="_Info_DBA@truc.fr" #destinataire des mail de log if [ $1 ] ;then LIST_BASE=$1;fi; #sauvegarde du SID passe en parametre # GetRes REQ SID #fonction qui affiche le resultat de la requete passee en parametre # GetRes() { REQ=$1 ORACLE_SID=$2 RES=`sqlplus -s "/ as sysdba" <<FINSQL WHENEVER SQLERROR EXIT 1 set head off pages 0 feedback off ${REQ} exit 0 FINSQL` STATUS=$? echo ${RES} return $STATUS } #procedure executant une sauvegarde RMAN full # parametere # ORACLE_SID # doit etre lance en par un user pouvant faire une connexion / as sysdba rmanfull() { export ORACLE_SID=$1 RMANCONNECT="rman/password@repositoryrman" #connection au repository RMAN #definition du format de date pour que la date soit plus claire dans les log RMAN export NLS_DATE_FORMAT='Mon DD YYYY HH24:MI:SS' TMPFIC=tmpx.$$ #verification si la base est demarree $ORACLE_HOME/bin/rman TARGET / <<FINRMAN>${TMPFIC} exit; FINRMAN grep -q "connected to target database (not started)" ${TMPFIC} if [ $? = 0 ] #si la base n'est pas demarree on la demarre en mode mount et on l'arrete apres la sauvegarde then echo "la base $ORACLE_SID est arrete" PREBACKUP="startup mount;" POSTBACKUP="shutdown immediate;" else PREBACKUP="" POSTBACKUP="" fi echo nettoyage avant sauvegarde $ORACLE_HOME/bin/rman TARGET / CATALOG ${RMANCONNECT}<<FINRMAN #divers crosscheck pour eviter les problemes si nettoyage manuel crosscheck backup; crosscheck archivelog all; delete noprompt expired backup; delete noprompt expired archivelog all; delete noprompt obsolete; exit; FINRMAN #definition de l'emplacement du log DB_RECOVERY=`GetRes "select value from v\\$parameter where name like 'db_recovery_file_dest';" ${ORACLE_SID}` DATE=`date +%Y%m%d%H%M%S` DATE2=`date +%Y/%m/%d-%H:%M:%S` RMANLOG="${DB_RECOVERY}/${ORACLE_SID}/log/rman_full_${ORACLE_SID}_${DATE}.log" if ! [ -d $(dirname $RMANLOG) ] ; then mkdir -p $(dirname $RMANLOG);fi; RMANLOGGENERAL="${DB_RECOVERY}/log/rman_log_general.csv" if ! [ -d $(dirname $RMANLOGGENERAL) ] ; then mkdir -p $(dirname $RMANLOGGENERAL);fi; if ! [ -f $RMANLOGGENERAL ] ; then echo "INSTANCE;Status de la sauvegarde;DATE;SERVEUR;Emplacement du log">$RMANLOGGENERAL;fi ; TAG="TAG${DATE}${ORACLE_SID}" #gestion des log rman find ${DB_RECOVERY}/${ORACLE_SID}/log -name 'rman_full_*.log' -mtime +90 -exec rm -f {} \; echo sauvegarde du init${ORACLE_SID}.ora |tee -a ${RMANLOG} sqlplus / as sysdba<<FINSQL>>${RMANLOG} set echo on create pfile='${DB_RECOVERY}/${ORACLE_SID}/init${ORACLE_SID}.ora' from spfile; FINSQL echo Sauvegarde RMAN de $ORACLE_SID $ORACLE_HOME/bin/rman log="${RMANLOG}" <<FINRMAN set echo on; connect target / ${PREBACKUP} #demarrage de la base .... # Configuration de redundancy configure retention policy to redundancy 1; CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO COMPRESSED BACKUPSET PARALLELISM 2; CONFIGURE CONTROLFILE AUTOBACKUP ON; #sauvegarde full backup database plus archivelog delete input tag '${TAG}'; #on efface tout ce qui a deja ete sauvegarde delete noprompt obsolete; ${POSTBACKUP} exit; FINRMAN } #procedure de synchronisation du catalog RMAN # parametere # ORACLE_SID # doit etre lance en par un user pouvant faire une connexion / as sysdba #doit etre lance apres rmanfull pour que le rmanlog soit defini rmanRESYNC () { ORACLE_SID=$1 echo "test connexion et inscription au catalog rman" $ORACLE_HOME/bin/rman TARGET / CATALOG ${RMANCONNECT} log=${TMPFIC}<<FINRMAN set echo on; #inscription au catalog REGISTER DATABASE; #syncronisation du catalog avec le control file RESYNC CATALOG; exit; FINRMAN grep -q "connected to recovery catalog database" ${TMPFIC} if [ $? = 0 ] #si le catalog marche on l'utilise then "echo connexion au catalog RMAN ${RMANCONNECT}">>${RMANLOG}; else echo "pas de connexion au catalog RMAN ${RMANCONNECT}">>${RMANLOG}; fi } rm ${TMPFIC} save () { ORACLE_SID=$1 rmanfull $ORACLE_SID if [ $? = 0 ] then rmanRESYNC $ORACLE_SID SAV_STATUS="Reussie" RETURNVALUE=0 else rmanRESYNC $ORACLE_SID SAV_STATUS="Echec" RETURNVALUE=-1000 fi MSGTXT="Sauvegarde de l instance $ORACLE_SID : ${SAV_STATUS} $(date +%Y/%m/%d-%H:%M:%S)" MSGOBJ="${SAV_STATUS} : $(basename $0) $ORACLE_SID sur $(uname -n)" MSGLOG="${ORACLE_SID};${SAV_STATUS};${DATE2};`uname -n`;${RMANLOG}" echo "${MSGTXT}">>${RMANLOG} echo "${MSGTXT}"| /usr/local/bin/mutt -s "${MSGOBJ}" "${MAILDEST}" -a "${RMANLOG}" echo "${MSGLOG}">>${RMANLOGGENERAL} echo "copie du log general par samba" ux2dos ${RMANLOGGENERAL}>${TMPFIC} #parametre pour smbclient DIR_REMOTE='\oi_dba\Suivi_sauvegarde\' FIC_LOG_MOD_REMOTE=${DIR_REMOTE}$(basename ${RMANLOGGENERAL}) SERVICENAME="//hator/users" USERSAMBA="admindba%admindba" /opt/samba/bin/smbclient ${SERVICENAME} -U ${USERSAMBA} -c "mkdir ${DIR_REMOTE};put ${TMPFIC} ${FIC_LOG_MOD_REMOTE};e xit" rm ${TMPFIC} echo fin $0 de $ORACLE_SID return ${RETURNVALUE} } # Lancement des sauvegardes for ORACLE_SID in ${LIST_BASE} do save $ORACLE_SID & done
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager