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

Jaspersoft Studio 7.0.3 und Java

Hallo da draußen, seit langem mal wieder ein Blog-Eintrag von mir. Heute geht es mal um Jasperreports. Grundsätzlich mag ich das Projekt ja wirklich, ich

mehr...

Vektorisierung von Pixel-Grafiken

Hallo da draußen, über den Cutworks-Webshop – meinem Langläufer-Projekt – kann man mit Hilfe von DXF-Dateien Teile aus Blech, Holz, Kunststoff u.a. Materialien ausschneiden lassen.

mehr...