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

Homepage für Seifenblase Dresden

Hallo zusammen, lange ist es nun her, seitdem ich das letzte Mal was geschrieben habe, irgendwie ist auch immer laufend irgendetwas, so dass ich gar

mehr...

Free Your IT endlich online

Hallo da draußen, endlich sind meine ersten beiden Tutorial-Videos inkl. eines kleinen Vorstellungs-Videos online. Da ich grundsätzlich weg möchte von den zensurbehafteten Plattformen habe ich

mehr...

HTTPS-Abrufe mit Java

Hallo da draußen, gerade musste ich wieder einige Zeit lang schwitzen, weil bei meinem Cutworks-Projekt nach einer (vergessenen) SSL-Zertifikatserneuerung plötzlich eine essentielle Funktion ausgefallen und

mehr...