記事 Megumi Kakechi · 2022年5月6日 1m read

これは、InterSystems FAQサイトの記事です。
InterSystems製品では、永続データは後で高速にランダムアクセスできるように、ある一定の規則に沿ってキー順にソートされて格納されます。

新しいノードが追加された場合、ノードが削除された場合、データの長さが変更された場合など、データの構造変化が起こる度に、その並び順を維持できるよう、また無駄な領域が発生しないように動的なデータの配置変えを実施します。

従って、常にデータはきれいに整理された状態で格納されるため、無駄な空き領域が発生しません。

これらの並べ替えの作業は、書き換えのコストのかかる処理ですが、InterSystems製品では、これらの処理はなるべくメモリ(キャッシュ)上で実行し、ディスクI/Oを軽減することにより、性能の劣化を抑えています。

0
0 189
記事 Megumi Kakechi · 2022年5月6日 1m read

これは、InterSystems FAQサイトの記事です。
InterSystems IRIS Data Platform(以下IRISと表記)はSQLのサポートをはじめ、リレーショナルデータベースとの高い互換性を有します。

さらに、IRISは多次元データエンジンをベースにしており、通常のリレーショナルデータベースシステムに比べて柔軟なデータ構造を持つことができ、一般的にパフォーマンス、スケーラビリティ、データ保守性に優れています。

また完全なオブジェクト指向をサポートしており、Javaなどのオブジェクト指向開発環境との親和性という点でも優れています。

0
0 364
記事 Megumi Kakechi · 2022年4月17日 4m read

InterSystems IRIS 2021.2 のバージョンより、Embedded Python を使用できるようになりました。
Embedded Python については、「Embedded Pythonを簡単にご紹介します」の記事をぜひご覧ください。

こちらでは、Embedded Python を使用して Excel のデータを IRIS グローバルに出力する方法をご紹介します。

最初に、irispip コマンドで必要なライブラリをインストールします。
今回は、pandas、xlrd、openpyxl の3つのライブラリをインストールします。

>cd C:\InterSystems\IRIS\bin
C:\InterSystems\IRIS\bin>irispip install --target C:\InterSystems\IRIS\mgr\python pandas
C:\InterSystems\IRIS\bin>irispip install --target C:\InterSystems\IRIS\mgr\python xlrd
C:\InterSystems\IRIS\bin>irispip install --target C:\InterSystems\IRIS\mgr\python openpyxl


Excel ファイルは次のような test.

2
1 916
記事 Megumi Kakechi · 2022年3月31日 1m read

これは、InterSystems FAQサイトの記事です。


Windowsでは、変更することはできませんが、Unix系プラットフォームでは、iris rename コマンドを使用することで変更できます。

iris rename instname(現インスタンス名) newname(新インスタンス名)


iris rename コマンドの詳細は、以下ドキュメントをご参照ください
iris コマンドについて
 

0
0 260
記事 Megumi Kakechi · 2022年3月23日 3m read

これは、InterSystems FAQサイトの記事です。
ジャーナル・ファイルの処理でジャーナルファイルに記録されるタイプが、それぞれどのような状況下で記録されるのかについて説明します。

処理 (管理ポータルの)タイプ 説明 具体的にどのような処理で記録?
0
0 292
記事 Megumi Kakechi · 2022年3月3日 3m read

これは、InterSystems FAQサイトの記事です。
ある処理において、データを無期限に保存する必要がなくグローバルの強力な性能が必要になる場合に、IRISTEMP/CACHETEMP データベースに保存される一時グローバルが使用されます。
IRISTEMP/CACHETEMPデータベースはジャーナルされないので、一時グローバルの使用ではジャーナルファイルは作成されません。

IRISTEMP/CACHETEMP データベースは、システムで一時ストレージ用に使用され、ユーザも同じ用途で使用することができます。

一時グローバルとIRISTEMPデータベースの詳細については、以下のドキュメントをご覧ください。
一時グローバルと IRISTEMP データベース


一時グローバルとして使用されるグローバルには以下のようなものがあります。

