Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

Caché ライセンスの管理

この章では、Caché ライセンス・システムの概要を説明します。内容は以下のとおりです。

Important:

Caché 5.1 より前のバージョンのライセンスは、このバージョンの Caché では使用できません。旧バージョンからのアップグレードの際に適切なキーが必要な場合は、インターシステムズのサポート窓口Opens in a new tabにお問い合わせください。

ライセンス付与された Caché ソフトウェアの使用方法は、"使用条件" によって定められています。ただし、その実装に適用される条件は緩和される場合があります。お客様が記述されたライセンス関連のコードが、これら使用条件に適合することを必ずご確認ください。

Caché ライセンスの構成

各 Caché インスタンスには、そのライセンスの機能範囲および現在の使用状況の独立したローカル・ビューが保持されています。各インスタンスはキーへのアクセスを必要とします。したがって、評価版インストールの場合を除き、各インスタンスにライセンス・キー・ファイル (通常の名前は cache.key) をインストールしてアクティブにする必要があります。

マルチサーバ・ライセンスは、同一マシンまたは異なるマシン上で協力関係にあるインスタンス間で共有できます。共有は、マルチサーバ・キーでのみ許可されます。マルチサーバ・ライセンスを使用するには、Caché ライセンス・サーバを 1 つ以上構成し、キーで認証される Cachéライセンス・ユニットを割り当てる必要があります。キーを共有するインスタンスはすべて、同じ 1 つのまたは 1 組みのライセンス・サーバを使用するように構成する必要があります。ライセンス・サーバは、Caché インスタンスが実行されているコンピュータであればどのコンピュータでも実行できます。監視プロセスがライセンス・サーバに更新メッセージを送信し、複数のインスタンスがライセンスを共有している場合は、ライセンス・サーバによってライセンス割り当てが調整されます。

ライセンス・サーバによって、すべてのインスタンスでローカルに保持されているライセンス使用のビューが調整されます。ライセンス・サーバは Caché プロセスではないので、Caché インスタンスが終了しても影響はありません。1 つのライセンス・サーバで、複数のインスタンスを処理できます。したがって、ホスト上で実行される Caché インスタンスの数にかかわらず、各ホストに必要なライセンス・サーバは 1 つのみです。ただし、各 Caché インスタンスのローカルには、認証ライセンス・キー・ファイルのコピーが必要です。

複数のホストで Caché サーバを実行する場合、冗長性を確保するには、複数のライセンス・サーバを構成します。ライセンス・ソフトウェアによって、ライセンス・サーバの 1 つがアクティブ・サーバとして選択されます。その他のサーバは、アクティブ・サーバに障害が発生したときに処理を引き継ぎます。これによって、以前のリリースの Caché に比べ、安定性が向上しています。ライセンス・サーバが停止していても、インスタンスは継続して実行され、ユーザはログインおよびログアウトできます。また複数のインスタンスをサポートしているとき、ライセンス・サーバが停止しても稼動を継続できます。ライセンス・サーバの構成時に、ライセンス・サーバをホストするサーバを決定します。実行するホストの台数は任意ですが、4 台以上では多すぎます。ライセンス・サーバは、実行中のインスタンスによって起動されるので、Caché インスタンスが常に稼動しているシステムで実行するように構成する必要があります。

各インスタンスに、適切な独自の cache.key ファイルのコピーがあり、そのキーで認証されるすべてのインスタンスが同じライセンス・サーバを使用している限り、ライセンス・キーが異なり、それぞれ異なるプラットフォーム上で実行される複数のインスタンスで同じライセンス・サーバを使用してライセンスを調整できます。ただし、複数のライセンス・キーのライセンス数が合計されることはありません。異なるライセンス・キーを使用する Caché インスタンスでは、ライセンス数の共有は行われません。また、異なるライセンス・キーを使用して 2 つのインスタンスにログインしたユーザは、それぞれのキーに由来するそれぞれのライセンスを使用することになります。

ライセンス・サーバの構成

