Translate

Affichage des articles dont le libellé est media. Afficher tous les articles
Affichage des articles dont le libellé est media. Afficher tous les articles

jeudi 21 mai 2015

Backup size/media ? - RMAN 10g - 11g - 12c

Bonjour

    Je vous laisse ici un petit script qui pourrait s'avérer utile pour déterminer la taille de vos sauvegardes.
Bien sûr si vous passez par RMAN avec un LIST BACKUP vous pouvez l'avoir pour chaque BackupSet mais il va falloir commencer à faire les calculs.

En bref, je me suis créé ce script pour une demande d'inventaire des tailles des sauvegardes que j'avais reçue. 
Pour ce faire, je devais aller valider tous les derniers FULL backup de la dernière semaine de chaque bd chez un client. 

Ce script peut vous sauver pas mal de temps lorsque un Catalog RMAN est utilisé. Je dois publier d'ici peu la version du script sans catalogue.


Je l'ai testé avec plus de 70 bases de données et le résultat semble correct lorsqu'il est comparé avec les tailles montrés par le LIST BACKUP. Cependant, rien ne vous empêche de refaire vos tests :)


J'espère que cela sera vraiment utile pour vous.


SET LINESIZE 450
SET PAGESIZE 1000
COL BACKUP_TYPE             FORMAT A20
COL STATUS                  FORMAT A5
COL SESSION_RECIDSTAMP      FORMAT A20
COL START_TIME              FORMAT A18
COL COMPRESSED              FORMAT A6  HEAD "Compre"
COL CONTROLFILE_INCLUDED    FORMAT A10 HEAD "Inc |Ctrlf"
COL INCREMENTAL_LEVEL       FORMAT 99  HEAD "Inc |Level"
COL OUTPUT_MBYTES           FORMAT 999,999,999,999.99
COL OUTPUT_GBYTES           FORMAT 999,999,999.99
COL MEDIA                   FORMAT A10
BREAK ON SESSION_RECIDSTAMP SKIP 1
COMPUTE SUM LABEL TOTAL OF OUTPUT_MBYTES OUTPUT_GBYTES ON SESSION_RECIDSTAMP
ACCEPT BD PROMPT 'DatabaseName: '

 SELECT TO_CHAR(C.SESSION_RECID)||'-'||TO_CHAR(C.SESSION_STAMP) SESSION_RECIDSTAMP,
        A.DB_KEY,
        A.NAME,
        TO_CHAR(B.START_TIME,'YYYY/MM/DD HH24:MI') START_TIME,
        C.BS_KEY,
        DECODE(B.BACKUP_TYPE,'D','FULL OR LEVEL_0','I','INCREMENTAL','L','ARCHIVES' ) BACKUP_TYPE,
        C.CONTROLFILE_INCLUDED,
        B.INCREMENTAL_LEVEL, B.STATUS, B.BLOCK_SIZE, C.COMPRESSED,
        ROUND(C.OUTPUT_BYTES/1024/1024,2)         OUTPUT_MBYTES,
        ROUND(C.OUTPUT_BYTES/1024/1024/1024,2)     OUTPUT_GBYTES,
        D.MEDIA
   FROM RC_DATABASE A, RC_BACKUP_SET B, RC_BACKUP_SET_DETAILS C, RC_BACKUP_PIECE D
  WHERE A.NAME             = '&BD'        AND
        A.DB_KEY         = B.DB_KEY       AND
        A.DBID           = B.DB_ID        AND
        B.BACKUP_TYPE   IN ('D','I')      AND  
        B.DB_KEY         = C.DB_KEY       AND
        B.INPUT_FILE_SCAN_ONLY = 'NO'     AND
        B.BS_KEY         = C.BS_KEY       AND
        A.DB_KEY        = D.DB_KEY        AND
        B.BS_KEY        = D.BS_KEY
        AND B.START_TIME >= SYSDATE - 7
