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

Arkiver hang på grund af KOMPATIBEL ORA-16484

I morges vågnede jeg op til et par advarsler fra EM om, at mit arkiver blev hængt, svarende til følgende:

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

Jeg brugte DG Broker til at stoppe og derefter genstarte logtransport.

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

Men arkiveren ville stadig blive hængt. Så det går til advarselsloggen for at få flere ledetråde. Jeg fandt dette i den primære advarselslog:

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

Fejlmeddelelsen virker selvforklarende. Jeg har KOMPATIBEL sat for lavt. På dette tidspunkt huskede jeg, at jeg skiftede KOMPATIBEL i primærskolen for en måned siden. Jeg må have glemt også at ændre dette i standby. En hurtig verifikation beviste min hypotese. KOMPATIBEL er sat til 12.1.0.2 i den primære men 11.2.0 i standby. Så der er mit problem. Jeg skiftede KOMPATIBEL i standby-tilstanden, afviste den og genoptog derefter logtransporten. Livet var fint, og alt var ordnet.

Hvis du husker rigtigt, sagde jeg, at jeg skiftede KOMPATIBEL i primærskolen for en måned siden. Hvorfor var dette et problem i dag og ikke dengang? For at vide det, skal du kende ændringshistorikken for denne database. I aftes udgav vi ny kode til produktion. En del af kodeudgivelsen var at inkludere en ny tabel, der brugte Oracle 12c's nye IDENTITY-søjlefunktion. Dette var den første 12c-kun funktion, vi implementerede i vores kodebase. Standbyen forsøgte at oprette tabellen med den nye funktion, men denne handling kunne ikke fuldføres på grund af den forkerte parameterindstilling. Jeg er stadig lidt forvirret over, hvordan dette påvirkede logtransporten. Jeg havde forventet, at kun log-ansøgningen var brudt, men sådan kom det til udtryk.


  1. Sådan fungerer Setseed() i PostgreSQL

  2. Søg efter hele ord match i MySQL

  3. Opdater en MySQL-tabel med værdier fra en anden

  4. Sådan aktiveres logning for SQL-sætninger, når du bruger JDBC