1. システムテンポラリグローバル(^IRIS.Temp*、^%cspSession、^CacheTemp*、^mtemp* など)
2. ユーザが設定したIRISTEMP/CACHETEMPへのマッピングによる一時グローバル
3. プロセスプライベートグローバル (^||name、^|"^"|name、^["^"]name、^["^",""]name など

4.

0
1 494
記事 Megumi Kakechi · 2022年2月23日 1m read

これは、InterSystems FAQサイトの記事です。
現ジャーナルファイル名の取得は、ジャーナリング API を利用します。

##class(%SYS.Journal.System).GetCurrentFileName()


現ジャーナルファイルの使用量bytesの取得は、ジャーナリング API を利用します。

##class(%SYS.Journal.System).GetCurrentFileOffset()


実行例は以下の通りです。

%SYS>Write ##class(%SYS.Journal.System).GetCurrentFileName()
c:\journal\20110223.001
%SYS>Write ##class(%SYS.Journal.System).GetCurrentFileOffset()
1213012

あわせて、以下の関連記事も是非ご覧ください。

0
0 258
記事 Megumi Kakechi · 2022年2月13日 2m read

これは、InterSystems FAQサイトの記事です。
各プロセスが消費しているメモリの内容は、Windowsリソースモニタの項目のワーキングセット、共有可能、プライベートで確認できます。

これらの内容は以下になります。

ワーキングセット プロセスが使用する物理メモリです。
         ワーキングセット(プライベート)とワーキングセット(共有可能)との合計です。

共有可能               プロセスが使用する物理メモリ内で他のプロセスと共有可能なメモリです。

プライベート       プロセスが使用する物理メモリ内で他のプロセスと共有不可能なメモリです。


例えば、以下のようにメモリを使用しているプロセスがある場合、ほとんどは共有メモリになっているといえます。

ワーキングセット 5,341,472 = 共有可能 5,328,664 + プライベート12,808 (kb)


プロセスがアクセスする共有メモリは、データベースキャッシュおよびルーチンキャッシュで使用されているメモリ領域になります。

プロセスが大量にグローバルへのアクセスを行うと、データベースキャッシュへのアクセス量も多くなり、メモリ使用量の共有可能の数値が大きくなります。

0
0 330
記事 Megumi Kakechi · 2022年1月30日 1m read

これは、InterSystems FAQサイトの記事です。

TRY-CATCHで行うことが可能です。
以下のように行ってください。

 #dim ex As %Exception.AbstractException
 TRY {
    "<何かエラーを発生させる処理>"
  }
  CATCH ex {
     do ex.Log()
  }


^%ETNを使用する場合は、^%ETNを呼び出す際にBACKエントリ(BACK^%ETN)から呼び出してください。


あわせて、以下の関連記事も是非ご覧ください。

アプリケーションエラー(^ERRORS)をコマンドで取得する方法
【FAQ】アプリケーションから明示的にエラー詳細情報をログ出力する方法を教えてください。

0
1 396
記事 Megumi Kakechi · 2022年1月12日 5m read

これは、InterSystems FAQサイトの記事です。
ミラージャーナルファイルの削除(パージ)のタイミングは以下のようになります。

・プライマリ・フェイルオーバー・メンバ

 以下の期限のうち長い方に該当するもの
 -ローカルジャーナルファイルの削除条件が満たされたとき ("ジャーナル設定の構成" を参照)  
 -バックアップメンバとすべての非同期メンバに受信されたとき
  ただし、非同期メンバが14日間(既定値)を経過してもジャーナルファイルを受信しない場合は、そのジャーナルファイルは削除対象になります。
  「既定の14日間」は、以下のコマンドで設定が可能になります。
  この保持期間を過ぎると、ジャーナルが削除されてしまいその非同期メンバでは同期が取れなくなるのでご注意ください。

%SYS>write ##class(SYS.Mirror).
0
0 327
記事 Megumi Kakechi · 2021年12月9日 3m read

これは、InterSystems FAQサイトの記事です。
 

【 管理ポータルへのパスワード認証設定方法 】

管理ポータルの、
 [ホーム] > [システム管理] > [セキュリティ] > [アプリケーション] > [ウェブ・アプリケーション]
で /csp/sys、および、/csp/sys/ 以下の各アプリケーション(/csp/sys/expなど) の編集画面を開き、“許可された認証方法” の、"認証なし" のチェックを外し、“パスワード” のみチェックをして保存します。

また、これと同様のことを、ターミナルから、^SECURITYルーチンを使用して実行することも可能です。
以下は/csp/sys/アプリケーションに対する実行例です。*実行は%SYSネームスペースで行って下さい。

0
0 689
記事 Megumi Kakechi · 2021年11月15日 1m read

これは InterSystems FAQ サイトの記事です。

SELinuxの機能が有効になっているとファイルアクセス時にセキュリティコンテキストのチェックで permission エラーになります。

CSP のページについても同様に permission エラーになっているため、Apache にて 403 Forbidden エラーになります。 

以下の設定でSELinuxの機能を無効にすることで回避できます。

設定ファイル /etc/selinux/config の SELINUX=disableに設定し、OS の再起動を行います。

例:

 # This file controls the state of SELinux on the system.
  # SELINUX= can take one of these three values:<
  # enforcing - SELinux security policy is enforced.
  # permissive - SELinux prints warnings instead of enforcing.
  # disabled - SELinux is fully disabled.
  SELINUX=disabled
  # SELINUXTYPE= type of policy in use.
0
0 418
記事 Megumi Kakechi · 2021年11月10日 4m read

これは InterSystems FAQ サイトの記事です。


InterSystems製品のプロセスが消費するメモリ領域は以下の6つの領域になります。

プロセスのプライベートな領域

 1. プロセスパーティション(ローカル変数テーブル等、プロセスごとに使用するメモリ)
 2. 長い文字列(LongString)使用メモリ
 3. 文字列スタック...等

プロセス間共有領域

 4. データベースキャッシュ
 5. ルーチンキャッシュ
 6. 共有メモリヒープ(プロセステーブル、ロックテーブル等)


プロセスが使用するメモリ領域は、「プライベート領域」と「共有領域」の大きく2種類に分かれます。
プライベートな領域はそのプロセスのみが使用し、個々のプロセス毎にメモリを割り当てます。
共有領域は、プロセス間で一つのメモリ領域を共有してアクセスしていますので実体はメモリ上に 1つです。
以下それぞれの領域の値は、管理ポータルで指定します(設定可能な場合)。
(1) プロセスパーティションのサイズ

 [システム管理] > [構成] > [システム構成] > [メモリと開始設定] > [プロセスあたりの最大メモリ(KB)]

 このプロセスパーティションサイズの初期値は 128 

0
0 631
記事 Megumi Kakechi · 2021年10月28日 2m read

これは InterSystems FAQ サイトの記事です。

TIMESTAMP型はInterSystems製品では、%Library.TimeStampデータタイプ(=%TimeStamp)に対応していて、フォーマットは YYYY-MM-DD HH:MM:SS.nnnnnnnnn です。

小数点以下の精度を変更したい場合は、以下の方法で設定します。

1) システムワイドに設定する

