Nachdem ich schon mehere Tage mit der Suche nach Fehlern im Oracle ORDS mit APEX verbracht habe, war es mal Zeit ein Prüf-Skript zu schreiben.
Das Prüfskript prüft einige der gängigsten Probleme die einen Web Fehler 404 erzeugen.
Das Skript fragt Sie die folgenden Parameter:
Pfad des webapss Ordner (meist /opt/tomcat*[/latest] )
Name des ORDS meist "ords". Das ist der Name, der in der Datei ords.war verwendet wird.
Zusätzlich werden die Passwörter für die Accounts APEX_PUBLIC_USER, ORDS_PUBLIC_USER, APEX_REST_PUBLIC_USER
gefragt und eine Anmeldung an der Datenbank durchgeführt. Fehler, wie Account Locked oder Passwort falsch werden dadurch gefunden.
Der letzte Check-Teil prüft die 4 XML Config-Dateien. Diese waren bei unseren Installationen teilweise nicht vollständig angelegt worden.
######################################################################################################
#!/bin/bash
# chmod u+x check_ords.sh
######################################################################################################
#export CONFIG_DIR=/opt/oracle/ords_conf
#export ORACLE_ORDS=ords
read -p 'Webserver webapps Ordner: [/opt/tomcat/latest]' -r WEB_DIR
WEB_DIR=${WEB_DIR:-/opt/tomcat/latest}
read -p 'Oracle ORDS Name: [ords]' -r ORACLE_ORDS
ORACLE_ORDS=${ORACLE_ORDS:-ords}
read -p 'Passwort APEX_PUBLIC_USER: ' -r -s APEX_PU
echo
read -p 'Passwort ORDS_PUBLIC_USER: ' -r -s ORDS_PU
echo
read -p 'Passwort APEX_REST_PUBLIC_USER: ' -r -s APEX_RPU
echo -e "\nCheck XML Config Files:"
export CONFIG_DIR=`cat $WEB_DIR/webapps/$ORACLE_ORDS/WEB-INF/web.xml | egrep "<param-value>/" | cut -c22-90 | sed -e 's/<\/param-value>//g'`
export ORACLE_HOSTNAME=`cat $CONFIG_DIR/$ORACLE_ORDS/defaults.xml | egrep "db\.hostname" | cut -c26-89 | sed -e 's/<\/entry>//g'`
export ORACLE_SERVICENAME=`cat $CONFIG_DIR/$ORACLE_ORDS/defaults.xml | egrep "db\.servicename" | cut -c29-89 | sed -e 's/<\/entry>//g'`
export ORACLE_PORT=`cat $CONFIG_DIR/$ORACLE_ORDS/defaults.xml | egrep "db\.port" | cut -c22-89 | sed -e 's/<\/entry>//g'`
echo "Found: Host=$ORACLE_HOSTNAME, Port=$ORACLE_PORT, Service=$ORACLE_SERVICENAME"
echo "Found: ORDS=$ORACLE_ORDS, Config_Dir=$CONFIG_DIR"
function check_account()
{
echo "Check: $1"
$ORACLE_HOME/bin/sqlplus -S -L $1/$2@$ORACLE_HOSTNAME:$ORACLE_PORT/$ORACLE_SERVICENAME<<EOF | egrep "ORA-"
EXIT
EOF
}
echo "# Checking Accounts ..."
check_account APEX_PUBLIC_USER $APEX_PU
check_account ORDS_PUBLIC_USER $ORDS_PU
check_account APEX_REST_PUBLIC_USER $APEX_RPU
function check_config_files()
{
if [ -f "$CONFIG_DIR/$ORACLE_ORDS/conf/$1" ]; then
echo "OK: $1 `ls -al $CONFIG_DIR/$ORACLE_ORDS/conf/$1 | awk '{ print $1" "$3":"$4}'`"
else
echo "$1 missing"
fi
}
echo "# Checking XML Config Files in $CONFIG_DIR/$ORACLE_ORDS/conf"
check_config_files apex.xml
check_config_files apex_al.xml
check_config_files apex_pu.xml
check_config_files apex_rt.xml
echo "# Optional Checks:"
echo "java -jar $ORACLE_ORDS.war validate"
echo "java -jar $ORACLE_ORDS.war validate --database apex"
Ich hoffe Sie können damit zukünftig Ihre Oracle ORDS Fehler finden ...