2.11 JMXを使用したアプリケーションの管理

この項の内容は、次のとおりです。

2.11.1 JMXの概要

JMX(Java Management Extensions)は、アプリケーション、システム・オブジェクト、デバイス、サービス指向のネットワーク、JVM(Java仮想マシン)を管理および監視するツールを提供するJavaテクノロジです。このAPIを使用すると、そのクラスの動的な作成と変更が可能です。そのため、リソースが作成、インストールおよび実装されると、このテクノロジを使用してリソースを監視および管理できます。また、JMX APIにはリモート・アクセスが含まれているため、リモート管理プログラムはこのような目的で実行中のアプリケーションと対話できます。

JMXでは、特定のリソースは、MBean(マネージドBean)と呼ばれる1つ以上のJavaオブジェクトで構成されます。これらのMBeanは、MBeanサーバーと呼ばれるコアの管理対象オブジェクト・サーバーに登録されます。MBeanサーバーは管理エージェントとして動作し、Javaプログラミング言語を使用できるほとんどのデバイス上で実行できます。JMXエージェントは、MBeanが登録されているMBeanサーバーと、MBeanを処理する一連のサービスで構成されます。

2.11.2 セッションでのJMXの有効化と起動

Javaを実行しているセッションでJMXサービスを有効化および実行するために、JMXSERVERロールおよびdbms_java.start_jmx_agentプロシージャが提供されています。JMXSERVERロールには、セッションでMBeanServerとJMXエージェントを起動および実行できる特定のJavaパーミッションが付与されます。プロシージャdbms_java.start_jmx_agentは、特定のセッションで、セッションの期間内は通常アクティブのままのエージェントを起動します。JMXを有効にして起動するには、次の操作を実行します。

  1. SYS またはSYSTEMからJMXSERVERを取得します。
    SQL> grant jmxserver to HR;
    

    HRはユーザー名です。

  2. プロシージャdbms_java.start_jmx_agentを起動して、セッションでJMXを起動します。dbms_java.start_jmx_agentプロシージャは、次の引数を使用して起動できます。

    port: JMXリスナーのポート。このパラメータの値は、Javaプロパティcom.sun.management.jmxremote.portを設定します。

    ssl: Javaプロパティcom.sun.management.jmxremote.sslの値を設定します。値がtrueおよびfalseの場合は、無視されます。

    auth: プロパティcom.sun.management.jmxremote.authenticateの値で、それ以外の場合は、Java Authentication and Authorization Service (JAAS)資格証明のセミコロンで区切られたリスト。値は大/小文字が区別されません。

    各引数は、nullをデフォルト値としてnullにするか、または省略できます。引数がnullの場合、セッションの対応するプロパティの以前からある値は変更されません。

    注意:

    dbms_java.start_jmx_agentのパラメータに対応するJavaプロパティは、標準のJava 5.0 JMXドキュメントで指定されたJavaプロパティのセットからのものです。Java JMXプロパティの完全なリストは、次を参照してください。

    http://www.oracle.com/technetwork/java/javase/tech/javamanagement-140525.html

    dbms_java.start_jmx_agentプロシージャは、OJVM JMXサーバーおよびリスナーをアクティブ化するエージェントを起動します。JMXサーバーは、現行セッションで1つ以上のデーモン・スレッドとして実行され、通常、セッションの期間内は使用可能です。JMXエージェントをセッションで起動すると、セッションで実行中のJavaコードを監視できます。

    dbms_java.start_jmx_agentプロシージャは、Javaメソッドoracle.aurora.rdbms.JMXAgent.startOJVMAgentのPL/SQLラッパーで、これは、Javaストアド・プロシージャからプログラムでコールすることもできます。startOJVMAgentメソッドは、JMXサーバーとJMX接続デーモン・スレッドを起動してから終了します。専用サーバーでは、これらのスレッドはセッションの存続期間中はアクティブ状態を維持できますが、コールとコールの時間間隔は非活性状態になります。これらの時間間隔が短い場合、同じソケット接続が透過的に再開されます。これによって、JConsoleなどのクライアントは複数のコールにわたって接続を維持できます。

    JMX監視の別のモードが、EXIT_CALL_WHEN_ALL_THREADS_TERMINATEポリシーで可能になります。コール終了ポリシーにOracleRuntime.EXIT_CALL_WHEN_ALL_THREADS_TERMINATEを設定すると、Javaコールがプログラムで終了されるまでstartOJVMAgentメソッドを起動するコールでJMXサーバーを引き続き実行するようにセッションを構成できます。このモードは、様々なJavaタスクが特定のMBeanの操作としてJMXクライアントから起動されている場合に便利です。このように、継続的なJMXの管理および監視がこれらの操作によって実行されます。jmxserv.Loadなど、このようなBeanのJVM JMXデモを参照してください。

