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;
/
Cookies helfen bei der Bereitstellung von Inhalten. Diese Website verwendet Cookies. Mit der Nutzung der Website erklären Sie sich damit einverstanden, dass Cookies auf Ihrem Computer gespeichert werden. Außerdem bestätigen Sie, dass Sie unsere Datenschutzerklärung gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website. Weitere Information
"Autor: Gunther Pipperr"
dba/rman_entpacken.txt · Zuletzt geändert: 2010/05/06 16:03 von gpipperr