=====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 [[dba:flashback|Flashback aktivieren und verwenden]] ---- ==== Quellen ==== Oracle: Using Oracle Flashback Query (SELECT AS OF) * https://docs.oracle.com/cd/E11882_01/appdev.112/e41502/adfns_flashback.htm#ADFNS01003 Web: * https://www.oracle-scripts.net/flashback-procedure-function-package/