2.11.3 Oracle JVM JMXのデフォルトと構成可能性の設定

dbms_java.start_jmx_agentをアクティブにする場合、プロパティcom.sun.management.jmxremotetrueに設定されます。start_jmx_agentを起動する前に、JMXSERVER権限のユーザーは、次の方法で様々な管理プロパティを初期設定できます。

  • PL/SQLファンクションdbms_java.set_propertyを使用します。

  • メソッドjava.lang.System.setPropertyを起動します

JMXSERVERロールのユーザーは、Javaプロパティcom.sun.management.config.fileで指定されたデータベース常駐Javaリソースのプロパティも初期設定できます。com.sun.management.config.fileが設定されていない場合、このリソースのデフォルト名はlib.management.management.propertiesです。このリソース・メカニズムは、標準のファイルベースのJMX構成管理のOracle JVM拡張機能です。これは、セキュリティの向上とスキーマごとの管理を提供するため、Oracle JVMにとって優れたメカニズムです。リソースがスキーマに存在しない場合、ファイルの読取りはフォールバックとして行われます。com.sun.management.config.fileが設定されていない場合、デフォルトのファイル・パスは$(java.home)/lib/management/management.propertiesです。Oracle Database 12cでは、このファイルに次の初期設定が含まれています。

com.sun.management.jmxremote.ssl.need.client.auth = true
com.sun.management.jmxremote.authenticate = false

プロパティcom.sun.management.jmxremote.ssl.need.client.authcom.sun.management.jmxremote.sslを併用すると、クライアントおよびサーバー証明書を使用する、双方向暗号化SSL認証のJMXが設定されます。com.sun.management.jmxremote.sslのデフォルト値はtrueです。この構成はデフォルトであり、JAASパスワード認証よりも好まれます。

注意:

パスワードのファイルベース・ストアを提供するデフォルトのJMXログイン・モジュールは、セキュリティ上の理由からOracle JVMでサポートされていません。そのため、SSLクライアント認証のかわりにJAASパスワード認証を使用する必要がある場合、この項で示すように、一時的なJAAS資格証明をauthパラメータとしてdbms_java.start_jmx_agentに安全に渡すか、または安全なカスタムLDAPログイン・モジュールを使用するようにJMXを構成します。

2.11.4 dbms_java.start_jmx_agentへのSQLコールの例