UNION ALL       
SELECT  TO_CHAR(C.SESSION_RECID)||'-'||TO_CHAR(C.SESSION_STAMP) SESSION_RECIDSTAMP,
        A.DB_KEY, A.NAME,
        TO_CHAR(B.START_TIME,'YYYY/MM/DD HH24:MI') START_TIME,
        B.BS_KEY,
        DECODE(B.BACKUP_TYPE,'D','FULL OR LEVEL_0','I','INCREMENTAL','L','ARCHIVES' ) BACKUP_TYPE,
        '' CONTROLFILE_INCLUDED,
        B.INCREMENTAL_LEVEL, B.STATUS, B.BLOCK_SIZE, '-' COMPRESSED,
        ROUND(C.MBYTES,2) OUTPUT_MBYTES,
        ROUND(C.GBYTES,2) OUTPUT_GBYTES,
        D.MEDIA
   FROM RC_DATABASE A, RC_BACKUP_SET B,
        (SELECT AA.DB_KEY, AA.SESSION_RECID, AA.SESSION_STAMP, AA.BTYPE_KEY BS_KEY, SUM(AA.FILESIZE)/1024/1024 MBYTES, SUM(AA.FILESIZE)/1024/1024/1024 GBYTES
           FROM RC_BACKUP_ARCHIVELOG_DETAILS AA
          WHERE AA.DB_NAME = '&BD'    
        GROUP BY AA.DB_KEY, AA.SESSION_RECID, AA.SESSION_STAMP, AA.BTYPE_KEY
        ) C, RC_BACKUP_PIECE D
  WHERE A.NAME           = '&BD'         AND
        A.DB_KEY         = B.DB_KEY      AND
        A.DBID           = B.DB_ID       AND
        B.BACKUP_TYPE   = 'L'            AND  
        B.DB_KEY         = C.DB_KEY      AND
        B.INPUT_FILE_SCAN_ONLY = 'NO'    AND
        B.BS_KEY         = C.BS_KEY      AND
        A.DB_KEY        = D.DB_KEY       AND
        B.BS_KEY        = D.BS_KEY
        AND B.START_TIME >= SYSDATE - 7
ORDER BY 4, 5 ;



Voici un exemple du résultat, bien sûr j'ai supprimé les données de deux colonnes par sécurité.




NB : 
Avec les catalogues 11g le temps de réponse est bon (moins de 3 sec), pour ceux qui ont toujours une bd 10g, cela c'est plus long (beaucoup plus long, entre 40 et 90 sec.)
Je n'ai pas eu de temps de vérifier la raison de cette différence.


lundi 9 mars 2015

La bonne technique de récupération ( "Recovery" )

Bonjour à tous.

       L'autre jour on m'a posé une question que j'aimerais partager avec vous. On m'a demandé de savoir quelles sont les meilleures techniques de récupération selon la situation.

Voici ce que j'ai peux vous dire  :


  • Media Recovery
    • Si vous avez perdu du matériel, soit les disques ou les datafiles. La meilleure alternative c'est d'utiliser RMAN, mais encore là cela dépendra de la situation.
    • À ne pas confondre avec le Crash Recovery qui se fait tout seul par Oracle lorsque un arrêt non planifié est survenu et au moment de repartir il commence à récupérer ses transactions. 

  • Flashback ou Point-in-time Recovery
    • Si jamais la situation dans laquelle un utilisateur à commis une erreur, comme la suppression de données ou des objets de la base de données ou une mise à jour accidentelle de données.
    • Bien sûr cela dépend de la situation, si quelqu'un a supprimé une table laquelle n'a pas changé depuis un dernier export, probablement cela serait une bonne alternative aussi.
    • Flashback Table
      • En cas des dommages limités à une ou quelques tablesen se servant de l'information contenue dans les UNDO
      • Avec 12c, il y a maintenant un "Recover table", lequel vous donne aussi la possibilité de récupérer  la table comme un fichier "dump" lequel vous pouvez importer ultérieurement avec "impdp".
    • Flashback Database 
      • En cas qu'un modification accidentelle ait été faite sur une grande partie de la bases de données. 
    • Bien sûr il y a d'autres flashback mais chacun aide pour une situation particulière mais cela sera un bon sujet pour une autre publication :)

  • Block Media Recovery
    • Si jamais vous retrouvez quelques blocs de données corrompus. Dans ce cas, effectuer juste la récupération des blocs serait conseillé plutôt que recouvrir la base de données au complet.  


A+