Benutzer-Werkzeuge

Webseiten-Werkzeuge


prog:oracle_restore_plsql_code

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
prog:oracle_restore_plsql_code [2019/07/04 10:14] – [Oracle PL/SQL - Den Source Code eines überschriebenen Packages mit Flashback wieder herstellen] gpipperrprog:oracle_restore_plsql_code [2019/07/04 10:23] (aktuell) – [Oracle PL/SQL - Den Source Code eines überschriebenen Packages mit Flashback wieder herstellen] gpipperr
Zeile 1: Zeile 1:
 +=====Oracle PL/SQL - Den Source Code eines überschriebenen Packages mit Flashback wieder herstellen=====
  
 +
 +**<fc #800000>Problem: </fc>** 
 +
 +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.
 +
 +
 +**<fc #008000>Lösung:</fc>**
 +
 +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:
 +<code sql>
 +
 +sqlplus / as sysdba
 +
 +select object_id , object_type, object_name,owner
 +  from dba_objects
 +  where object_name='&CHANGED_PLSQL_OBJ'
 +/
 +
 +</code>
 +
 +Mit der ermittelten ID kann nun über die **sys.source$** die alte Version des Packages ausgelesen und in eine Datei gespoolt werden
 +
 +<code sql>
 +
 +
 +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 
 +
 +
 +
 +</code>
 +
 +
 +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/
prog/oracle_restore_plsql_code.txt · Zuletzt geändert: 2019/07/04 10:23 von gpipperr