管理ポータルを使用してライセンス・サーバを構成するには、次を実行します。

  1. システム, ライセンス, ライセンスサーバ ページに移動します。

  2. これによって、このインストールに対して構成されたライセンス・サーバのリストが表示されます。このページから、既存のサーバ定義を編集または削除したり、新しいサーバを追加できます。

  3. ライセンス・サーバを構成するには、[追加] をクリックします。

  4. [名前] ボックスにライセンス・サーバの名前を、[ホスト名/IPアドレス] ボックスに実行のホストの IP アドレスを、[ポート] ボックスにライセンス・サーバが使用する UDP ポート番号を入力します。

    Note:

    この名前によって構成内のライセンス・サーバが特定されるため、構成内で一意にする必要があります。

    ライセンス・サーバは、そのライセンス・サーバが実行されているホストの IP アドレスと、通信に使用するポートによって定義されます。ドット十進法形式 (192.29.233.19) や、アルファベット形式 (mycomputer.myorg.com) で IP アドレスを入力できます。IPv6 を有効にした場合は、コロン区切りの形式で IPv6 アドレスを入力できます (2001:fecd:ba23:cd1f:dcb1:1010:9234:4085)。ライセンス・サーバのポート番号は、102465535 の間の数値にする必要があります。既定のポート番号は 4001 です。冗長ライセンス・サーバのポート番号は、実行されているホストが異なる場合、一意にする必要はありませんが、その IP アドレスで使用されるすべてのポート番号とは異なる数値にする必要があります。

  5. リストされたライセンス・サーバの名前をクリックして、前の手順に示した情報に更新します。

  6. 構成からライセンス・サーバを削除するには、[削除] をクリックします。

Note:

ライセンス・サーバを追加または削除した後、変更を有効にするために Caché インスタンスを再起動することが必要になる場合があります。

インスタンスに対して複数のライセンス・サーバが構成されている場合、アクティブ・ライセンス・サーバの行には、影が付いています。

次のように $System.License.ShowServer メソッドを使用してどのライセンス・サーバがアクティブであるかを表示することもできます。

 Do $System.License.ShowServer()
Note:

複数のインスタンスすべてで、同一のライセンス・サーバのアドレスとポートが構成されると、それらすべてのインスタンスでは同じライセンス・サーバが使用されます。複数のインスタンスに同一のキーがロードされると、それらのインスタンスでそのキーが共有されます。インスタンスごとに異なるキーがロードされると、ライセンス・サーバでは、インスタンス・セットのそれぞれがキー別に処理されます。

ライセンス・キーの有効化

Caché では、ライセンス・キーを使用して、登録されたサイトで適切な操作を行い、使用可能な容量を定義し、Caché 機能へのアクセスを制御できるようにします (評価版インストールには、ライセンス・キーは必要ありません)。ライセンス・キーは、通常、cache.key という名前のライセンス・キー・ファイルの形式で提供されます。

Caché をインストールした後に、以下の手順を使用して、ライセンス・キーを有効にします。同じ手順を使用して、インストールされているすべてのインスタンスで新しいライセンス・キーをいつでも有効にできます (キーのアップグレード)。管理ポータルからアクセスできる場所にあるライセンス・キーを有効にできます。有効化の一環として、ライセンス・キーは、インスタンスの管理者ディレクトリ (install-dir/mgr) にコピーされます。ライセンス・キーに、事前に名前が付いていない場合は、cache.key という名前になります。

Note:

Windows インストール中にライセンス・キーを選択することもできます ("Caché インストール・ガイド" の “Microsoft Windows への Caché のインストール” を参照してください)。この場合、ライセンスは自動的に有効になり、ライセンス・キーは cache.key という名前でインスタンスの管理者ディレクトリにコピーされます。ここで説明する有効化の手順は必要ありません。

また、このセクションでは、ライセンス・トラブルシューティングおよびすべてのライセンス・ユニットが使用中の場合にオペレーティング・システムのコマンド行からライセンスをアップグレードする方法についても説明しています。

ライセンス・キーを有効にするには、以下の手順を使用します。

  1. システム, ライセンス, ライセンスキー ページに移動します。現在のアクティブなライセンス・キーの情報が表示されます。アクティブなライセンスがない場合は、[顧客名: ライセンス不明または読み取り不可能] などの表記で示されます。このページにある [印刷] ボタンを使用すると、表示されている情報を簡単に印刷できます。

  2. [ライセンスキー有効化] をクリックし、有効にするライセンス・キー・ファイルを参照します (通常は cache.key という名前ですが、必ずしもその必要はありません)。ファイルを選択すると、ファイルに関する情報が表示され、目的の容量が提供されることや有効期限が適切であることなど、正しいライセンス・キーかどうかを有効にする前に検証できます。 キーが有効でない場合は、エラー・メッセージにそのことが表示されます。現在アクティブなライセンスがある場合は、現在のライセンスと選択されているライセンスの情報が並んで表示されます。ライセンス・キーを適用にするために有効にした後にインスタンスを再起動する必要がある場合は、そのことが通知され、その理由が表示されます。このダイアログにある [印刷] ボタンを使用すると、現在アクティブなライセンスと選択した新しいライセンス・キー両方の情報を簡単に印刷できます。

  3. [アクティベート] をクリックして、新しいライセンス・キーを有効にします。新しいキーは cache.key という名前で、インスタンスの管理者ディレクトリにコピーされ、前のライセンス・キー (ある場合) を上書きします。確認ダイアログに、必要に応じてインスタンスを再起動することが表示され、新しいライセンスが有効にする機能が現在のライセンスよりも少ない場合は、そのことが警告されます。