管理ポータル:[システム管理] > [構成] > [SQLとオブジェクトの設定] > [一般SQL設定] 
GETDATE(), CURRENT_TIME, CURRENT_TIMESTAMP のデフォルト時刻精度 に 0~9 の範囲で桁数を指定できます。

設定内容の詳細については、下記のドキュメントページをご参照ください。
追加構成設定~ - 一般SQL設定 - SQL タブ


2) SQLの関数で指定する

CURRENT_TIMESTAMP()の引数を利用して、小数点以下の精度を 0~9 の範囲で桁数を指定できます。
※CURRENT_TIMESTAMP()で返される値は、実行環境のタイムゾーンの現在の日付時刻を返します。

USER>do $SYSTEM.SQL.
0
0 1570
記事 Megumi Kakechi · 2021年10月8日 1m read

これは InterSystems FAQ サイトの記事です。

ターミナルでルーチンを実行し、プログラム上でエラーが発生した時に、エラートラップを適切に設定していない場合、以下のようなデバッグモードになります。

USER>do ^error1
 write A
^
a+2^error1 *A
USER 2d0>

この状態から、ルーチン起動の前の状態に戻るにはQuitコマンドを入力します。

USER 2d0>Quit

またエラーが発生したルーチン内でトランザクション処理を行なっている場合には、以下のような表示のプロンプトになります。