JMXサーバーの起動例を次に示します。

  • 前述の項で説明したようなデフォルトの設定、または同じセッションの以前に設定された値を使用してJMXサーバーおよびリスナーを起動します。

    call dbms_java.start_jmx_agent();
    
  • 前述の項で説明したようなデフォルトの設定、または同じセッションの以前に設定された値を使用してJMXサーバーおよびリスナーを起動します。

    call dbms_java.start_jmx_agent(null, null, null);
    
  • JMXサーバーおよびリスナーをポート9999で起動します。他のJMX設定は、デフォルト値または同じセッションで以前に設定された値です。

    call dbms_java.start_jmx_agent('9999');
    
  • JMXサーバーおよびリスナーをポート9999で起動します。他のJMX設定は、デフォルト値または同じセッションで以前に設定された値です。

    call dbms_java.start_jmx_agent('9999', null, null);
    
  • JMXサーバーおよびリスナーを起動します。JMX設定は、デフォルト値または同じセッションで以前に設定された値です。JAAS資格証明monitorRole/1z2xおよびcontrolRole/2p3oを使用します。

    call dbms_java.start_jmx_agent(null, null, 'monitorRole/1z2x;controlRole/2p3o');
    

    これらの資格証明は一時的なものです。プロパティcom.sun.management.jmxremote.authenticatetrueに設定されています。

  • JMXリスナーを、SSLやJAAS認証は使用せず、ポート9999で起動します。開発またはデモンストレーションの場合にのみ使用します。

    call dbms_java.start_jmx_agent('9999', 'false', 'false');
    

2.11.5 JConsoleを使用したOracle JVMの監視および制御

この項では、JConsole(標準のJMXクライアント・ツール)を使用して、Oracle JVMを監視および制御する方法について説明します。JConsoleは、標準のJava JDKの構成要素です。

このセクションのトピックは次のとおりです:

注意:

JConsoleを使用してデータベース内のJavaを監視するには、サーバー側のJavaセッションでJMXエージェントが実行されている必要があります。

2.11.5.1 jconsoleコマンドの使用

JConsoleを起動するにはjconsoleコマンド構文を使用します。JConsoleツールを開始する最も簡単な書式は次のようになります。

jconsole [hostName:portNum]

説明:

  • hostnameは、アプリケーションを実行しているシステムの名前です。

  • portNumは、JMXリスナーのポート番号です。

次の例では、デフォルトのポート9999を使用してexample.comという名前のホストに接続します。このモードでは、認証や暗号化は行われません。このモードは、デモやテストの場合のみに適しており、このモードを使用して、次のコマンドで開始するOracle JVMのJMXセッションに接続できます。

call dbms_java.start_jmx_agent(portNum, false, false);

サーバーのデーモン・スレッドが実行中で休止していない場合にのみ、JConsoleからOracle JVMに接続し対話できます。つまり、指定されたポートでJMXサーバーを実行するセッションに、アクティブなJavaコールが存在する必要があります。後続のJavaコール間の時間間隔中にJMXサーバーはその状態と統計情報を保持しますが、JConsoleと通信できません。

2.11.5.2 JConsoleインタフェースの使用について

JConsoleインタフェースは、次のタブで構成されています。

  • 「サマリー」タブ

    Oracle JVMに関する概要情報と、JMXで監視される値が表示されます。

  • 「メモリー」タブ

    メモリーの使用量に関する情報が表示されます。

  • 「スレッド」タブ

    スレッドの使用状況に関する情報が表示されます。

  • 「クラス」タブ

    クラスのロードに関する情報が表示されます。

  • 「MBeans」タブ

    MBeanに関する情報が表示されます。

  • 「VM」タブ

    Oracle JVMに関する情報が表示されます。

注意:

Oracle Database 12cリリース1 (12.1)では、収集されてJConsoleに渡されるデータは、JMXエージェントを実行するOracle JVMセッションに限定されます。このデータには、Oracle JVMで実行している他のセッションの属性は含まれません。OracleRuntime MBeanは例外で、WholeJVM_ AttributesおよびOracle JVMの操作についての情報を多数提供します。

関連トピック

2.11.5.3 Oracle JVMの概要情報の表示について

JConsoleインタフェースの「Summary」タブを使用して、Oracle JVMの概要情報を表示できます。このタブには、スレッドの使用状況、メモリー使用量、クラスのロード、VMやオペレーティング・システムのその他の仕様に関する主な監視情報が表示されます。

JMXエージェントを実行するOracle JVMセッションとJConsoleとの接続が成功すると、次の図のような「概要」タブが表示されます。

図2-6 JConsoleインタフェースの「Overview」タブ

