Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

RMAN Skript Ausgabeumleitung

Dieses Thema im Forum "Oracle" wurde erstellt von gurbelunder, 12 März 2013.

  1. gurbelunder

    gurbelunder Datenbank-Guru

    Hallo zusammen,

    ich habe ein kleines Skript gebastelt, dass obsolete Backups im RMAN löschen soll. Damit ich im Nachhinein nachvollziehen kann, welche Backups gelöscht wurden, möchte ich erst den "report obsolete" Befehl aufrufen und diesen in eine Datei umleiten lassen. Wie mache ich das in diesem Fall am günstigsten?

    Hier das Skript:

    Code:
    #!/bin/ksh
     
    export ORACLE_SID=dbtest2
    export ORACLE_HOME=/home/oracle/srv/ora/product/11.2.0/dbtest_2
    export ORACLE_BIN=/home/oracle/srv/ora/product/11.2.0/dbtest_2/bin
    alias RMAN=$ORACLE_BIN/rman
     
    RMAN target / <<EOI
     
        report obsolete;     <--- hier müsste dann ja die Ausgabeumleitung hin, aber ein einfaches " > datei" nimmt er mir hier nicht...
        delete obsolete;
     
        quit
    EOI
    
     
  2. gurbelunder

    gurbelunder Datenbank-Guru

    So, Ausgabeumleitung habe ich jetzt selbst herausgefunden. Nun überlege und suche ich allerdings, wie ich dem Befehl "delete obsolete" automatisch ein YES mitgebe. Hier das Script im neuen Zustand:

    Code:
     
    #!/bin/ksh
     
    export ORACLE_SID=dbtest2
    export ORACLE_HOME=/home/oracle/srv/ora/product/11.2.0/dbtest_2
    export ORACLE_BIN=/home/oracle/srv/ora/product/11.2.0/dbtest_2/bin
    alias RMAN=$ORACLE_BIN/rman
     
    RMAN target / > report_del_obsolete 2>&1 <<EOI
     
        delete expired backup;
        delete obsolete;
        quit
     
    EOI
    
    Danke euch!
    Gruß,
    David
     
  3. gurbelunder

    gurbelunder Datenbank-Guru

    Habs, dank direktem Oracleforum, gefunden. Hier für jeden, der sich daran interessiert:

    Code:
     
    #!/bin/ksh   <----- hier bitte eure jeweilige Shell anpassen
     
    export ORACLE_SID=dbtest2   <----- Hier eure SID eintragen
    export ORACLE_HOME=/home/oracle/srv/ora/product/11.2.0/dbtest_2   <----- Pfad zum $ORACLE_HOME, sollte hier explizit neu definiert werden, da auf keine .profile zugegriffen wird
    export ORACLE_BIN=/home/oracle/srv/ora/product/11.2.0/dbtest_2/bin   <----- Pfad zu $ORACLE_HOME/bin, sodass auf die executable "rman" zugegriffen werden kann
    alias RMAN=$ORACLE_BIN/rman   <----- Ein Sicherheitstick von mir, somit ist innerhalb des Skriptes der Befehl angepasster
     
    RMAN target / > report_del_obsolete 2>&1 <<EOI     <----- Mit rman verbinden (RMAN target /) und die gesamte Ausgabe in dem Block in die Datei report_del_obsolete schreiben (> report_del_obsolete 2>&1)
       
        delete noprompt obsolete;   <----- obsolete Backups löschen, Bestätigung wird nicht benötigt (=> noprompt)
        delete noprompt expired backup;   <----- abgelaufene (expired) Backups löschen, Bestätigung wird nicht benötigt (=> noprompt)
        quit   <----- rman Verbindung beenden
     
    EOI   <--- Befehlsblock beenden
     
    
    Man kann dieses Skript nun per DBMS_SCHEDULER als Job einrichten und nach belieben ablaufen lassen, so wird der Speicherplatz auf dem Backupmedium nicht zu schnell voll. Des Weiteren könnte man über das Linuxtool "mail" sich die report_del_obsolete per Mail zusenden lassen, um diese immer auf dem aktuellen Stand gleich zu besitzen.
     
  4. gurbelunder

    gurbelunder Datenbank-Guru

    Habs sogar noch was weiterbearbeitet ;) :

    Code:
    #!/bin/ksh   #an die eigene Shell anpassen
     
    ###############################################################################
     
    # description:
    # this script deletes all obsolete and expired backups from Oracle RMAN and send a report about that
    # to entered email address
     
    # AUTHOR : xxx
    # VERSION: 0.1
     
    ###############################################################################
     
    # *****************************************************************************
    # declarations
    # *****************************************************************************
     
    export ORACLE_SID=<SID hier eintragen>
    export ORACLE_HOME=<Pfad zu $ORACLE_HOME hier eintragen>
    export ORACLE_BIN=$ORACLE_HOME/bin
    export ORACLE_REPORT=$ORACLE_HOME/reports #Ordner muss erstellt werden!
     
    alias RMAN=$ORACLE_BIN/rman
     
    host=$( /bin/hostname -s )
    mail=<hier Mailadresse eintragen>
     
    # *****************************************************************************
    # functions
    # *****************************************************************************
     
    usage() {   #Eine usage() Funktion sollte in jedem Linuxscript vorhanden sein
        print -u2 "\nusage ${0##*/} with no options\n"
        exit 1
    }
     
    program_arguments_ok() {   #Wird das Skript mit den richtigen (keinen) Parametern aufgerufen???
        [ $# -eq 0 ] || return 1
    }
     
    delete_obsolete_backups() {   # das eigentliche Löschen der Backups
        RMAN target / > $ORACLE_REPORT/report_del_obsolete 2>&1 <<EOI
            delete noprompt obsolete;
            delete noprompt expired backup;
            quit
    EOI
    }
     
    send_report_mail() {    # Email mit dem Report senden
        report=$( cat $ORACLE_REPORT/report_del_obsolete )
        echo "$report" | mail -s "$host: abgelaufene Backups geloescht!" "$mail"
    }
     
    # *****************************************************************************
    # main
    # *****************************************************************************
     
    program_arguments_ok || usage   # Programmaufruf testen, wenn nicht korrekt, dann usage() werfen
     
    delete_obsolete_backups   # Löschen ausführen
     
    send_report_mail   # Email senden
    
    Sollten Fragen zum Skript sein, einfach hier im Thread melden oder PN an mich.

    Ich habe dieses Skript auch auf das erstellen eines Fullbackups und eines inkrementellen Backups angepasst, bei Interesse => Frage an mich ;)

    Gruß,
    David
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden