IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration Oracle Discussion :

Création de script de backup


Sujet :

Administration Oracle

  1. #1
    Candidat au Club
    Inscrit en
    Août 2002
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Création de script de backup
    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.

  2. #2
    Membre actif

    Profil pro
    Administrateur de base de données
    Inscrit en
    Septembre 2008
    Messages
    167
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Septembre 2008
    Messages : 167
    Points : 265
    Points
    265
    Par défaut
    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

Discussions similaires

  1. Création d'un script de backup
    Par Knoxink dans le forum VBScript
    Réponses: 1
    Dernier message: 09/10/2009, 20h46
  2. Script de backup
    Par d10g3n dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 21/04/2009, 17h28
  3. Script de Backup FTP
    Par Are-no dans le forum VBScript
    Réponses: 2
    Dernier message: 16/01/2007, 19h04
  4. Script pour backup
    Par IDE dans le forum Administration système
    Réponses: 18
    Dernier message: 01/05/2006, 18h12
  5. [GZip] script de backup compresser un repertoire en gzip
    Par venomelektro dans le forum Bibliothèques et frameworks
    Réponses: 11
    Dernier message: 27/10/2005, 14h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo