Benutzer-Werkzeuge

Webseiten-Werkzeuge


dba:rman_entpacken

RMAN Backups manuell entpacken und lesen

Mit dem DBMS_BACKUP_RESTORE lassen sich RMAN Sicherung manuell lesen und entpacken.
Sehr hilfreich beim Restore Scenario „Keinerlei Controlfile mehr, da autobackup vergessen!“.

1. Beispiel: Archivelogs lesen

readarchivelog.sql
DECLARE
   v_device   VARCHAR2 (50);
   v_done      BOOLEAN;
BEGIN
   -- get channel
   v_device :=
             DBMS_BACKUP_RESTORE.deviceallocate(TYPE       => NULL,
                                                ident      => 't1');
   --what to do
   DBMS_BACKUP_RESTORE.restoreSetArchivedLog;
   --which range
   DBMS_BACKUP_RESTORE.restorearchivedlogrange(
     low_change  => 12640521350
    ,high_change => 22640521354
 
   );
   -- do it
   DBMS_BACKUP_RESTORE.restoreBackupPiece
                               (done        => v_done
                                ,handle      => '/backup/SPR/SPR_AR_20070416_850_1'
								,fromdisk => TRUE
                               );
   -- deallocate device
  DBMS_BACKUP_RESTORE.devicedeallocate;
 EXCEPTION
  WHEN OTHERS THEN
  DBMS_BACKUP_RESTORE.devicedeallocate;
END;
/

2. Beispiel: Restore Controlfile

readcontrolfile.sql
DECLARE
   v_device      VARCHAR2 (50);
   v_done        BOOLEAN;
 
   TYPE t_filetable IS TABLE OF VARCHAR2 (255)
      INDEX BY BINARY_INTEGER;
 
   v_filetable   t_filetable;         -- backuppiece names speichern
   v_maxpieces   NUMBER        := 1;  -- Anzahl der backuppieces in backupset
BEGIN
-- Backupsets angeben
   v_filetable (1) := '+ORARECO/mydb/backup/mydb_db_20100427_1006_1';
   v_filetable (2) := '+ORARECO/mydb/backup/mydb_db_20100427_1007_1';
   v_maxpieces := 2;
-- device anfordern
   v_dev := SYS.DBMS_BACKUP_RESTORE.deviceallocate (TYPE       => NULL, ident => 'd1');
-- restore conversation
   SYS.DBMS_BACKUP_RESTORE.restoresetdatafile;
-- Was soll wie angelegt werden sollen
   SYS.DBMS_BACKUP_RESTORE.restorecontrolfileto (cfname      => '/tmp/control01.ctl');
   SYS.DBMS_BACKUP_RESTORE.restorespfileto ('/tmp/spfile.ora');
 
-- Restore
   FOR i IN 1 .. v_maxpieces
   LOOP
      SYS.DBMS_BACKUP_RESTORE.restorebackuppiece (done        => v_done
                                                , handle      => v_filetable (i)
                                                , params      => NULL
                                                 );
 
      IF v_done
      THEN
         GOTO ready_restore;
      END IF;
   END LOOP;
 
   <<ready_restore>>
   -- Deallocate device
   SYS.DBMS_BACKUP_RESTORE.devicedeallocate;
EXCEPTION
   WHEN OTHERS
   THEN
      DBMS_BACKUP_RESTORE.devicedeallocate;
END;
/

3. Beispiel: Datafiles wiederherstellen

readdatafile.sql
DECLARE
v_device   VARCHAR2 (50);
  v_done     BOOLEAN;
BEGIN
  v_device :=      DBMS_BACKUP_RESTORE.deviceallocate(TYPE       => NULL, ident      => 't1');
  dbms_backup_restore.RestoreSetDatafile; 
  dbms_backup_restore.RestoreDatafileTo(dfnumber => 1,toname => '/tmp/SYSTEM01.DBF');
  dbms_backup_restore.RestoreBackupPiece(done => done,handle => '<backup_piece>', params => NULL);
  dbms_backup_restore.DeviceDeallocate;
 EXCEPTION
  WHEN OTHERS THEN
  DBMS_BACKUP_RESTORE.devicedeallocate;
END;
/
Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
dba/rman_entpacken.txt · Zuletzt geändert: 2010/05/06 16:03 von gpipperr