図2-6の説明が続きます
「図2-6 JConsoleインタフェースの「Overview」タブ」の説明

表2-10で、「Overview」タブに表示されるフィールドについて説明します。

表2-10 JConsoleインタフェースの「Overview」タブのフィールドの説明

フィールド 説明

稼働時間

Oracle JVMセッションの実行時間。

プロセスCPU時間

Oracle Database 12cリリース1 (12.1)では、Oracle JVMセッションに関するこの情報は収集されません。

実行中のスレッド

有効なデーモン・スレッドと非デーモン・スレッドの現在の数。

ピーク

Oracle JVMの起動以降の有効なスレッドの最大数。

デーモン・スレッド

有効なデーモン・スレッドの現在の数。

開始合計

Oracle JVMを起動してから開始したスレッドの合計数。デーモン・スレッド、非デーモン・スレッド、終了したスレッドが含まれます。

現在のヒープ・サイズ

現在ヒープで占められているKB数。

コミット済メモリー

ヒープで使用するために割り当てられるメモリーの合計。

最大ヒープ・サイズ

ヒープで占められる最大KB数。

ファイナライズを保留中のオブジェクト

最終段階に向けて保留中のオブジェクトの数。

ガベージ・コレクタ情報

ガベージ・コレクタに関する情報。名前、実行したコレクションの数、ガベージ・コレクションの実行に費やす合計時間などです。

ロード済の現在のクラス

実行するために、現在メモリーにロードされているクラスの数。

ロード済クラス合計

セッションを開始してから、セッション・メモリーにロードされたクラスの合計数。

アンロード済クラス合計

メモリーからアンロードされたクラスの数。Oracle Database 12cリリース1 (12.1)の場合、通常はゼロになります。

合計物理メモリー

Oracle Database 12cリリース1 (12.1)では、Oracle JVMセッションに関するこの情報は収集されません。そのため、表示される値はゼロになります。

空き物理メモリー

Oracle Database 12cリリース1 (12.1)では、Oracle JVMセッションに関するこの情報は収集されません。そのため、表示される値はゼロになります。

コミット済仮想メモリー

Oracle Database 12cリリース1 (12.1)では、Oracle JVMセッションに関するこの情報は収集されません。そのため、表示される値はゼロになります。

2.11.5.4 メモリー消費の監視について

JConsoleインタフェースの「Memory」タブを使用して、メモリー使用量を監視できます。このタブには、メモリー使用量とメモリー・プールに関する情報が表示されます。図2-7に「Memory」タブを示します。

図2-7 JConsoleインタフェースの「Memory」タブ

図2-7の説明が続きます
「図2-7 JConsoleインタフェースの「Memory」タブ」の説明

「Memory」タブのグラフには、メモリー領域全体だけでなく特定のメモリー・プールに関するOracle JVMのメモリー使用量と時間が示されます。Oracle JVMに使用可能なメモリー・プールは、Oracle JVMの内部組織を反映し、Oracle JVMのメモリー・マネージャのオブジェクト・メモリーに対応しています。このリリースのOracle Databaseで使用可能なメモリー・プールは次のとおりです。

  • New Generation領域

    大部分のオブジェクトに対してメモリーが最初に割り当てられるメモリー・プールです。Eden領域とも呼ばれます。

  • Old Generation領域

    このメモリー・プールには、Eden領域にガベージ・コレクション・プロセスが残ったオブジェクトが含まれます。Survival領域とも呼ばれます。

  • Malloc/Free領域

    このメモリー・プールには、メモリーがmallocで割り当てられ、freeで解放されるオブジェクトが含まれます。

  • End of Migration領域

    このメモリー・プールには、セッション終了時の移行を残すオブジェクトが含まれます。

  • Dedicated Session領域

    このメモリー・プールは、Oracle Dedicated Sessionsモードでセッション・オブジェクトにメモリーを割り当てる場合に使用します。

  • Paged Session領域

    このメモリー・プールは、大きなサイズのセッション・オブジェクトが呼び出される場合、そのオブジェクトへのメモリーの割当てに使用します。

  • Run領域

    このメモリー・プールは、一時オブジェクトおよび補助オブジェクトにメモリーを割り当てる場合に使用します。

  • Stack領域

    このメモリー・プールは、スタックに似た方式でメモリーの割当てと解放が行われる一時オブジェクトにメモリーを割り当てる場合に使用します。