通常は、インスタンスを再起動する必要はありませんが、ライセンス・キーをアップグレードするときには制約があります。ライセンス・タイプをパワー・ユニットから他に変更する場合、新規のキーは自動ではアクティベートされません。ただし、このような変更は極めて稀です。

ライセンスのアップグレードでは、一般メモリ・ヒープ (gmheap) 領域のメモリ量が消費されるという制約もあります。gmheap 領域がない場合、ライセンス・テーブルのエントリ数は拡張できません。gmheap 領域にライセンス・アップグレードに使用できる十分な空間がある場合は、メッセージは console log に書き込まれます。[gmheap] 設定のサイズは、管理ポータルの システム, 構成, メモリ詳細設定 ページで増やせます。

新しいライセンス・キーが既存のライセンス・キーよりも、少なくとも 1000 個の 64 KB ページ分多くの gmheap 領域を消費する場合は、新しいライセンス・キーを完全にアクティブ化するために、Cache インスタンスを再起動する必要があります。ただし、Unicode システムの場合は各ページが 227 個のライセンスを意味し、8 ビット・システムではそれ以上の数になるため、この状況が発生することは、まずありません。

ライセンス・トラブルシューティング

ライセンスを入力して Caché を再起動した後、1 ユーザしかログインできない場合には、管理ポータルを使用して確認してください。システム, ライセンス使用量 ページの [プロセス単位].を選択すると、実行中のプロセスの数が表示されます。ライセンス情報の表示には、ポータルの システム, ライセンス, ライセンスキー ページを使用することもできます。"ライセンス・キーの有効化" を参照してください。キーが無効の場合、[CustomerName] フィールドにその説明が表示されます。

また、ライセンス・エラー・メッセージは、コンソール・ログおよびシステム・モニタ・ログで確認することもできます。これらのログは、それぞれポータルの システム, システムログ, コンソールログ ページと システム, システムログ, システム・モニタ・ログ ページで表示できます ("Caché 監視ガイド" の “管理ポータルを使用した Caché の監視” の章にある "ログ・ファイルの監視" のセクションを参照)。Caché システム・モニタは、ライセンスの有効期限の警告とアラートをこれらのログに書き込み、Caché ヘルス・モニタは、ライセンス取得のアラートと警告を書き込みます。ライセンス制限が超過されると、ライセンス・モジュールごとのコンソール・ログに警告が書き込まれます。Caché アプリケーション・モニタでは、ライセンス・メトリックベースのアラートを構成して、電子メール通知を送信したり、通知メソッドを呼び出したりできます。これらの監視ツールの詳細は、"Caché 監視ガイド" の “Caché システム・モニタの使用” を参照してください。

$System.License.Help では、ライセンス問題のトラブルシューティングに使用できる方法のリストが表示されます。

 Do $System.License.Help()

このドキュメントでは、これらのメソッドの多くについて説明しています。ライセンスの問題により、ターミナル・セッションを確立できない場合は、管理者としてコマンド・プロンプトを実行して、install-dir/bin に移動します。次に、以下のコマンドを使用して、ライセンス問題のトラブルシューティング用にコマンド・プロンプト・ウィンドウで別のターミナル・セッションを確立します。

cache -s ..\Mgr -B

オペレーティング・システムのコマンド行からのライセンスのアップグレード

%SYSTEM.License.Upgrade()Opens in a new tab メソッドにより、installdir\mgr ディレクトリにコピーされた新しいライセンス・キーがアクティブ化されます。すべてのライセンス・ユニットがユーザによって消費され、ターミナル・ウィンドウを開くことができない場合、以下のようにして、このメソッドをコマンド行から実行して容量の大きい新しいライセンス・キーをアクティブ化できます。

csession <instancename> -U %SYS '##Class(%SYSTEM.License).Upgrade()'

csession コマンドの詳細については、このガイドの “Caché 複数インスタンスの使用法” の章で "Caché インスタンスの接続" を参照してください。

ライセンスの機能範囲と使用の決定

現在使用されているライセンス数と使用者はどのようにして確認できるのでしょうか。%SYSTEM.LicenseOpens in a new tab クラスが、Caché ライセンス・アプリケーション・プログラミング・インタフェース (API) に対するインタフェースを提供します。これの多数のメソッドや関連クエリを使用してライセンスの機能範囲および現在の使用状況を問い合わせることができます。特殊な $System オブジェクトを使用して、これらのクラス・メソッドを実行できます。詳細は、"インターシステムズ・クラス・リファレンス" の %SYSTEM.LicenseOpens in a new tab クラスのエントリを参照してください。

また、以下の表に示すように、管理ポータルの システム, ライセンス使用量 ページを使用してメソッドを実行することもできます。

システム, ライセンス使用量 のリンク ライセンス・クエリ
要約 Summary()$System.License.ShowSummary によって示されるライセンスの使用状況の要約を返します。
プロセスごとの使用 ProcessList()$System.License.DumpLocalPID によって示されるオペレーティング・システム・プロセス ID (PID) 別にライセンスの使用状況を返します。
ユーザごとの使用 UserList() — ユーザ ID 別にライセンスの使用状況を返します。
配布ライセンス使用状況 Summary()$System.License.ShowSummary[配布ライセンス使用状況] セクションに示されているように、ユーザ別に並べ替えて配布ライセンスの使用状況を返します。(ライセンス・サーバが接続されていない場合、リンクは無効になります。)

以下のクラス・メソッドを使用して情報を表示したり、ライセンス・データベースをファイルにダンプしたりすることもできます。

$System.License.CKEY は、キーを表示します。このサブルーチンは、互換性のために保持されている ^CKEY プログラムによって呼び出されます。

 Do $System.License.CKEY()

$System.License.ShowCounts は、ローカル・システムの共有メモリに記録されているライセンスの使用状況の要約を示します。

 Do $System.License.ShowCounts()

$System.License.ShowServer は、アクティブなライセンス・サーバのアドレスとポートを示します。

 Do $System.License.ShowServer()

REST ベースのアプリケーションを開発した場合、ライセンスは使用によって消費されます。この事態が発生しないようにするには、確立可能な CSP ゲートウェイ接続の数を構成します。[CSPゲートウェイ管理] セクションの SMP から、以下の操作を実行します。

  1. [サーバ接続] に移動します。

  2. [状態なしパラメータ] を選択します。

  3. サーバ側ログインに許容されたライセンスよりも 2 または 3 少ないライセンス数を [最大] に設定します。

Note:

アプリケーションのサーバ側のニーズによっては、この設定の調整が必要になることがあります。

これを実行することで、利用可能なすべての接続がビジーになり、新規の要求は拒否されずにキューに入れられます。ライセンス数の超過による拒否は現れなくなります。ボリュームの増加に伴って、クライアントの応答時間は遅くなります。そのような状況は、追加ライセンスの購入が必要なことを示しています。

以下のセクションでは、ライセンス情報を表示する他のいくつかのメソッドについて説明します。

ローカル・ライセンス情報を表示するメソッド

以下のサブルーチンは、ローカルのインスタンス共有メモリに格納されているライセンス・テーブルのコンテンツをダンプします。通常は、クライアントを識別します。

$System.License.DumpLocalAll は、現在のディレクトリの all.dmp ファイルにすべてのローカル・ライセンス・テーブル・エントリをダンプします。

 Do $System.License.DumpLocalAll()

all.dmp ファイルのコンテンツの例を以下に示します。

License Capacity = 5, Current use = 2, Units Remaining = 3

   0)  User ID = 127.0.0.1, Connections = 2, CSP Count = 0, Time active = 90
   1)  User ID = 192.9.202.81, Connections = 1, CSP Count = 0, Time active = 49
   2)  free
   3)  free
   4)  free

$System.License.DumpLocalInUse は、現在のディレクトリの inuse.dmp ファイルに、使用中のすべてのローカル・ライセンス・テーブル・エントリをダンプします。

 Do $System.License.DumpLocalInUse()

inuse.dmp ファイルのコンテンツの例を以下に示します。

License Capacity = 5, Current use = 2, Units Remaining = 3

$System.License.DumpLocalPID は、現在のディレクトリの piduse.dmp ファイルに、ローカル・ライセンス・テーブルの使用状況をプロセス ID 別にダンプします。

 Do $System.License.DumpLocalPID()

piduse.dmp ファイルのコンテンツの例を以下に示します。

PID     Process LID     Type    Con     MaxCon  CSPCon  LU      Active  Grace

592     System                  0       0       0       0       0       0
2816    System                  0       0       0       0       0       0
688     System                  0       0       0       0       0       0

ライセンス・サーバ情報を表示するメソッド

以下のサブルーチンは、ライセンス・サーバによって保持されているライセンス・テーブルのコンテンツをダンプします。出力ファイルは、アクティブなライセンス・サーバが実行されているホスト上の指定ディレクトリにあります。

$System.License.ShowSummary は、ライセンス・サーバでのライセンス情報の要約を表示します。Distributed license use セクションには、ライセンス・サーバによって現在サポートされているすべての Caché インスタンスのライセンス使用状況がまとめて表示されます。Local license use セクションには、プログラムが実行されている 1 つの Caché インスタンスに対するライセンス使用状況のビューが表示されます。

 Do $System.License.ShowSummary()

$System.License.DumpServer は、ライセンス・サーバを実行しているホスト上のファイル dumpserver.txt に、このルーチンを実行したサーバに関連するライセンス・サーバ・データベース情報をダンプします。

 Do $System.License.DumpServer()

$System.License.DumpServers は、ライセンス・サーバを実行しているホスト上のファイル dumpservers.txt に、既知のすべてのサーバに対するライセンス・サーバ・データベース情報をダンプします。

 Do $System.License.DumpServers()

$System.License.DumpKey は、ライセンス・サーバを実行しているホスト上のファイル dumpkey.txt に、このインスタンスによって使用されるキーとそれを共有するインスタンスをダンプします。

 Do $System.License.DumpKey()

$System.License.DumpKeys は、ライセンス・サーバを実行しているホスト上のファイル dumpkeys.txt に、すべてのキーを、それらを使用するインスタンスとクライアントを示して、ダンプします。

 Do $System.License.DumpKeys()
Note:

ローカル・ライセンス・メソッドによって表示された情報は、ライセンス・サーバ・メソッドによって表示された情報よりも最新であることに注意してください。これは、ライセンス・サーバは定期的に更新されるだけですが、ローカル・データはリアルタイムで更新されるためです。

ログインはローカルで制御されるため、ライセンスの数が上限値を一時的に上回ることは可能ですが、ライセンス・サーバで制限が強制されます。各インスタンスは、インスタンス共有メモリ内で維持されるローカル・ライセンス・テーブルに基づいて、ログインを許可または拒否します。各インスタンスからは、ローカル・ライセンス・テーブルに加えられた変更を説明する定期的な更新がライセンス・サーバに送信されます。すべてのインスタンスのライセンスの使用の合計が制限を超えると、ライセンス・サーバは各インスタンスからの更新メッセージに対して否定応答を送信します。

この否定応答を受け取ると、これ以上のライセンス・ユニットは使用できないため、各インスタンスでは新しいログインが拒否されます。開始しようとしている Caché プロセスのライセンス・ユーザ ID が、現在のいずれのプロセスのライセンス・ユーザ ID にも一致しない場合、そのログインは新しいものであると見なされます。この状態は、すべてのインスタンスによる使用の合計が許可された上限を下回るまで存続し、その時点で、ライセンス・サーバはインスタンスの更新に対して肯定応答の送信を開始します。これにより、インスタンスのそれぞれで、新しいログインが許可されます。

ユーザの認識

Caché ライセンス・システムは、個々のユーザを識別し、ユーザごとに 1 つのライセンス・ユニットを割り当てます。1 人のユーザは、1 つのライセンス・ユーザ ID (IP アドレス、ユーザ名、CSP セッション ID、あるいはユーザの接続方法による他の識別条件) によって識別されます。

1 人のユーザによって、または 1 人のユーザに対して開始された複数のプロセスは、ユーザごとの最大プロセス数に達するまで 1 つのライセンス・ユニットを共有します。プロセス数がこの最大値を超えた場合、移行が発生し、Caché はそのユーザ ID に対して 1 プロセスごとに 1 ライセンス・ユニットを割り当て始めます。1 つのユーザ ID に関連付けられているプロセスの数が最大数を越える場合、システムは複数のユーザが何らかの中間媒体 (ファイアウォール・システムなど) を通じて Caché にアクセスしていると仮定し、追加のライセンス・ユニットを要求します。(Job コマンドで開始したプロセスは、そのコマンドを呼び出したユーザ ID の下でカウントされます。)

そのユーザ ID のプロセス数が最大値を下回るようになった場合でも、Caché は、そのユーザ ID に対してプロセスごとに 1 ライセンス・ユニットの割り当てを継続します。そのユーザ ID による接続がすべて閉じられ、そのユーザ ID のプロセスがなくなった場合にのみ、ライセンス割り当ては、そのユーザ ID に対して 1 ユニットになるようにリセットされます。

インターシステムズは、大半のアプリケーションにおいて名前でユーザを識別できるようにする予定です。これにより、クライアント IP アドレスに基づく既定のユーザ ID、CSP セッション ID、および接続から派生した他のユーザ ID の使用に関連する問題が解決されます。

例えば、ファイアウォールやターミナル・サーバ・ソフトウェアを使用すると、Caché は接続中のユーザの区別ができず、そのために最大接続移行ルールに依存することになります。同じクライアントから CSP と Caché Direct などの混合接続を使用する場合も、自動 ID 作成を使用して適切にユーザをカウントできなくなります。

ユーザ名をライセンス識別子として使用すると、これらの問題は発生しません。組織が新たにアクセス要件や監査要件を導入するにつれて、ユーザを正確に識別する必要性は高まります。ユーザ認識を使用してライセンス規約を制御することは、時代の流れから考えても当然の結果と言えるでしょう。

このセクションでは、以下のトピックについて説明します。

ライセンス・ログイン

ライセンス・ログインには、自動ログインと明示ログインの 2 つのモードがあります。既定は自動ログインです。ライセンス・システムは、クライアントの IP アドレスを識別して、そのアドレスをライセンス・ユーザ ID として使用します。クライアントが IP を使用してサーバに直接接続する場合、これは正確に機能します。しかし、ファイアウォールがクライアントとサーバの間にある場合は、すべてのクライアントが同じ IP アドレスを持つように見えるため、うまく機能しません。また、ターミナル・サーバが telnet プロトコルを使用している場合、Caché にはすべてのターミナル・サーバ・ポートが 1 つの IP アドレスとして認識されるため、自動ログインではユーザが区別できません。すべての接続が同じアドレスからのものであるため、すべての接続が同じユーザ ID を持ちます。ユーザがファイアウォールを経由して接続したり、ターミナル・サーバから telnet 転送を使用する場合は、明示ログインを使用してください。

ネットワーク転送に IP を使用していない場合は、IP アドレスをライセンス・ユーザ ID として使用できません。この場合、ライセンス・システムは、その他のさまざまなソースをユーザ ID として使用します。UNIX®/Linux システムで at デーモンによって開始されたバッチ・プロセスには、また別の問題があります。このようなプロセスは、ユーザと関連していないのでライセンス・ユニットを共有しません。このようなプロセスでは、プロセス ID がライセンス識別子として使用されます。

明示ログインが選択されているときは、Caché ではユーザ ID の自動検出は試行されません。アプリケーションは $System.License.Login(UserIdentifier) メソッドを明示的に呼び出して、ライセンス・ユーザ ID を提供し、ライセンスを取得する必要があります。

明示ログインは、$System.License.DeferUserIdentification([0 or 1]) 関数を呼び出すことで使用可能になります。この呼び出しは、システムの起動時に ^%ZSTART ルーチンの SYSTEM エントリ・ポイントから実行できます。引数値が 1 の場合、ライセンスの取得はログイン時に延期され、明示ログインを実行できます。引数値が 0 の場合、ライセンスの取得はプロセス開始時に自動で行われます。

ログインが延期されたとき、ユーザは即時にライセンス・ログイン・メソッドを呼び出す必要があります。ライセンス・ログインを実行していないプロセスは、最初の 4000 個の Caché コマンドで停止し、その後 1000 個の Caché コマンドごとに停止します。

自動ログインが処理できない場合は、明示ログインを使用します。自動ログインに構成されている場合でも、いつでも $System.License.Login(UserIdentifier) を呼び出して、明示的にユーザのライセンスを識別できることを覚えておいてください。

ユーザ名ライセンス

$USERNAME の値を使用してライセンス付与するユーザを識別できます。これにより、個々のユーザの確実な識別に IP アドレスが使用できない状況でも、より正確なカウントが可能です。

%SYSTEM.LicenseOpens in a new tab クラスの $SYSTEM.License.UserNameLicensing() メソッドを使用してライセンス・ユーザ ID を指定する方法を変更できます。既定では、Caché ではクライアント IP アドレスを使用して、ライセンス追跡サブシステムに対してユーザを識別します。最小ではない初期セキュリティ設定で Caché をインストールした場合は、各プロセスにはユーザ ID ($USERNAME) があります。$SYSTEM.License.UserNameLicensing() システム・メソッドを呼び出して、Caché ライセンス・サブシステムで、ライセンス・ユーザ識別子として $USERNAME を使用するようにできます。

$SYSTEM.License.UserNameLicensing() メソッドはシステムの状態を変更します。このメソッドを SYSTEM^%ZSTART から呼び出して、インスタンスの起動時にユーザ名ライセンスを有効にすることができます。このメソッドには、以下の関数があります。

  • $SYSTEM.License.UserNameLicensing(1)$USERNAME ベースのライセンスを有効にし、前の状態を返します。

  • $SYSTEM.License.UserNameLicensing(0)$USERNAME ベースのライセンスを無効にし、前の状態を返します。

  • $SYSTEM.License.UserNameLicensing() — 現在の状態を返します。特殊なログイン規則を使用するライセンス・タイプの引数で呼び出された場合は、エラーを返す可能性があります。

以下の例は、ユーザ名ライセンスが現在有効であるか無効であるかを示します。

 Write " Username Licensing",!
 Write " 1-enabled, 0-disabled",!
 Write $SYSTEM.License.UserNameLicensing(),!

