AIX und Oracle 18c
Bei AIX kann man beim Mounten eines Filesystems die Optionen CIO (Concurrent IO) und DIO (direct IO) nutzen. Das war bisher für alle Oracle Datenbankversionen möglich. Beginnend mit Oracle 18c gibt es allerdings ein Problem, wenn in der Oracle Datenbank der Parameter FILESYSTEMIO_OPTIONS auf SETALL (=Performanceempfehlung) gesetzt ist. In diesem Fall findet Oracle keine Files (Controlfile, Datafile,...) mehr, wenn man die Instanz startet.
Beispiel Fehlermeldung - hier mit RMAN
ORA-19505: failed to identify file "/app/oracle/daten/mydb/abc.dbf"
ORA-27041: unable to open file
IBM AIX RISC System/6000 Error: 22: A system call received a parameter that is not valid.
Additional information: 9
ORA-27041: unable to open file
Beim Starten der Datenbankinstanz mit SQL*PLus erscheint die Fehlermeldung, dass angeblich die Controlfiles fehlen. Diese sind aber auf der Disk vorhanden - ein Problem mit der Fileprotection liegt auch nicht vor.
Workaround
Das Problem tritt nur auf, wenn der Parameter FILESYSTEMIO_OPTIONS auf SETALL gesetzt ist. Wird er nicht gesetzt oder auf ASYNCH gestellt (der Default bei AIX), funktioniert alles wieder wie gewohnt. Die Datenbank lässt sich problemlos mit SQL*PLus starten und auch RMAN kann die Datenbank sichern.
Der Nachteil ist, dass jetzt ein Overhead beim Dateizugriff entsteht - man sollte die Ursache beseitigen.
Die Lösung
Um das Thema final zu bereinigen, muss das Filesystem dismountet und ohne CIO, DIO Optionen wieder gemountet werden. Dann darf FILESYSTEMIO_OPTIONS auch wieder auf SETALL gestellt sein und die IO Performance ist auch wieder OK.