prog:oracle_restore_plsql_code
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNä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] gpipperr | prog: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 # | ||
+ | |||
+ | 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 # | ||
+ | |||
+ | 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, | ||
+ | from dba_objects | ||
+ | where object_name='& | ||
+ | / | ||
+ | |||
+ | </ | ||
+ | |||
+ | 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(' | ||
+ | where obj# | ||
+ | |||
+ | |||
+ | spool off | ||
+ | |||
+ | set feedback on | ||
+ | set heading on | ||
+ | set echo on | ||
+ | set verify on | ||
+ | |||
+ | |||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | Mehr zu Flashback Database siehe [[dba: | ||
+ | |||
+ | ---- | ||
+ | |||
+ | |||
+ | |||
+ | ==== Quellen ==== | ||
+ | |||
+ | |||
+ | Oracle: Using Oracle Flashback Query (SELECT AS OF) | ||
+ | |||
+ | * https:// | ||
+ | |||
+ | Web: | ||
+ | |||
+ | * https:// |
prog/oracle_restore_plsql_code.txt · Zuletzt geändert: 2019/07/04 10:23 von gpipperr