「Memory」タブの「Details」領域には、次の内容で現在のメモリーのマトリクスが表示されます。

  • 使用済

    セッションを実行するプロセスで現在使用されているメモリー量を示します。

  • コミット済

    メモリーがすでに割り当てられているかのように、Oracle JVMでの使用が保証されたメモリー量を示します。コミットされるメモリーの量は、時間の経過とともに変わります。ただし、コミットされるメモリーは、必ず使用済メモリー以上になります。

  • 最大

    メモリーの管理に使用できる最大メモリー量を示します。通常は、Oracle JVMの初期構成に対応しています。

「Memory」タブの右下隅にある棒グラフは、各メモリー・プールで消費されたメモリーを示します。使用済のメモリーがメモリー使用量のしきい値を超えると、棒グラフは赤に変わります。メモリー使用量しきい値は、MemoryMXBeanの属性で設定できます。

関連トピック

2.11.5.5 スレッドの使用の監視について

JConsoleインタフェースの「Threads」タブを使用して、スレッドの使用状況を監視できます。

図2-8 JConsoleインタフェースの「Threads」タブ

図2-8の説明が続きます
「図2-8 JConsoleインタフェースの「Threads」タブ」の説明

「Threads」タブのグラフには、有効なスレッドの数と時間が表示されます。特定のタイプのスレッドが特定の色で示されています。

  • マゼンタは、スレッドの合計数を表します。

  • 赤は、スレッドの最大数を表します。

  • 青は、有効なスレッドの数を表します。

このタブのスレッドのリストには、有効なスレッドが表示されます。リストのスレッドを選択すると、そのスレッドに関する情報が右側のペインに表示されます。スレッドの名前、状態、スタック・トレースなどの情報があります。

「Filter」フィールドは、スレッドの絞込みに役立ちます。

2.11.5.6 クラスのロードの監視について

JConsoleインタフェースの「Classes」タブを使用して、クラスのロードを監視できます。このタブのグラフには、ロードされたクラスの数と時間が描画されます。

図2-9 JConsoleインタフェースの「Classes」タブ

図2-9の説明が続きます
「図2-9 JConsoleインタフェースの「Classes」タブ」の説明

2.11.5.7 MBeanの監視および管理について

「MBeans」タブを使用して、MBeanを監視および管理できます。このタブには、プラットフォームMBeanサーバーに登録されたすべてのMBeanに関する情報が表示されます。

「MBeans」タブの左ペインのツリーはMBeanツリーと呼ばれ、オブジェクト名に従って体系化されたすべてのMBeanが表示されます。MBeanツリーでMBeanを選択すると、その属性、操作、通知、その他の情報が右側のペインに表示されます。たとえば、図2-10では、左側のMBeanツリーでOld Generation MemoryPool MBeanを選択しており、Old Generation MemoryPool MBeanの属性が右側に表示されています。

図2-10 MBeanの属性の表示

図2-10の説明が続きます
「図2-10 MBeanの属性の表示」の説明

属性の値は、書込み可能な場合は設定できます。書込み可能な値は青で表示されています。たとえば、図2-10では、属性CollectionUaageThresholdおよびUsageThresholdが書込み可能です。

属性の値をダブルクリックすると、属性の値と時間を示すグラフも表示されます。たとえば、GCManager MBeanのCollectionTimeプロパティの値をクリックすると、図2-11のようなグラフが表示されます。

図2-11 属性の値のグラフの表示

図2-11の説明が続きます
「図2-11 属性の値のグラフの表示」の説明