USER>do ^error1
 write A
^
a+3^error1 *A
TL1:USER 2d0>q
TL1:USER>

このようにプロンプトの先頭にTL+数字が表示されている場合には完了していないトランザクションがあることを示しています。

この状態ではQuitコマンドを入力しても元のプロンプトには戻りません。

最初にTrollbackコマンドを入力し、その後でQuitコマンドを実行することで元のプロンプトに戻ります。

TL1:USER>Trollback
0
0 570
記事 Megumi Kakechi · 2021年9月27日 1m read

これは InterSystems FAQ サイトの記事です。

インターシステムズは、特定のオペレーティングシステムのバージョンの特定リリースに対して、製品の検証は実施しておりません。

特定リリースとは、例えば、Windows Server 2003 R2やWindows Server 2008 R2などを指します。

これらの保証については、オペレーティングシステムベンダーが互換性を保証する限りにおいて、提供されます。

特別な状況の詳細は、下記弊社ホームページのサポート情報に明記しています。

最新プラットフォーム情報とリリースノート


明記されていない場合には、オペレーティングシステムベンダーが互換性を保証する限りにおいて、特定リリースもサポート対象となります。


以下の関連トピックもあわせてご覧ください。

【FAQ】どんなプラットフォームで動作するのですか?

【FAQ】Windowsのサービスパックの適用は、製品サポートバージョンに影響しますか?

0
0 265
記事 Megumi Kakechi · 2021年9月21日 3m read

これは InterSystems FAQ サイトの記事です。

Windowsのグループセキュリティポリシーに停止コマンドを記述したバッチファイルを登録する事により可能です。

手順は以下のとおりです。

1.Windowsのローカルコンピュータ・ポリシーのシャットダウンスクリプトに停止コマンドを登録します。
  停止コマンドを含んだbatファイルを作成します。

 CacheStop.bat    ※InterSystems Caché  の場合

c:\intersystems\cache\bin\ccontrol stop CACHE

 IRISStop.bat     ※InterSystems IRIS の場合

c:\intersystems\IRIS\bin\iris stop IRIS


2.[ファイル名を指定して実行(R) ]で mmc と入力し、管理コンソールを起動します。   ファイル名を指定して実行の画面  


3.管理コンソールから[スナップインの追加と削除]を選択します。    


4.スナップインの追加と削除で「グループ ポリシー オブジェクト エディタ」を選択し、追加します。 


5.グループ ポリシー オブジェクトの選択画面で完了ボタンを押します。


6.OKをクリックして完了します。


7.シャットダウンスクリプトを登録します。

0
0 944
記事 Megumi Kakechi · 2021年9月12日 2m read

特定文字列が含まれるグローバルを検索する時、どのように行われているでしょうか?

管理ポータルでグローバルを表示して Ctrl+F で検索することもできますが、サイズが大きなグローバルでは表示に時間がかかり難しい場合もあります。

もちろん、$ORDER  や $QUERY 関数でループして含まれる文字列を検索することは可能です。

しかし、もっと簡単で便利な方法があります。

管理ポータルで行える、グローバル文字列検索機能 を使う方法です。

こちら、管理ポータルの [システムエクスプローラ] > [グローバル] :検索 から簡単に行えます

例えば、^%ISCLOGグローバルの中から「CSP error cleaning up after page」というエラーが含まれるグローバルを検索するときは以下のようになります。

 ↓

 
どうしても  $ORDER や $QUERY 関数を使用してプログラムで行いたい、という場合は以下のようになります。

※サブスクリプトが複数あるときは、 $QUERY  関数で複数階層ループします。

0
0 230
記事 Megumi Kakechi · 2021年9月3日 2m read

これは InterSystems FAQ サイトの記事です。

$ZSTRIPコマンドは、指定された文字列から文字のタイプと文字を削除します。
このコマンドを使用することで文字列から数値部分のみを抽出することが可能です。