以下の例は、ユーザ名ライセンスを有効にし、その後無効にします。

 Set RC=$SYSTEM.License.UserNameLicensing(1)
 Write RC,!
 Set RC=$SYSTEM.License.UserNameLicensing(0)
 Write RC

詳細は、"Caché ObjectScript リファレンス" の "$USERNAME" 特殊変数を参照してください。

ライセンス・ログインの特別な考慮事項

ライセンス・ログインに関して、以下に示す特別な考慮事項に注意してください。

  • ログインにおいて、CSP 接続は特殊です。インターシステムズは、CSP アプリケーションでは %CSP.SessionOpens in a new tab と同様のメソッド %CSP.Session.Login を使用して、ユーザのライセンスを識別することを強くお勧めします。そうしない場合、ライセンス・ユーザ ID として CSP セッション ID が使用されますが、各セッションで 1 つのライセンス・ユニットを消費するので、多くの場合は不適切な設定となります。例えば、ユーザは複数のブラウザ・ウィンドウを同時に開くことができます。また、ユーザは複数の経路 (CSP、ターミナル・ウィンドウ、および Visual Basic クライアントからの Caché Direct 接続) を使用して接続できます。この場合、%CSP.SessionOpens in a new tab メソッド %CSP.Session.Login(username, password) を使用して、セッションに対する明示的なライセンス・ログインを実行できます。

  • 匿名 SOAP 要求 (Caché のログインを必要としない SOAP 要求) は最短 10 秒間で 1 ライセンスを消費しますが、ユーザが特定される SOAP 要求は “ユーザ要求“ と見なされるため、ライセンスが必要です。SOAP セッションの実装の詳細は、"Caché での Web サービスおよび Web クライアントの作成" の "SOAP セッション管理" を参照してください。

  • Caché は、バックグラウンド・プロセスを区別したり、これらのプロセスを個別にカウントすることはありません。ユーザ・プロセスが他のプロセスを開始する場合、その子プロセスはユーザの最大許容プロセス数全体に対し 1 つとしてカウントされます。

  • 管理ポータルの システム, タスクマネージャ ページにある [新規タスク] オプション (このドキュメントの “Caché の管理” の章の "タスク・マネージャの使用" を参照) を使用して作成した各タスクは、[タスクを実行するユーザ] セレクタで指定した Caché のユーザ名と、ホスト IP アドレスに変換されるループバック IP アドレス (127.0.0.1) に基づいたライセンス・ユーザ ID で 1 つのライセンス・ユニットを消費します。これにより、特定のユーザとして別々のホスト上で実行されるタスクが、そのユーザの最大許容プロセス数 ("ユーザの識別" を参照) に対して、確実に合計されるようになります。

  • ユーザの起動ルーチン (^%ZSTART または従来の ^ZSTU、および ^ZMIRROR) により開始するプロセスも、特別なケースです。このルーチンを実行中のプロセスには、親プロセスがありません。したがってログインは、このルーチンが呼び出される前に、そのユーザ ID User Startup に対して実行されます。このルーチンから Job コマンドによって開始されたプロセスは、このユーザ ID を持ちます。必要な場合は、ルーチンから $System.License.Login(UserId) を呼び出して、ユーザ ID を変更できます。これは、このルーチンで開始するバックグラウンド・プロセスが maxconn より 1 つ少なく、消費するライセンスが 1 つで済むことを意味します。ライセンス条件に従って、これらのプロセスに個別のライセンスが必要な場合 (例えば、個別のライセンスが必要な実験装置の一部を起動している場合など)、適切なユーザ ID に対するライセンスを取得するために $System.License.Login(UserId) を呼び出す必要があります。

アプリケーション・ライセンス

インターシステムズ・アプリケーション・パートナーは、アプリケーション・ライセンスを使用して、独自のライセンスの用途に合わせて Caché のライセンス容量を活用できます。Caché は、Caché/Ensemble および InterSystems アプリケーション・ランセンスと同じ方法でアプリケーション・ライセンスを管理します。使用カウントを管理して必要に応じてユーザ・ライセンスを取得および返却します。プロセスまたは CSP セッションによって消費されるアプリケーション・ライセンスは、プロセスが終了したり、停止したり、プロセス・テーブルから削除された場合や CSP セッションがタイムアウトしたり削除された場合に、プロセスまたはセッションによって消費される Caché ライセンスと共に自動的に解放されます。

アプリケーション・ライセンスは、標準の .ini 形式のファイルまたはファイルのセクションで、アプリケーションを識別するセクション・ヘッダといくつかの keyword=value ペアを含みます。このペアは、ライセンス内で一意であり、ライセンス付与された機能を表します。適切にフォーマットされたアプリケーション・ライセンスは、実行時にアプリケーションによって Caché にロードできます。