属性をクリックすると、複雑な属性の詳細を表示できます。たとえば、図2-12に示すように、メモリー・プールの属性UsageおよびPeakUsageの詳細を表示できます。

図2-12 「MBeans」タブの複雑な属性の詳細の表示

図2-12の説明が続きます
「図2-12 「MBeans」タブの複雑な属性の詳細の表示」の説明

MBeanの「Operations」タブには管理機能のインタフェースがあります。たとえば、「Perform Garbage Collection」をクリックすると、メモリー・プールまたはメモリー・マネージャに対してガベージ・コレクションを開始できます。Oracle JVMのJMXデモ(javavm/demo/jmx/)には、Oracle JVMにロードされる追加のカスタムMBeanが複数用意されています。次の例で、DBProps MbeanのgetProp操作の結果を示します。

図2-13 JConsoleインタフェースの「MBeans」タブの「Operations」タブ

図2-13の説明が続きます
「図2-13 JConsoleインタフェースの「MBeans」タブの「Operations」タブ」の説明

2.11.5.8 VM情報の表示について

JConsoleインタフェースの「VM」タブを使用して、VM情報を表示できます。

図2-14 JConsoleインタフェースの「VM」タブ

図2-14の説明が続きます
「図2-14 JConsoleインタフェースの「VM」タブ」の説明

2.11.5.9 OracleRuntime MBean

Oracle Database 11gリリース2(11.2)以降では、dbms_java.start_jmx_agentプロシージャをコールすると、新規のMBean(OracleRuntime)がOracle JVMプラットフォームMBeanのリストに追加されます。このMBeanはOracle JVMに固有のものです。

OracleRuntime MBeanの「Attributes」タブには、oracle.aurora.vm.OracleRuntimeクラスによって操作されるほとんどのパラメータが公開されます。図2-15に、OracleRuntime MBeanの「Attributes」タブを示します。

図2-15 OracleRuntime MBeanの「Attributes」タブ

図2-15の説明が続きます
「図2-15 OracleRuntime MBeanの「Attributes」タブ」の説明

黒で表示されるパラメータは読取り専用のため、変更できません。たとえば、JavaPoolSizePlatformなどです。青の値は読取り/書込みで、値が変更できることを表します。OracleRuntime MBeanのほとんどの属性は、現在のセッションに対してローカルです。

OracleRuntime MBeanのWholeJVM_属性はグローバルです。これらの属性は、パフォーマンス・ビューv$sessionおよびv$sesstatからの収集に従って、データベース・インスタンス内のすべてのJava対応セッションにおけるOracle JVMのメモリー使用量統計の合計を反映します。図2-16に、OracleRuntime MBeanのWholeJVM_属性を示します。

図2-16 OracleRuntime MBean

図2-16の説明が続きます
「図2-16 OracleRuntime MBean」の説明

OracleRuntime MBeanの「Operations」タブには、oracle.aurora.vm.OracleRuntimeクラスの操作の多くが公開されます。

さらに、図2-17図2-18に示すように、sessionsRunningJava操作およびsessionDetailsBySID操作を使用して、Javaが有効な特定のデータベース・セッションの各メモリー使用量の統計を監視できます。

図2-17 sessionsRunningJava操作

図2-17の説明が続きます
「図2-17 sessionsRunningJava操作」の説明

図2-18 sessionDetailsBySID操作

図2-18の説明が続きます
「図2-18 sessionDetailsBySID操作」の説明

2.11.5.10 メモリーのしきい値

使用量のしきい値は、メモリー・プールの管理可能な属性です。コレクション使用量のしきい値は、ガベージ・コレクションされた一部のメモリー・プールの管理可能な属性です。プールの対応するしきい値のチェックを有効にするには、各属性を正の値に設定します。しきい値をゼロに設定すると、メモリー・プールのしきい値のチェックが無効になります。デフォルトでは、Oracle JVMのすべてのプールのしきい値のチェックは無効になっています。

