Gegeven de volgende situatie: de database wordt cold gebackupt met het volgende script:
backup channel=disk01 incremental level 0 AS compressed backupset copies = 1 DATABASE; } SQL 'alter database open'; allocate channel FOR maintenance device TYPE disk; DELETE noprompt obsolete recovery window OF 13 days; crosscheck backup; DELETE noprompt expired backup;
Deze cold backup van de database gaf steeds de foutmelding
RMAN-20020: database incarnation not set
bij ‘delete noprompt obsolete recovery window of 13 days;’
en
RMAN-20021: Database not set
bij ‘crosscheck backup;’
en ‘delete noprompt expired backup;’
De database incarnation is wel degelijk gezet, de database is wel degelijk bekend. ORACLE_SID is keurig gezet, ORACLE_HOME ook.
Ook ‘list incarnation;’ in rman geeft aan dat de incarnation correct is gezet.
Het probleem treedt niet op bij een hot backup. Suggesties op internet gaven aan dat het probleem kon zitten in rechten op het filesystem. Die waren echt wel in orde. Wat is nu wel de oorzaak? Welnu, het commando
SQL 'alter database open';
is de boosdoener. Verander je dit in het simpele
ALTER DATABASE OPEN;
(dus zonder het uitstapje naar sql), dan loopt alles naar wens.
Opvallend is dat het probleem niet optrad met rdbms 10.2.0.5.0 op Oracle Enterprise Linux maar wel met exact dezelfde 10.2.0.5.0 op RedHat Enterprise Edition 5.5.
Oracle vermeldt dat het probleem voorkomt in versie 10.2 en 11.x. Het zou opgelost zijn in 12.1.