Oracle
 sql >> Database >  >> RDS >> Oracle

Archiver Hung a causa di ORA-16484 COMPATIBILE

Questa mattina mi sono svegliato con alcuni avvisi di EM sul blocco del mio archiviatore, simili ai seguenti:

Target type=Database Instance 
Target name=orcl4 
Categories=Fault 
Message=The archiver hung at time/line number: Fri Sep 09 06:07:22 2016/376. 
Severity=Critical

Ho utilizzato DG Broker per interrompere e quindi riavviare il trasporto dei log.

edit database orcl set state=transport-off;
edit database orcl set state=transport-on;

Ma l'archiviatore verrebbe comunque bloccato. Quindi tocca al registro degli avvisi per ottenere più indizi. Ho trovato questo nel registro degli avvisi del primario:

TT00: Attempting destination LOG_ARCHIVE_DEST_2 network reconnect (16484)
TT00: Destination LOG_ARCHIVE_DEST_2 network reconnect abandoned
Fri Sep 09 08:07:40 2016
Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl4/trace/orcl4_tt00_16068.trc:
ORA-16484: compatibility setting is too low

Il messaggio di errore sembra autoesplicativo. Ho COMPATIBILE impostato su un valore troppo basso. A questo punto, mi sono ricordato di aver cambiato COMPATIBILE nelle primarie un mese fa. Devo aver dimenticato di cambiare anche questo in standby. Una rapida verifica ha dimostrato la mia ipotesi. COMPATIBILE è impostato su 12.1.0.2 nel primario ma 11.2.0 in standby. Quindi c'è il mio problema. Ho cambiato COMPATIBILE in standby, l'ho rimbalzato e quindi ho ripreso il trasporto del registro. La vita andava bene e tutto era sistemato.

Se ricordi bene, ho detto che ho cambiato COMPATIBILE nelle primarie un mese fa. Perché questo era un problema oggi e non allora? Per saperlo, dovresti conoscere la cronologia delle modifiche per questo database. Ieri sera abbiamo rilasciato un nuovo codice alla produzione. Parte del rilascio del codice prevedeva l'inclusione di una nuova tabella che utilizzasse la nuova funzione della colonna IDENTITY di Oracle 12c. Questa è stata la prima funzionalità solo 12c che abbiamo implementato nella nostra base di codice. Lo standby stava tentando di creare la tabella con la nuova funzionalità, ma l'operazione non è stata completata a causa dell'impostazione errata dei parametri. Sono ancora un po' confuso su come questo abbia influito sul trasporto di tronchi. Mi sarei aspettato che solo l'applicazione del registro fosse interrotta, ma è così che si è manifestata.