使用量のしきい値とコレクション使用量のしきい値は、「MBeans」タブで設定されます。たとえば、左ペインのツリーからメモリー・プール「Old Generation」を選択し、このメモリー・プールの使用量のしきい値を20MBに設定して、コレクションのしきい値を1MBに設定した場合、しばらくすると、図2-19に示すように、しきい値交差イベントの数がカウントに表示されます。

図2-19 「MBeans」タブの使用量のしきい値とコレクション使用量のしきい値の設定

図2-19の説明が続きます
「図2-19 「MBeans」タブの使用量のしきい値とコレクション使用量のしきい値の設定」の説明

メモリー・プール「Old Generation」のメモリー使用量が20MBを超えると、JConsoleインタフェースのメモリー・プール「Old Generation」を表すグラフの一部が赤に変わります。赤い部分は、使用済メモリーの一部が使用量のしきい値を超えたことを示します。図2-20に示すように、ヒープ・メモリーを表すグラフも赤に変わります。

図2-20 使用済メモリーが使用量のしきい値を超えた場合のJConsoleインタフェースの「Memory」タブ

図2-20の説明が続きます
「図2-20 使用済メモリーが使用量のしきい値を超えた場合のJConsoleインタフェースの「Memory」タブ」の説明

2.11.6 セキュリティに関する重要な注意点

SSLと認証を無効にしてリモート・リスナーを起動すると、一般的なセキュリティのガイドラインに違反するため、攻撃に対してサーバーが脆弱になります。そのため、本番環境ではこのようなモードを常に使用しないことをお薦めします。このモードは、JDKとの互換性や開発に対してサポートされます。Oracle JVMでJMXを本番で使用する場合は、安全なJMX接続を使用する必要があります。

セキュリティ関連のプロパティ値をdbms_java.set_propertySystem.setPropertyまたはdbms_java.start_jmx_agentに指定する場合、非エコー・リスナーを使用するか、またはOracle Application Serverなどの安全なアプリケーション層から暗号化されたJDBC接続によってこれらを起動します。パスワードは、クリアテキスト・ファイルで保存しないでください。Oracleウォレットを使用して、証明書を作成および管理します。セキュリティを向上させるには、SSL認証のクライアント証明書を使用します。

2.11.7 JMXの共有サーバーの制限事項

専用モード・サーバーでは、セッションの継続期間中のJMX接続がサポートされています。共有サーバーのJMX接続は、通常は単一のコールに限定されます。この制限は、JMX接続が本質的にスレッドやソケットなどのオペレーティング・システム・リソースに依存していることに主に起因しています。これらのリソースは、共有サーバーのコールの境界を越えて存続することはありません。したがって、単一のコールの存続期間中のみのJMX接続が完全にサポートされています。

注意:

この制限はエージェント接続にのみ影響し、それに登録されているMBeanSrverやMbeansの状態には影響しません。MBeanSrverとMbeansの状態、および特にその統計は、共有サーバーのコールの境界を越えて保持されます。

専用サーバー・モードを使用できない場合でも、次のガイドラインに従って、JMX接続を確立し、共有サーバーを監視できます。

  • JMXの管理アクティビティと監視アクティビティがすべて1つのJavaコールで行われるように計画します。

  • DBMS_JAVA.set_propertyファンクションをコールしてcom.sun.management.jmxremote.portプロパティを設定したり、DBMS_JAVA.start_jmx_agentメソッドを使用しないでください(これらのコールによってJMXがアクティブ化され、共有サーバーのコール境界が生成されるためです)。そのかわりに、監視対象のJavaコードから直接oracle.aurora.rdbms.JMXAgent.startOJVMAgentメソッドをコールして、JMXエージェントを起動してください。com.sun.management.jmxremote.portプロパティの値をstartOJVMAgentメソッドに渡す必要があります。com.sun.management.jmxremote.portプロパティ以外のJMX関連プロパティはJMXエージェントを起動するものでなく、任意の方法を使用して設定できます。