記事 Mihoko Iijima · 2021年4月9日 1m read 指定のテーブルの全フィールドをSQLで取得する方法 これは InterSystems FAQ サイトの記事です。 INFORMATION_SCHEMA スキーマを使用して取得できます。 INFORMATION_SCHEMA はシステム用スキーマのため、デフォルトでは管理ポータルのSQLメニューに表示されません。表示させる方法は以下の通りです。 管理ポータル→システムエクスプローラ→SQL メニューを開きます。 スキーマのプルダウン左にある「システム」をチェックします。 スキーマのプルダウンから INFORMATION_SCHEMA を選択します。 #SQL #ヒントとコツ #Caché #Ensemble #HealthShare #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 490
記事 Megumi Kakechi · 2021年4月9日 2m read 使用中のデータベースキャッシュ(グローバルバッファ)のサイズを知る方法 これは InterSystems FAQ サイトの記事です。 グローバル変数毎のデータベースキャッシュ使用量を確認するツール(^GLOBUFFユーティリティ)が用意されています。 %SYSネームスペースにて、ユーティリティを直接実行する方法と、プログラムで実行する方法があります。 ユーティリティを直接実行する方法は以下のようになります。 #ObjectScript #ツール #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 358
記事 Mihoko Iijima · 2021年4月9日 1m read 関数・メソッドの引数に可変長引数を渡すことができるかどうか これは InterSystems FAQ サイトの記事です。 引数名の後ろに ... をつけることで可変の引数を渡すことができます。 ObjectScript では、配列を使って任意の数の引数を渡すことができます。 例文は以下の通りです。例文では、メソッド実行後に確認しやすいように、グローバル変数(=データベースに格納される変数)に引数の情報を設定しています。 Class TEST.ARGTEST1 Extends %RegisteredObject { ClassMethod NewMethod1(Arg... As %String) As %Boolean { kill ^a merge ^a = Arg } } ターミナルで実行した結果は以下の通りです。 #ObjectScript #ヒントとコツ #Caché #Ensemble #HealthShare #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 267
記事 Megumi Kakechi · 2021年4月7日 4m read ファイル入出力処理をスクリプトで記述する方法 これは InterSystems FAQ サイトの記事です。ファイル入出力処理を行うには、ライブラリクラスを利用する方法が便利です。 ライブラリクラスを使用する以外には、Open/Use/Close コマンドを使用する方法もあります。<※1> ファイル入出力処理には、%Library.Fileクラス、%Stream.FileCharacter/%Stream.FileBinary を使用します。 #ObjectScript #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 1.1K
記事 Mihoko Iijima · 2021年4月2日 2m read コンソールログに "Failed to allocate xxxMB shared memory using large pages..." のエラーメッセージが出ているとき これは InterSystems FAQ サイトの記事です。 MM/DD-hh:mm:ss:938 ( 0) 1 Failed to allocate xxxMB shared memory using large pages. Switching to small pages.MM/DD-hh:mm:ss:938 ( 0) 0 Allocated xxxMB shared memory: yyyMB global buffers, zzzMB routine buffers コンソールログ(cconsole.log/messages.log)に上記のようなメッセージがある場合は、Large Page でのメモリ確保に失敗して、Small Page でメモリを確保したことを示しています。 Allocated xxxMB が設定サイズと同じ場合、Small Pageでメモリ確保ができていますので、設定サイズを減らす必要はありません。 #Microsoft Windows #システム管理 #ヒントとコツ #Caché #Ensemble #HealthShare #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 1.7K
記事 Mihoko Iijima · 2021年4月2日 1m read データベースアクセス中にデータベース設定を変更できるかどうか これは InterSystems FAQ サイトの記事です。 アプリケーション等がデータベースにアクセスしている最中に、データベースの最大サイズの変更や未使用領域の開放などのデータベース設定変更を行うことにより、データベース整合性等に悪影響を及ぼすことはありません。 しかし、未使用領域の開放などは、ディスクアクセスの増加やメモリの使用等でシステムに負荷をかける可能性があるため、その観点からシステム運用に影響が出ないよう注意が必要です。 #システム管理 #ヒントとコツ #Caché #Ensemble #HealthShare #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 138
記事 Mihoko Iijima · 2021年3月26日 2m read Linux のシェルスクリプトでルーチンやメソッドの戻り値を取得する方法 これは InterSystems FAQ サイトの記事です。 Linux で シェルスクリプト(shell script) からルーチンやメソッドを実行し戻り値を取得するには、iris コマンドを使用します。 詳細はドキュメント「インスタンスの接続について」 をご参照ください。 コマンド記述例は以下の通りです。 iris session インスタンス名 -U ネームスペース名 "実行ルーチン・メソッド" #システム管理 #ヒントとコツ #Caché #Ensemble #HealthShare #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 1.2K
記事 Mihoko Iijima · 2021年3月26日 1m read IRISTEMP / CACHETEMP 上のグローバルのみを参照する方法について これは InterSystems FAQ サイトの記事です。 管理ポータルを使用して確認する場合は、以下の手順で参照できます。 管理ポータル > [システムエクスプローラ] > [グローバル] の画面で、ネームスペースではなく データベース を指定し、IRISTEMP / CACHETEMP データベースを選択すると参照できます。 #グローバル #ヒントとコツ #Caché #Ensemble #HealthShare #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 233
記事 Megumi Kakechi · 2021年3月25日 3m read ^%GSIZE で出力される各項目の意味 これは InterSystems FAQ サイトの記事です。 ^%GSIZE ユーティリティでは、グローバルのサイズを算出することができます。 このユーティリティで出力される各項目の意味について説明します。 例えば、USERネームスペースのグローバルについて do ^%GSIZE を実行し、以下のように出力結果を得られたとします。 #ObjectScript #システム管理 #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 2 0 0 427
記事 Megumi Kakechi · 2021年3月25日 2m read Base64文字列でクラスに画像を保存・復元する方法 これは InterSystems FAQ サイト の記事です。 以下のサンプルでは、画像ファイルをクラスプロパティにBase64文字列にエンコードして保存し、再びそれをBase64でデコードし、別のファイルに復元しています。 【使用クラス】 Class User.test Extends %Persistent { Property pics As %GlobalBinaryStream; } 【取込み時】 #ObjectScript #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 1.2K
記事 Mihoko Iijima · 2021年3月19日 2m read Webゲートウェイ/CSPゲートウェイ管理のデフォルトパラメータで設定できる各タイムアウト値について これは InterSystems FAQ サイトの記事です。 各タイムアウト値の意味は以下の通りです。 (1) [サーバ応答タイムアウト] この設定時間内に、IRIS/Caché での処理(ルーチンやクエリの実行)が終わらない場合は、ブラウザ側にエラーを返します。 例) この値が60秒の時に、ルーチン/メソッド/クエリ実行に 90秒 かかる場合にはエラーになります。 (2) [キューイングされたリクエストのタイムアウト] CSP/REST で設定する IRIS/Caché サーバごとに、CSP/REST を同時実行できるプロセス数を制限できます。 #CSP #REST API #ヒントとコツ #Caché #Ensemble #HealthShare #InterSystems IRIS #InterSystems IRIS for Health 1 0 0 672
記事 Mihoko Iijima · 2021年3月19日 3m read 複数のSQL 文を実行する方法 これは InterSystems FAQ サイトの記事です。 複数の SQL 文を実行する GUI はありませんが、複数の SQL 文を含むファイルを作成しファイルをインポートしながら SQL を実行する方法で対応できます。 ご利用バージョンによって使用するユーティリティメソッドが異なります。 #SQL #ヒントとコツ #Caché #Ensemble #HealthShare #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 9.2K
記事 Megumi Kakechi · 2021年3月10日 3m read RESTでセッション共有化する方法 これは InterSystems FAQ サイトの記事です。 REST アプリケーションはステートレスであることが想定されています。 しかし、複数の REST 呼び出し間でデータを保持したい場合などの理由で、Webセッションを使用したい場合は、UseSession パラメータを使用することができます。 以下のように、Web アプリケーションのディスパッチクラスとして定義された %CSP.REST のサブクラスでUseSession パラメータを指定することで、CSPと同じようにWebセッションを使用することが可能となります。 Class REST.MyServices Extends %CSP.REST { Parameter UseSession As Integer = 1; 詳細は以下のドキュメントをご覧ください。 #REST API #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 1 0 0 1K
記事 Mihoko Iijima · 2021年3月9日 1m read 指定テーブルの全フィールドをSQLで取得する方法 これは InterSystems FAQ サイトの記事です。 INFORMATION_SCHEMA スキーマを使用して取得できます。 INFORMATION_SCHEMA はシステム用スキーマのため、デフォルトでは管理ポータルの SQL メニューに表示されません。 表示させる方法は以下の通りです。 管理ポータル→システムエクスプローラ→SQL メニューを開きます。 スキーマのプルダウン左にある「システム」をチェックします。 スキーマのプルダウンから INFORMATION_SCHEMA を選択します。 #SQL #ヒントとコツ #Caché #Ensemble #HealthShare #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 219
記事 Mihoko Iijima · 2021年3月9日 1m read ダイナミックオブジェクトの JSON 変換で MAXSTRING エラーが出る場合の対処方法 これは InterSystems FAQ サイトの記事です。 ダイナミックオブジェクトから JSON 文字列を生成するときに使用する %ToJSON() の引数にストリームオブジェクトを指定することでエラーを回避できます。 コード例は以下の通りです。 USER>set temp=##class(%Stream.TmpCharacter).%New() USER>set jsonobj={} USER>set jsonobj.pro1=["a","b","c","d"] USER>set jsonobj.pro2=["あ","い","う","え"] USER>do jsonobj.%ToJSON(temp) USER>write temp.Size 51 USER>write temp.Read() {"pro1":["a","b","c","d"],"pro2":["あ","い","う","え"]} 詳細はドキュメントもご参照下さい。 #JSON #ObjectScript #オブジェクトデータモデル #ヒントとコツ #Caché #Ensemble #HealthShare #InterSystems IRIS #InterSystems IRIS for Health 1 3 0 406
記事 Mihoko Iijima · 2021年3月9日 3m read アプリケーションエラー(^ERRORS)をコマンドで取得する方法 これは InterSystems FAQ サイトの記事です。 SYS.ApplicationError クラスの ErrorList クエリを使用します。 注意1:%SYS ネームスペースで実行します。 #ヒントとコツ #Caché #Ensemble #HealthShare #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 119
記事 Hiroshi Sato · 2021年3月3日 5m read 稼働中のインスタンスを停止せずにバックアップを行う方法 これは InterSystems FAQ サイトの記事です。 InterSystems製品を停止しないバックアップ方法は、3種類あります。 ① 外部バックアップ② オンライバックアップ③ レガシー並行外部バックアップ 各詳細については、以下ドキュメントをご参照ください。 #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 786
記事 Hiroshi Sato · 2021年3月3日 3m read SQLのUPDATEやDELETEで、ある程度の数のレコードを一括更新するとSQLエラー -110 が発生します。 これは InterSystems FAQ サイトの記事です。 通常SQLCODE -110(Locking conflict in filing)のエラーはロックが競合した場合に発生します。 大量レコードが一度に更新された場合、その件数がロック閾値を超えてロックエスカレーションを起こしてテーブルロックとなる可能性があり、そのためにロックの競合が起きやすくなっていることが考えられます。 このロック閾値を上げることにより、この競合を回避できる可能性もあります。 しかしこの閾値を上げることにより、システムが必要とするロック管理用のメモリが増えるという副作用がありますので、慎重な検討が必要です。 あるいはテーブルロックになる可能性を排除できずに、更新タイミング等アプリケーションの仕様を見直す必要があるかもしれません。 またSQLCODE -110はロックテーブルの空き容量が不足した場合にも発生する可能性があります。 #SQL #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 1.2K
記事 Hiroshi Sato · 2021年3月3日 2m read チーム開発を行う際に必要なソース管理の仕組みについて これは InterSystems FAQ サイトの記事です。 InterSystems Data Platform自身には、ソース管理を行う機能はありません。 2016.2以降のバージョンをご使用の場合、統合開発環境として VSCode をご利用いただくことで、VSCode でご利用いただけるソース管理機能をご使用いただけます。 VSCode で ObjectScriptの操作を行うためには、専用エクステンションのインストールが必要です。 使用方法については、コミュニティの記事「VSCode を使ってみよう!」をご参照ください。 また、「VSCodeでのソースコード管理について」についても併せてご参照ください。 #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 1 0 0 391
記事 Megumi Kakechi · 2021年3月2日 2m read データベースの空き容量をプログラムで取得する方法 これは InterSystems FAQ サイトの記事です。 管理ポータル:システムオペレーション > データベース にあるオプションボタン(ラジオボタン)「空き容量ビュー」で表示される内容は、システムクラス SYS.Database のFreeSpace クエリで取得可能です。 次のようなコードでクエリを実行します。 例:(%SYSネームスペースにて作成、実行します) #システム管理 #ツール #データベース #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 284
記事 Megumi Kakechi · 2021年3月2日 2m read $ZF(-100) で実行したコマンドの出力を取得する方法 これは InterSystems FAQ サイトの記事です。※記事後半に、「2>&1」で 標準エラー出力(2) を 標準出力(1) にリダイレクトする方法を追記しました。 $ZF(-100) では実行したコマンドの出力を取得することはできませんが、代わりにコマンド・パイプ デバイスを使用する方法があります。 詳細は、以下ドキュメントをご参照ください。 コマンド・パイプ デバイスを使用する方法について こちらを %File クラスで使用した例が以下になります。 #ObjectScript #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 1 0 446
記事 Mihoko Iijima · 2021年2月26日 2m read プロセス一覧をプログラムで取得する方法 これは InterSystems FAQ サイトの記事です。 %SYS.ProcessQuery クラスの AllFields クエリを使用すると取得できます。 #システム管理 #ヒントとコツ #Caché #Ensemble #HealthShare #InterSystems IRIS #InterSystems IRIS for Health 1 0 0 213
記事 Mihoko Iijima · 2021年2月25日 2m read 【Caché ベース】トラブル発生時の情報収集方法(Caché / Ensemble / HealthConnect 編) これは InterSystems FAQ サイトの記事です 復旧を優先される場合を除き 【トラブル発生状態のまま】弊社サポートセンターまでご連絡ください。 その際、専用ツールを利用して情報収集いただくことで(所要時間約 5分)、サポートセンターによる状況確認がスムーズに行えます。 ツール使用方法については、PDF または以下ビデオでご紹介しています。 #システム管理 #ツール #ビデオ #Caché #Ensemble #HealthShare 0 0 0 160
記事 Mihoko Iijima · 2021年2月19日 2m read InterSystems のガベージコレクション機能について(Java のガベージコレクションとの違い) これは InterSystems FAQ サイトの記事です。 Java のガベージコレクションは、使用しなくなったメモリ上のオブジェクトを自動開放するしくみですが、InterSystems data platform(以下IRISと表記)のガベージコレクションは、意味が異なります。 IRIS では、ディスク上の大量のデータノードを 1 コマンド(killコマンド)で削除する機能があります。 通常、データ容量が増えれば、それに伴い、削除に必要な時間が増加しますが、そうすると、そのkillコマンドを発行したプロセスが、削除が終わるのを待つ時間が増加することになってしまいます。 その様な事象の発生を避けるため、IRIS では、ユーザプロセスが大量のデータを削除する kill コマンドを発行した際に、その場で削除に必要な全ての処理を行うのではなく、削除が必要な開始の場所だけを示して、次の処理に進むようになっています。 #Java #システム管理 #Caché #Ensemble #HealthShare #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 98
記事 Mihoko Iijima · 2021年2月19日 1m read 仮想化ソフトのサポートについて これは InterSystems FAQ サイトの記事です。 インターシステムズは、個々の仮想化ソフトウェアに対して、弊社製品の動作検証は行なっておりません。 インターシステムズでは、弊社製品がサポートするプラットフォームをサーバプラットフォームという単位で定義しています。 サーバプラットフォームは、オペレーティングシステムとそのバージョン、およびそのオペレーティングシステムが動作するプロセッサタイプの 3 つの要素で定義されます。 従いまして、ある仮想ソフト上で InterSystems 製品がサポートしているサーバプラットフォームが稼動し、その上で InterSystems 製品が動作している限りにおいて、製品のサポートを提供します。 #Caché #Ensemble #HealthShare #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 76
記事 Mihoko Iijima · 2021年2月19日 4m read VSCode:プロセスにアタッチしてデバッグする方法 開発者の皆さん、こんにちは! VSCode の ObjectScript エクステンションで、プロセスにアタッチしてデバッグする方法についてご紹介します。 ObjectScript エクステンションの基本的な操作方法については、こちらの記事をぜひご参照ください。 解説ビデオ(4分ちょっと)もあります。ぜひご参照ください。 https://www.youtube.com/embed/NBITqPlMf1M[これは埋め込みリンクですが、あなたはサイト上の埋め込みコンテンツへのアクセスに必要な Cookie を拒否しているため、それを直接表示することはできません。埋め込みコンテンツを表示するには、Cookie 設定ですべての Cookie を受け入れる必要があります。] #ObjectScript #VSCode #デバッグ #ビデオ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 2 2 0 12.9K
記事 Megumi Kakechi · 2021年2月15日 7m read データベースキャッシュおよびルーチンキャッシュの最適値の設定方法 これは InterSystems FAQ サイトの記事です。 データベースキャッシュおよびルーチンキャッシュをモニターし、最適値を調べる方法をご紹介します。 (1) データベースキャッシュ 現状の設定値で問題ないかは、^GLOSTAT ユーティリティ のCache Efficency値(キャッシュ効率)でモニターします。 Cache Efficiency 値は大きければ大きいほど良いですが、目安として100 以上であれば、設定サイズは問題ありません。 実行例) #システム管理 #パフォーマンス #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 419
記事 Megumi Kakechi · 2021年2月15日 4m read ルーチン・クラスメソッド内の特定処理でデータベースの特権を変更する方法 これは InterSystems FAQ サイトの記事です。 「特権ルーチンアプリケーション」を使用し、コード中に $system.Security.AddRoles()メソッドを使用してロールを付与する仕組みを利用します。 ※ロールベースで必要な特権を付与するため、予め特定の特権を持ったロールを作成する必要があります。 #システム管理 #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 142
記事 Mihoko Iijima · 2021年2月12日 3m read SQL から ObjectScript で記述したプログラムを実行して値を返す方法 これは InterSystems FAQ サイトの記事です。 以下例のクラスメソッド getLatestID() のように ObjectScript のクラスメソッドを用意します。返したい値を戻り値に指定し、SQLストアドプロシージャ(SqlProc)キーワードを指定するだけで値が返せます。 ClassMethod getLatestID() As %Integer [ SqlName = getLatestID, SqlProc ] { set latestID=$Order(^ISJ.TestClass1D(""),-1) quit latestID } 操作を試す場合は、以下のクラス定義をご準備ください。 #ObjectScript #SQL #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 289
記事 Mihoko Iijima · 2021年2月12日 5m read XMLファイルの内容をデータベースに登録する方法 これは InterSystems FAQ サイトの記事です。 XMLファイルの内容を格納する永続クラス定義を作成し、%XML.Adaptor を追加で継承します。 例は以下の通りです(右端の %XML.Adaptorクラスを追加で継承します)。 Class ISJ.Class1 Extends (%Persistent, %Populate, %XML.Adaptor) #ObjectScript #XML #オブジェクトデータモデル #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 2 0 0 1.8K