アプリケーション・ライセンス API には、アプリケーションがユーザやプログラムの代わりにライセンスを消費および返却したり、使用中のライセンス数や使用可能なライセンス数などのアプリケーションと機能のライセンスに関する情報を取得したりできるメソッドやクエリが含まれます。

アプリケーション・ライセンスのロード

アプリケーションの実行時に $SYSTEM.License.LoadAppLicenseFile メソッドを使用すると、どのようなアプリケーション・ライセンスでも Caché インスタンスでロードしてアクティブ化できます。このメソッドの詳細は、%SYSTEM.LicenseOpens in a new tab のクラスリファレンスに記載されています ("アプリケーション・ライセンス API" を参照)。この方法でロードされたアプリケーション・ライセンスは、アクティブな Caché ライセンスには関連付けられませんが、Caché インスタンスによって個別に追跡されます。

各アプリケーション・ライセンスは、[AppName] で始まるセクションに含まれます。アプリケーション名 (AppName) には、ピリオド (.) は使用できません。ライセンスの残りは、ライセンス付与された機能を表す、繰り返されない一連の keyword=value ペアで構成されます。必要なフォーマットの詳細は、$SYSTEM.License.LoadAppLicenseFileOpens in a new tab メソッドのドキュメントを参照してください。

以下のアプリケーション・ライセンスのサンプルでは、keyword=value のペアを使用して複数のアプリケーション機能に対してライセンス付与されるユーザの数を制限し、すべてのユーザに対して Extended Lab Reports 機能を有効にします。

[BestLabApplication]
Lab Users=50
Lab Administrators=2
Lab Devices=5
Extended Lab Reports=Enabled

アプリケーション・ライセンスには、改ざんを防ぐ Caché の保護は適用されませんが、カスタムのアプリケーション・コードによって保護できます。例えば、チェックサムをキーワード・セクションに埋め込み、有効化する前にアプリケーションによって検証できます。

アプリケーション・ライセンス API

%SYSTEM.LicenseOpens in a new tab クラスは、アプリケーション・ライセンスを管理するための以下のメソッドを提供します。

  • %SYSTEM.License.LoadAppLicenseFile

    ファイルからアプリケーション・ライセンスをロードします。

  • %SYSTEM.License.GetAppLicense

    現在ロードされているアプリケーション・ライセンスのコンテンツを keyword=value のペアの文字列として返します。

  • %SYSTEM.License.GetAppLicenseMaxUsed

    ライセンスがロードされてからアプリケーション・ライセンス・キーワードに関連付けられている消費済みライセンス・ユニットの最大数を取得します。

  • %SYSTEM.License.GetAppNames

    現在インターシステムズ、保護/非保護のアプリケーション・ライセンス、またはこれらの組み合わせによってライセンス付与されているアプリケーションの名前を返します。

  • %SYSTEM.License.IsAppLicensed

    アプリケーションまたは機能がライセンス付与されているか、保護/非保護のアプリケーション・ライセンスのどちらによって付与されているかを示します。

  • %SYSTEM.License.TakeApplicationLicense

    アプリケーションと機能のライセンスを消費します。現在のプロセスのライセンス・ユーザ ID (または CSP の場合はセッション・ライセンス ID) は、消費されているアプリケーション・ライセンスに関連付けられているユーザ識別子です。

  • %SYSTEM.License.ReturnApplicationLicense

    現在のプロセスのライセンス・ユーザ ID または CSP の場合はセッション・ライセンス ID に関連付けられているライセンス・リソースを含むアプリケーション・ライセンスおよび機能のライセンスを解放します。

  • %SYSTEM.License:ApplicationServerLogin

    現在ロードされているアプリケーション・ライセンスを使用しているインスタンスの数が、キーで指定した制限を超過しているかどうかを示します。

  • %SYSTEM.License.GetAppLicenseValue

    アプリケーション・ライセンス・キーワードに関連付けられている値を取得します。

  • %SYSTEM.License.GetAppLicenseMin

    アプリケーション・ライセンス機能キーワードに関連付けられている使用可能なライセンスの最低数を取得します。キーワードに関連付けられている値は数値です。

  • %SYSTEM.License.GetAppLicenseFree

    アプリケーション・ライセンス機能キーワードに関連付けられている使用可能なライセンスの最大数を取得します。キーワードに関連付けられている値は数値です。

  • %SYSTEM.License.GetProcessAppsTaken

    プロセス PID に対して取得されているアプリケーション・ライセンス・タイプの $List を取得するか、なしの場合は "" を取得します。

  • %SYSTEM.License:ApplicationUserList

    ユーザ ID によってライセンスとアプリケーション・ライセンスを返します。

FeedbackOpens in a new tab