$ZSTRIP(string,action,remchar,keepchar)

第1引数(string)      :対象文字列
第2引数(action)     :string から削除する対象。アクションコードとマスクコードで構成。
第3引数(remchar) :削除する特定の文字を指定。第2引数のマスクコードに含まれない文字も指定可能。【オプション】
第4引数(keepchar):削除しない特定の文字を指定。【オプション】

以下はその例です。

// 第2引数:アクションコード "*" を指定しすべて削除(E)
// 第4引数:.0123456789- を削除しない

USER>write $zstrip("ABC-0.100g","*E",,".0123456789-")
-0.
0
1 462
記事 Megumi Kakechi · 2021年9月1日 1m read

これは InterSystems FAQ サイトの記事です。

InterSystems製品のクラスクエリにはSQL文を利用する方法と、ユーザコードによる記述が選択できます。

スタジオメニューの [クラス] >[追加] > [クエリ] を選択すると、クエリウィザードが起動します。


画面に、「実装」を選択する項目があり、「このクエリはユーザコードで定義されている」を選択すると SQL文ではなく、ユーザコードによりクエリ定義が行えます。

 
次画面以降では、必要な情報として、入力パラメータ、結果セットの選択カラムの指定を行います。 ウィザード終了後、ユーザコードのひな型として、以下のメソッドがクラス定義に追加されます。

{QueryName}Execute()

{QueryName}Fetch()

{QueryName}Close()

({QueryName}はクエリウィザードで指定するクエリ名です。)

これらのメソッドに実際に実行したいユーザコードを記述していきます。

以下に、詳細記述とJavaから呼び出すサンプルがございますのでご参照ください。

https://github.com/Intersystems-jp/classquery_sample

0
0 531
記事 Megumi Kakechi · 2021年8月26日 2m read

これは InterSystems FAQ サイトの記事です。

こちらは、コンパイル時に既にそのクラスのインスタンスを開いている場合に起こるエラーです。

対処方としては以下の2つの方法があります。

  1. インスタンスを開いているプロセスまたはアプリケーションを終了する
  2. スタジオのビルドメニュのコンパイルオプション:コンパイルフラグ “使用中のクラスをコンパイル” をチェックしコンパイルを行う  


インスタンス化しているプロセスを特定したい場合は、以下のサンプルルーチンをお試しください。

/// Test.mac
search(classname) public {
    Set pid=""
    Set pid=$order(^$Job(pid))
    While pid'="" {
        Do checkVars(pid,classname)
        Set pid=$Order(^$Job(pid))
    }
} checkVars(pid,string) {
    Set $ztrap="err"
    Set var="" 
    For {
        Set var=$zu(88,1,pid,var) q:var=""  
        Set val=$zu(88,2,pid,var)
        If val[string {
            Write !,pid,":",var," = ",val,!
        }
    }
    Quit
err
    Set $ztrap=""
    Quit
}
0
0 228
記事 Megumi Kakechi · 2021年8月25日 2m read

これは InterSystems FAQ サイトの記事です。

リレーションシップが設定されており 1対n の n が多量の場合、そのリレーションシップの順次処理などで大量のメモリ消費となるケースがあります。

プログラムの中で多側オブジェクトを参照し内部的にスウィズル処理した後には、そのOREFを含む変数の解放(削除、他の値の設定など)だけでは、その多側オブジェクトとリレーションシップオブジェクトが解放されないことが原因です。

それらを完全にメモリから解放するためには、OREF変数の解放とRelationshipオブジェクトの%UnSwizzleAt<%Library.RelationshipObject >メソッドの実行による明示的なメモリ解放が必要です。
 

- 使用例 -

 Do {
    Set employee = company.Employees.GetNext(.key)
    If (employee '= "") {
        Write employee.Name,!
        // remove employee from memory
        Do company.Employees.%UnSwizzleAt(key)
    }
 } While (key '= "") 
6
0 342
記事 Megumi Kakechi · 2021年8月11日 4m read

これは InterSystems FAQ サイトの記事です。

ジャーナルファイルの削除は、自動削除と手動削除が選択できます。


「自動削除」については、以下2つの方法が選択できます。

A) タスクスケジュールを使用して指定時間に自動削除する方法
B) オンラインバックアップ使用時、指定回数成功後に自動削除する方法
 

