Oracle Sequences sichern/wiedereinspielen

Für einen Export (zur Datensicherung) kann es wichtig sein, dass Sequenzes gesichert und nach einem Restore wieder eingespielt werden müssen. Dazu habe ich ein kleines Shell-Script geschrieben:

#!/bin/bash
 
sqlplus -SM <<- DOK
system/<passwort>
 
set lines 1000;
set pages 2000;
SET ECHO OFF
SET FEEDBACK OFF
SET HEADING OFF
SET AUTOPRINT OFF
SET AUTOTRACE OFF
SET SHOW OFF
SET VERIFY OFF
 
 
 
select * from 
(select 'drop sequence '||'${1}'||'.'||Sequence_name||';' befehl 
from all_sequences 
where sequence_owner=upper('${1}') and Sequence_name=upper('${2}')
union
select 'create sequence '||'${1}'||'.'||Sequence_name||
' minvalue '||Min_value||
' maxvalue '||max_value||
' start with '||last_number ||
' increment by '||increment_by||
case when cache_size = 0 then ' nocache ' else ' cache ' || 
cache_size end ||' '||
case when order_flag = 'Y' then 'order' end ||' '||
case when cycle_flag = 'Y' then 'cycle' end ||';'
from all_sequences 
where sequence_owner=upper('${1}') and 
Sequence_name=upper('${2}'))
order by substr(befehl,8,319);
 
exit;
DOK

Dieses Script wird auf OS-Ebene mit zwei Parametern aufgerufen:
$1: Schemaname
$2: Sequenzname

Um die Sequenzes wieder ein zu spielen, muss man nur die Ausgaben des Scripts mit dem SQL-Editor (z.B. sqlplus) ausführen.

Schreibe einen Kommentar

Deine Email-Adresse wird nicht veröffentlicht.