Förmodligen eftersom du inte anger ett värde för DB_ID
kolumnen fylls det värdet på av en radnivå före infogningsutlösaren definierad i tabellen. Den utlösaren är förmodligen att välja värdet från en sekvens.
Eftersom data flyttades (förmodligen nyligen) från produktionsdatabasen, skulle min satsning vara att när data kopierades ändrades inte sekvensen likaså. Jag skulle gissa att sekvensen genererar värden som är mycket lägre än den största DB_ID
som för närvarande finns i tabellen som leder till felet.
Du kan bekräfta denna misstanke genom att titta på utlösaren för att avgöra vilken sekvens som används och göra en
SELECT <<sequence name>>.nextval
FROM dual
och jämföra det med
SELECT MAX(db_id)
FROM cmdb_db
Om, som jag misstänker, sekvensen genererar värden som redan finns i databasen, kan du öka sekvensen tills den genererar oanvända värden eller så kan du ändra den för att ställa in INCREMENT
till något mycket stort, hämta nästa val en gång och ställ in INCREMENT
tillbaka till 1.