A) タスクスケジュールを使用して指定時間に自動削除する方法

インストール時デフォルトで登録されるタスクスケジュール「ジャーナルファイルの削除」を使用して自動削除します。
自動削除を行う前に運用環境に合わせて適切な日数分ジャーナルを保持するよう、ジャーナルファイルの設定を修正します。

ジャーナルファイルの設定は以下メニューを使用します。
【バージョン2011.1以降】  [ホーム] > [システム管理] > [構成] > [システム構成] > [ジャーナル設定]
【バージョン5.1~2010.x】 [ホーム] > [構成] > [ジャーナル設定] 

「ジャーナル設定画面」にある「ジャーナルファイルの削除」から「この日数後」の設定を使用します。
日数の指定はバックアップ期間に合わせて設定します。
例えば、バックアップが1週間毎に行われている場合は、バックアップが行なわれる間のジャーナルファイルをを保持する必要があるため、「7」を設定します。

0
0 1404
記事 Megumi Kakechi · 2021年8月5日 7m read

これは InterSystems FAQ サイトの記事です。

あるユーザが「不活動上限」を超える期間にわたって、一度もInterSystems製品にログインしなかった場合、そのユーザは無効になりログインできなくなります。

なお、この設定の初期値は、インストール時の初期セキュリティによって変わります。
「通常」以上では既定値は90日間、「最小」では0日に設定されています。
ユーザを有効に変更することにより再びログインすることができるようになります。

2007.1以降であれば%Allを持つユーザが最低1つは残っていますので、そのユーザでログインできればそこから設定を変更します。(%Allを持つユーザは、インストール時のセキュリティ設定によって異なります)

使用できるものがわからないときは、InterSystems製品を緊急アクセスモードで起動してログインします。
 

<緊急アクセスモードからの復元方法>

1. InterSystems製品の停止

2. InterSystems製品を緊急アクセスモードでの起動

≪Windowsの例≫
DOSコマンドプロンプトよりInterSystems製品を緊急アクセスモードで起動します。
(Windows Vista以降では、コマンドプロンプト起動時、「管理者として実行」のオプションを指定して起動します。

0
1 968
記事 Megumi Kakechi · 2021年8月5日 1m read

これは InterSystems FAQ サイトの記事です。

ディスクの空きスペースにもよりますが、ブロック別で最大サイズが異なります。

各バージョン共通で、8KBのブロックサイズを使用した場合は、32TBです。

バージョン2008.1以降のバージョンでは、8KB以外のブロックサイズを指定できるようになったため、最大サイズは以下の通りです。

  • 16KBのブロックサイズを使用した場合、64TB
  • 32KBのブロックサイズを使用した場合、128TB
  • 64KBのブロックサイズを使用した場合、256TB
0
0 253
記事 Megumi Kakechi · 2021年7月19日 3m read

これは InterSystems FAQ サイトの記事です。

<STORE> エラーは サーバ上のプロセスが使用しているプロセス個別メモリ容量が上限に達した場合に発生します。
このメモリはオブジェクトを開いたり、ローカル変数を使用することで消費されるものとなります。
このエラーは サーバ上のプロセスでメモリを大量に使用した場合に発生します。
Caché バージョン2012.2以降、プロセス個別のメモリ容量の最大値が大幅に拡張されました(約2TB)。

この変更により、ローカル変数の使用領域を大幅に増やすことができるようになったため 特別な状況が発生しない限り(プログラムのバグにより大量のローカル変数を作成し続ける等) エラーを回避できるようになりました。

但し、このためのメモリ領域は、プログラムが動作するハードウェアが提供する資源の一つですので物理的な制限は当然あります。
システム全体の資源管理を念頭に置き慎重な使用をお勧めします。

設定値詳細については以下ドキュメントをご参照ください。

プロセスあたりの最大メモリ(KB)の設定値について
インターシステムズ製品のプロセス・メモリについて


プロセスが使用可能なメモリの上限は、管理ポータル(バージョン2010.2以前では[システム管理ポータル])から変更できます。

0
0 865
記事 Megumi Kakechi · 2021年7月12日 1m read

これは InterSystems FAQ サイトの記事です。

%SQL.Util.Procedures クラスの CSVTOCLASS() メソッドを使ってCSVファイルからデータをロードすることができます。

サンプルコードに合わせて使用方法を解説します。

以下のコードでは、c:\temp\test.csv の内容を変数 rowtype で指定した列の形式で csv.test というクラスにデータをインポートしています。

クラス csv.test が存在しなければ、実行時にそのクラスも自動的に生成されます。

クラスが存在する場合は、定義済プロパティに合わせて変数 rowtype に列の形式を指定する必要があります。

 Set rowtype="Name VARCHAR(50),UID VARCHAR(50), PHONE VARCHAR(50)"
 Set filename="c:\temp\test.csv"
 Set classname = "csv.test"
 Do ##class(%SQL.Util.Procedures).CSVTOCLASS(,rowtype,filename,,,1,classname) 

以下の関連トピックもあわせてご参照ください。

0
0 617
記事 Megumi Kakechi · 2021年6月30日 2m read

これは InterSystems FAQ サイトの記事です。

2012.1以降管理ポータルの使用もライセンスを消費する様にシステムを変更しました。

これはインターシステムズが定める製品のライセンスポリシーとシステムの動作をできるだけ合わせる一連の措置の1つとして行われました。

この変更に伴いライセンス使用に関わる思わぬトラブルが発生する可能性がありますので注意が必要です。

特にライセンスの解放が管理ポータルページの操作法によって異なるため、その違いを十分認識して対処する必要があります。
 

管理ポータルのライセンスの解放はページの切断の仕方により以下の様に変わります。

a) ポータルを開き何らかの操作を行った後にログアウトを行うとライセンスは即時解放されます。

