Speziell in Testsystemen kommt es öfter mal vor, dass Sequenzen irgendwann volllaufen und Oracle mit einem ORA-08004 abbricht.
Wenn es nackte Umgebungen sind, kann man aber relativ einfach die Sequenzen resetten, seit Oracle 11g gibt es folgende Möglichkeit, eine Sequenz zu resetten:

ALTER SEQUENCE sequenzname restart START WITH 1

um die Sequenz “sequenzname” wieder von 1 zu starten.
Mit Hilfe einer PL/SQL-Routine kann man dann entsprechend ein Reset aller Sequences durchführen:

DECLARE
    CURSOR v_cur IS SELECT sequence_name FROM user_sequences;
BEGIN
    FOR v_rec IN v_cur LOOP
        EXECUTE IMMEDIATE 'ALTER SEQUENCE '||v_rec.sequence_name||' RESTART START WITH 1';
    END LOOP;
END;
/

Easy oder?

Benennt man die Sequenzen nach einem bestimmten Muster oder pflegt Meta-Daten zur Beziehung zwischen Sequenzen und Tabellen-ID-Spalten lässt sich dann auch leicht die maximale ID ermitteln und die Sequenz entsprechend auf den max+1-Wert setzen.
Dazu aber in meinem nächsten Post.

Schreibe einen Kommentar

Artikel, die Dir auch gefallen könnten

Remote-Desktop unter Manjaro

Hallo da draußen, Leute die mich etwas besser kennen, wissen, dass ich ein großer Fan von Manjaro Linux bin. Ich nutze das schon seit etlichen

mehr...