Benutzer-Werkzeuge

Webseiten-Werkzeuge


prog:oracle_restore_plsql_code

Oracle PL/SQL - Den Source Code eines überschriebenen Packages mit Flashback wieder herstellen

Problem:

Falsche Version eines Packages aus dem Git Repository eingespielt und damit die Änderung des Kollegen überschrieben. Dieser hatte den Code aus der DB noch nicht in das Repository übertragen.

Lösung:

Oracle speichert den Source Code der PL/SQL Objekte in der Tabelle sys.source$ mit der Object ID als Schlüssel.

Mit einer Flashback Query ( as of timestamp ) kann mit etwas Glück der alten Datenbestand jeder Tabelle aus den Rollback Segmenten gelesen werden.

Im ersten Schritt die Object ID des betroffenen Packages ermitteln:

sqlplus / AS sysdba
 
SELECT object_id , object_type, object_name,owner
  FROM dba_objects
  WHERE object_name='&CHANGED_PLSQL_OBJ'
/

Mit der ermittelten ID kann nun über die sys.source$ die alte Version des Packages ausgelesen und in eine Datei gespoolt werden

 
SET pagesize 0 linesize 240 newpage 0 SPACE 0
 
 
SET echo off
SET verify off 
SET feedback off
SET heading off
 
 
 
spool export_code.sql
 
 
SELECT SOURCE 
   FROM sys.source$ 
    AS OF TIMESTAMP to_timestamp('03.07.2019 12:00:00','DD.MM.YYYY hh24:MI:SS') 
WHERE obj#=&MY_OBJ_ID ;
 
 
spool off
 
SET feedback ON
SET heading ON
SET echo ON
SET verify ON

Mehr zu Flashback Database siehe Flashback aktivieren und verwenden


Quellen

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
prog/oracle_restore_plsql_code.txt · Zuletzt geändert: 2019/07/04 10:23 von gpipperr