b) ポータルのページを開いた後、他に何も操作せずにログアウトを行うと一定の待ち時間の後にライセンスの解放が行われます。

この待ち時間はライセンスの意図的な規約違反を防ぐための措置であるため、設定等で変更できないようになっています。

c) ポータルを開き、ブラウザのXボタンやAlt+F4等のショートカットでページを強制的に閉じた場合は、デフォルトでは8時間後にライセンスの解放が行われます。
 

ライセンスの解放の時間は以下の操作で変更することができます。

0
0 473
記事 Megumi Kakechi · 2021年6月16日 2m read

これは InterSystems FAQ サイトの記事です。

InterSystems製品のシステムモニタが色々なリソースの使用状況を監視しています。

そしてその使用状況に応じてアラートやワーニング情報をコンソールログ(message.log/cconsole.log)に出力します。

アラート情報が表示するCPUのリソースについては、以下のものが定義されています。

0
0 382
記事 Megumi Kakechi · 2021年6月15日 2m read

これは InterSystems FAQ サイトの記事です。

ローカル変数の容量は、プロセスに許可する最大メモリ割り当て容量によって制限されます。

この値は、システム構成パラメータの bbsiz で設定します(設定方法は記事の後半にあります)。

既定値は、1プロセスあたり、262,144 KB です。
※IRIS 2022.1 以降は、既定値が -1(最大値:制限なし) になりました。
※Caché/Ensemble 2012.1以前では 16,384 KB でした。

値は 256KB からスタートし、プロセスがより大きな領域を必要とする場合は、bbsiz で設定した値まで拡張します。
(バージョン2012.1以前では 128KB~49,536KB の範囲で設定できます。)

この値を超えるようなローカル変数の使用があると、 エラーが発生します。

現在のプロセスに残っている使用可能なメモリ量は、$STORAGE 変数で確認できます(バイト単位)。
詳細は以下ドキュメントページをご参照ください。

$STORAGEについて【IRIS】
$STORAGEについて
インターシステムズ製品のプロセス・メモリについて

一般的に多量のローカル変数を使うと、システムが稼動するために必要なメモリ量も増加します。

大規模システムの場合には、そのことが原因でメモリ不足が発生することもあり得るため注意が必要です。

0
0 873