Oracle でのセキュリティ障害への対応

事象説明

Oracle10g のJDBC ドライバを使用してデータベースとの接続を行う場合に、セキュリティポリシーの設定が足りないために、java.lang.ExceptionInInitializerError が発生することがあります。

状況の確認方法

セキュリティ例外の発生状況は、SecurityモジュールのログレベルにTRACEを指定してセキュリティログを採取することで確認できます。 ”AccessControlException”の出力状況を確認してください。

設定方法については、[ 構築・運用 > ログ > ログの設定方法 ] を参照してください。

復旧方法

<INSTANCE_ROOT>/config/server.policy に次の記述を追加してください。
grant {
    permission java.lang.RuntimePermission "createClassLoader";
};

対象となるエラー事象

セキュリティ例外発生によって接続に失敗した場合、webotx_jdbc.log、または、プロセスグループのログファイルに次の内容が出力されます。

    WODataSource.getConnection() : failed to get connection : catch java.lang.ExceptionInInitializerError

また、agent.log、または、プロセスグループのログファイルに次の内容が出力されます。

    Caused by: java.security.AccessControlException: access denied (java.lang.RuntimePermission createClassLoader)


セキュリティ例外発生後に接続に失敗した場合には、webotx_jdbc.log、または、プロセスグループのログファイルに次の内容が出力されます。

    WODataSource.getConnection() : failed to get connection : catch java.lang.NoClassDefFoundError


ログは、次のファイルに出力されます。

    エージェントプロセス内で動作する場合:
    ${INSTANCE_ROOT}/logs/jdbc/webotx_jdbc.log

    Standard/Enterprise のプロセスグループ内で動作する場合:
    ${INSTANCE_ROOT}/logs/tpsystem/<apgname>/<pgname>/<pgname>.<pid>.log


関連情報