2016-10-13 4 views
0

Amis! Nous avons beaucoup de bases de données primaires avec leurs bases de données de secours physiques dans les configurations Data Guard sur les serveurs. Chaque base de données primaire sur un seul serveur et chaque veille physique sur un seul serveur. Dans EM12c, nous avons configuré des tâches de planificateur pour la sauvegarde de nos bases de données primaires. Malheureusement, lorsque le serveur est très occupé, l'Agent suspend l'exécution de la sauvegarde et nous n'avons pas de sauvegarde en fonction du planning. Par conséquent, nous avons désactivé nos tâches de sauvegarde à partir de EM12c et souhaitons effectuer des sauvegardes sur la mise en veille physique à l'aide de la procédure DBMS_SCHEDULER.CREATE_JOB. Comme le mode veille physique est la base de données en lecture seule et la copie par bloc de la base de données primaire, je dois créer un travail de planification sur le serveur principal et l'appliquer en mode veille. Donc, la question est: Est-ce possible? Et si, oui - comment réaliser ceci dans le script ??Backup Oracle Physical Standby via le travail DBMS_SCHEDULER

Quelque chose comme ceci:

S'il est impossible, quelle solution est la meilleure pour résoudre cette tâche? Existe-t-il un moyen de résoudre ce problème sans créer une tâche périodique avec script unique sur chaque serveur? Est-il possible d'utiliser un script global à partir de la base de données du catalogue de récupération? Kris a déclaré que je ne peux pas exécuter des tâches planifiées à partir d'une base de données de secours physique. Donc, je vais programmer mon script Linux avec crontab. Mon script linux est:

#! /usr/bin/bash 

LOG_PATH=/home/oracle/scripts/logs; export LOG_PATH 
TASK_NAME=backup_database_inc0; export TASK_NAME 
CUR_DATE=`date +%Y.%m.%d-%H:%M`; export CUR_DATE 
LOGFILE=$LOG_PATH/$TASK_NAME.$CUR_DATE.log; export LOGFILE 

    rman target/catalog rmancat/<pswd>@rmancat script 'backup_database' log $LOGFILE 

    if [ $? -eq 0 ] 
    then 
     mail -s "$ORACLE_UNQNAME Backup Status: SUCCESS" [email protected]< $LOGFILE 
     exit 0 
    else 
     mail -s "$ORACLE_UNQNAME Backup Status: FAILED" [email protected]< $LOGFILE 
     exit 1 

Je ne veux pas créer un fichier linux sur chaque hôte pour appeler script global de sauvegarde de mon catalogue de récupération. Est-il possible de configurer le planning d'exécution des sauvegardes centralisées sur tous les hôtes? Puis-je configurer ssh d'un hôte à tous les hôtes de base de données et exécuter mon script Linux pour la sauvegarde?

Merci d'avance pour vos réponses.

+0

Les bases de données de secours physiques n'exécutent aucun travail de planificateur. Les scripts RMAN sont généralement programmés à partir du planificateur OS de toute façon ... cependant, vous pouvez stocker et appeler des scripts globaux à partir du catalogue de récupération ... reportez-vous aux docs sur l'utilisation des scripts stockés: https://docs.oracle.com/ base de données/121/BRADV/rcmcatdb.htm # BRADV89669 –

+0

Bonjour, Kris. Merci pour votre réponse. Je comprends que je ne peux pas exécuter des tâches planifiées à partir d'une base de données physique en attente. Je vais programmer mon script Linux avec crontab, et j'ai une nouvelle question ..) Je vais l'écrire dans le corps de la question .. – Sergey

+0

J'ai résolu ma question! Réponds un peu plus tard .. – Sergey

Répondre

0

Je recommande fortement d'utiliser Enterprise Manager pour exécuter des tâches de sauvegarde. EM s'intègre parfaitement au catalogue rman et à chaque instance, de sorte que vous pouvez configurer simplement la commande rman execute global script. Tout le reste est fait par EM.

J'ai le travail prévu pour s'exécuter uniquement sur standbys par le biais du planificateur de travaux EM sans avoir à modifier quoi que ce soit lors d'un basculement.

Je dois juste cascade les travaux. Donc, j'ai une étape de vérification si la cible est en attente et si cette étape est réussie, alors je suis en train de faire une sauvegarde. Si ce n'est pas le cas, l'étape suivante ne fonctionne pas. De cette manière, la surveillance est également intégrée à la surveillance globale de la base de données. Vous n'avez pas à configurer l'erreur catch dans un script shell au niveau du système d'exploitation.