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

事象説明

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

状況の確認方法

    セキュリティ例外の発生状況は、次のJava システムプロパティを指定してセキュリティログを採取することで確認できます。 ”AccessControlException”の出力状況を確認してください。

        名前 : java.security.debug
        値    : access.failure

    設定方法については、運用編(ドメインの運用)の「3.7.2. VM オプションの設定」か運用編(TPモニタの運用操作)の「2.9. プロセスグループのプロパティの変更」を参照してください。

復旧方法

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

対象となるエラー事象

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

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

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

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


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

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


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

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

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


関連情報

    トラブルシューティング(障害解析)