Vermutlich, da Sie keinen Wert für die DB_ID
angeben -Spalte wird dieser Wert durch einen Trigger auf Zeilenebene vor dem Einfügen ausgefüllt, der in der Tabelle definiert ist. Dieser Auslöser wählt vermutlich den Wert aus einer Sequenz aus.
Da die Daten (vermutlich kürzlich) aus der Produktionsdatenbank verschoben wurden, würde ich wetten, dass beim Kopieren der Daten die Sequenz nicht ebenfalls geändert wurde. Ich würde vermuten, dass die Sequenz Werte generiert, die viel niedriger sind als die größte DB_ID
die sich derzeit in der Tabelle befindet, die zu dem Fehler führt.
Sie können diesen Verdacht bestätigen, indem Sie sich den Trigger ansehen, um festzustellen, welche Sequenz verwendet wird, und eine
ausführenSELECT <<sequence name>>.nextval
FROM dual
und vergleiche das mit
SELECT MAX(db_id)
FROM cmdb_db
Wenn die Sequenz, wie ich vermute, Werte generiert, die bereits in der Datenbank vorhanden sind, können Sie die Sequenz inkrementieren, bis sie unbenutzte Werte generiert, oder Sie können sie ändern, um den INCREMENT
festzulegen zu etwas sehr Großem, hole dir einmal nextval und setze das INCREMENT
zurück zu 1.