Oracle 12 auf AIX und die fehlenden Runtime Symbol Definitions

Beim Upgrade von Oracle Datenbanken sollte man beachten, dass hierfür eine Abhängigkeit zum AIX Service „iocp“ bedient werden muss. Ansonsten starten zum Beispiel listener, sqlplus oder auch abhängige Scripte wie mopatch nicht (da diese ebenfalls sqlplus nutzen).

So meldet sich sqlplus zum Beispiel mit dem folgenden Fehler und verweigert die Arbeit – Pfade und Environment stimmen natürlich 🙂

sapserver:orasap 29> ./sqlplus
Could not load program sqlplus:
rtld: 0712-001 Symbol CreateIoCompletionPort was referenced
      from module /oracle/SAP/121/lib/libttsh12.so(), but a runtime definition
            of the symbol was not found.
rtld: 0712-001 Symbol GetMultipleCompletionStatus was referenced
      from module /oracle/SAP/121/lib/libttsh12.so(), but a runtime definition
            of the symbol was not found.
rtld: 0712-002 fatal error: exiting.
sapserver:orasap 30> ldd sqlplus
sqlplus needs:
         /oracle/SAP/121/lib/libsqlplus.so
         /usr/lib/libc.a(shr_64.o)
         /usr/lib/libpthreads.a(shr_xpg5_64.o)
         /unix
         /oracle/SAP/121/lib/libttsh12.so
         /usr/lib/libcrypt.a(shr_64.o)
         /oracle/SAP/121/lib/libons.so
         /usr/lib/libdl.a(shr_64.o)
         /usr/lib/libc.a(aio_64.o)
         /usr/lib/libodm.a(shr_64.o)
         /usr/lib/libperfstat.a(shr_64.o)
         /usr/lib/libcfg.a(shr_64.o)
         /usr/lib/liblvm.a(shr_64.o)
         /usr/lib/libcorcfg.a(shr_64.o)
         /usr/lib/libsrc.a(shr_64.o)
sapserver:orasap 31>

Bei dem Aufruf von mopatch äußert sich das ganze verwirrender weise sogar so:

sapserver:orasap 48> env ORACLE_HOME=$IHRDBMS $IHRDBMS/MOPatch/mopatch.sh -v -s SAP12102P_1511-20012297.ZIP
Cannot determine Oracle RDBMS version.

Ursache hierfür ist auch wieder das sqlplus bzw. die im mopatch Script genutzte Abfrage:

# explicitly set that
  if LD_LIBRARY_PATH="$ORACLE_HOME/lib" \
     SHLIB_PATH="$ORACLE_HOME/lib"      \
     LIBPATH="$ORACLE_HOME/lib"         \
     "$ORACLE_HOME/bin/sqlplus" -v 1>"$l_5_12_rdbmsverlog" 2>&3; then
    l_5_12_rdbmsver=`( egrep "$RDBMSVERRE" "$l_5_12_rdbmsverlog" 2>&3 || : ) |
                sed 's/'"$RDBMSVER10SE"'/\1/;s/'"$RDBMSVER11SE"'/\1/' 2>&3`
    if versionp "$l_5_12_rdbmsver"; then
      :
    else
      logerr -q "Cannot determine Oracle RDBMS version from \"$l_5_12_rdbmsver\"."
      echo ""
      return 1
    fi
  else
    logerr -q "Cannot execute SQL*Plus to determine Oracle RDBMS version."
    echo ""
    return 1
  fi

Bedingt durch den fehlgeschlagenen Aufruf von sqlplus kommt das Script mit der nicht ganz passenden Fehlermeldung zurück, es könne das verwendete RDBMS nicht erkennen. Den eigentlichen Fehler, nämlich sqlplus nicht starten zu können unterschlägt es einfach mal.

Schuld an dem Verhalten ist der nicht aktivierte iocp Service von AIX. Das kann man jedoch ganz einfach prüfen (und den Service online aktivieren). Zunächst die Installationspakete prüfen und sehen, ob der Service überhaupt installiert ist:

sapserver:orasap 34>  lslpp -l bos.iocp.rte
  Fileset                      Level  State      Description
  ----------------------------------------------------------------------------
Path: /usr/lib/objrepos
  bos.iocp.rte               6.1.9.0  COMMITTED  I/O Completion Ports API

Path: /etc/objrepos
  bos.iocp.rte               6.1.4.0  COMMITTED  I/O Completion Ports API
sapserver:orasap 35>

Das sieht schon mal gut aus. Als nächstes wird geprüft ob der Service aktiviert ist:

sapserver:orasap 35>  lsdev -Cc iocp
iocp0 Defined  I/O Completion Ports
sapserver:orasap 36>

Das Defined Flag gibt hier lediglich an, dass der Service vorhanden ist, aber eben nicht gestartet. Nachdem der Service aktiviert ist sieht die Ausgabe so aus:

sapserver:orasap 37>  lsdev -Cc iocp
lsdev | grep iocp
iocp0         Available       I/O Completion Ports
sapserver:orasap 38>

Das Available Flag zeigt an, dass der Service nicht nur installiert, sondern auch aktiviert ist. Somit läuft nun auch Oracle 12 unter AIX. Mehr Informationen hierzu gibt es in der SAP Note #1915299

About the author