Rechercher

文章
· 九月 13, 2022 阅读大约需 8 分钟

CI/CD with IRIS SQL

In the vast and varied SQL database market, InterSystems IRIS stands out as a platform that goes way beyond just SQL, offering a seamless multimodel experience and supporting a rich set of development paradigms. Especially the advanced Object-Relational engine has helped organizations use the best-fit development approach for each facet of their data-intensive workloads, for example ingesting data through Objects and simultaneously querying it through SQL. Persistent Classes correspond to SQL tables, their properties to table columns and business logic is easily accessed using User-Defined Functions or Stored Procedures. In this article, we'll zoom in on a little bit of the magic just below the surface, and discuss how it may affect your development and deployment practices. This is an area of the product where we have plans to evolve and improve, so please don't hesitate to share your views and experiences using the comments section below.

⚠ This part of the product is changing significantly with IRIS 2025.2, please see this article for more detail. The information below applies to 2025.1 and earlier releases.

 

Saving the Storage Definition

Writing brand new business logic is easy, and assuming you have well-defined APIs and specifications, adapting or extending it usually is too. But when it's not just business logic, but also involves persistent data, anything you change from the initial version will need to be able to cope with data that was ingested through that earlier version.

On InterSystems IRIS, data and code coexist in a single high-performance engine, without the half dozen abstraction layers you might see in other 3GL or 4GL programming frameworks. This means there's only a very thin and transparent mapping to translate your class' properties to $list positions in a global node per row of data when using default storage. If you add or remove properties, you don't want the data from a removed property to show up under a new property. This mapping of your class' properties is what the Storage Definition takes care of, a somewhat cryptic XML block you may have noticed at the bottom of your class definition. The first time you compile a class, a new Storage Definition gets generated based on the class' properties and parameters. When you make changes to your class definition, at recompile time those changes are reconciled with the existing Storage Definition and it gets amended such that it remains compatible with existing data. So while you are going out on a limb refactoring your classes, the Storage Definition carefully considers your earlier creativity and ensures both old and new data remain accessible. We call this schema evolution.

In most other SQL databases the physical storage of your tables is much more opaque if visible at all, and changes can only be made through ALTER TABLE  statements. Those are standard DDL (Data Definition Language) commands, but typically much less expressive than what you can achieve modifying a class definition and procedural code on IRIS directly. 

At InterSystems, we strive to offer IRIS developers the ability to cleanly separate their code and data, as that is crucial to ensure smooth packaging and deployment of your applications. The Storage Definition plays a unique role in this, as it captures how the one maps to the other. That's why it's worth a closer look in the context of general development practices and CI/CD pipelines in particular.

Exporting to UDL

In the current century, source code management is file-based, so let's first take a look at IRIS' main file export format. The Universal Description Language is, as its name suggests, meant to be a universal file format for any and all code you write on InterSystems IRIS. It is the default export format when working with the VS Code ObjectScript plug-in and leads to easy-to-read files that resemble almost exactly what you'd see in an IDE, with an individual .cls file for each class (table) in your application. You can use $SYSTEM.OBJ.Export() to create UDL files explicitly, or just leverage the VS Code integration.

From the days of Studio, you may also remember an XML format that captured the same information as UDL and allowed grouping multiple classes into a single export. While that last part is convenient in some scenarios, it's a lot less practical to read and track differences across versions, so we'll ignore it for now.

Because UDL is meant to capture everything IRIS can express about a class, it will include all elements of a class definition, including the full Storage Definition. When importing a class definition that already includes a Storage Definition, IRIS will verify whether that Storage Definition covers all properties and indices of the class and if that is the case, just take it as-is and overwrite the previous Storage Definition for that class. This makes UDL a practical format for version management of classes and their Storage Definition, as it preserves that backwards compatibility for data ingested through prior versions of the class, wherever you deploy it to. 

If you are a hardcore developer, you may wonder whether these Storage Definitions keep growing and whether this "baggage" needs to be carried around indefinitely. The purpose of Storage Definitions is to preserve compatibility with pre-existing data, so if you know there isn't any of that and you want to get rid of lengthy genealogy, you can "reset" your Storage Definition by removing it from the class definition and have the class compiler generate it anew. For example, you may use this to take advantage of newish best practices such as the use of Extent Sets, which implement hashed global names and separate each index into their own global, improving low-level efficiencies. For backwards compatibility within customer applications, we cannot universally change such defaults in the %Persistent superclass (though we will apply them when creating a table from scratch using the CREATE TABLE  DDL command), so a periodic review of your classes and their storage is worthwhile. It is also possible to edit the Storage Definition XML directly, but users should exercise extreme caution as this may render existing data inaccessible.

So far so good. Storage Definitions offer a smart mapping between your classes and automatically adapt as the schema evolves. What else is in there?

Static vs Stats?

As you probably know, the InterSystems IRIS SQL engine makes advanced use of table statistics to identify the optimal query plan for any given statement the user executes. Table statistics include metrics on the size of a table, how values are distributed within a column, and much more. This information helps the IRIS SQL optimizer to decide which index is most beneficial, in what order to join tables, etcetera, so intuitively the more up-to-date your statistics are, the better chances you have to optimal query plans. Unfortunately, until we introduced fast block sampling in IRIS 2021.2, collecting accurate table statistics used to be a computationally expensive operation. Therefore, when customers deploy the same application to many environments in which the data patterns were largely the same, it made sense to consider the table statistics part of the application code and include them with the table definitions.

This is why on IRIS today you'll find the table statistics embedded inside the Storage Definition. When collecting table statistics through a manual call to TUNE TABLE or implicitly by querying it (see below), the new statistics are written to the Storage Definition and existing query plans for this table are invalidated so they can take advantage of the new statistics upon the next execution. Because they are part of the Storage Definition, these statistics will be part of UDL class exports and therefore may end up in your source code repository. In the case of carefully vetted statistics for a packaged application, this is desirable, as you'll want these specific statistics to drive query plan generation for all the application deployments.

Starting with 2021.2, IRIS will automatically collect table statistics at the start of query planning when querying a table that doesn't have any statistics at all and is eligible for fast block sampling. In our testing, the benefits of working with up-to-date statistics rather than no statistics at all clearly outweighed the cost of on-the-fly statistics gathering. For some customers however, this has had the unfortunate side effect that statistics gathered automatically on the developer's instance end up in the Storage Definition in the source control system and eventually in the packaged application. Obviously, the data in that developer environment and therefore the statistics on it may not be representative for a real customer deployment and lead to suboptimal query plans.

This scenario is easy to avoid. Table statistics can be excluded from the class definition export by using the /exportselectivity=0 qualifier when calling $SYSTEM.OBJ.Export() , or use the /importselectivity flag value of your choice to avoid importing them along with the code. The system default for these flag can be found here, and changed using $SYSTEM.OBJ.SetQualifiers(...). You can then leave it up to the automatic collection in the eventual deployment to pick up representative stats, make explicit statistics collection part of your deployment process, which will overwrite anything that might have been packaged with the application, or manage your table stats separately through their own import/export functions: $SYSTEM.SQL.Stats.Table.Export() and Import().  

We're currently working on a project to move table statistics to live with the data rather than be part of the code, and differentiate more cleanly between any fixed statistics configured explicitly by a developer and those collected from the actual data. Also, we're planning more automation with respect to periodically refreshing those statistics, based on how much the table data changes over time. 

Wrapping up

In this article, we've outlined the role of a Storage Definition in IRIS ObjectRelational engine, how it supports schema evolution and what it means to include it in your source control system. We've also described why table statistics are currently stored in that Storage Definition and suggested development practices for making sure your application deployments end up with statistics that are representative for the actual customer data. As mentioned earlier, we're planning to further enhance these capabilities so we look forward to your feedback on the current and planned functionality and refine our design as appropriate.

6 Comments
讨论 (6)4
登录或注册以继续
问题
· 九月 11, 2022

BuildKit does not work in Online demo

Hello, Community, I tried to deploy online demo for interoperability-test app. I see it errored because BuildKit is not available. Can the Docker be configured to support BuildKit?

3 Comments
讨论 (3)2
登录或注册以继续
文章
· 九月 1, 2022 阅读大约需 2 分钟

Algunos ejemplos de interoperabilidad FHIR

¡Hola desarrolladores!

Quizá os hayáis encontrado con escenarios donde no tenéis que implementar un repositorio FHIR, sino por ejemplo reenviar peticiones FHIR, gestionar las respuestas y tal vez realizar modificaciones o extraer algunos valores por el camino. Aquí encontraréis algunos ejemplos que pueden implementarse con InterSystems IRIS For Health o HealthShare Health Connect.

讨论 (0)1
登录或注册以继续
文章
· 八月 22, 2022 阅读大约需 16 分钟

IRISで使用できるユーティリティ一覧

InterSystems IRIS で使用できるユーティリティの一部を一覧でご紹介します。

以下の表の各ユーティリティ名をクリックすると、ユーティリティの詳細情報をご覧いただけます。

ユーティリティ名 概要
^BACKUP バックアップやリストア処理を行います
^DATABASE データベースの作成・編集・削除など、データベースの管理を行います
^DATACHECK 2つのIRIS.DAT の内容が一致しているかを確認します
^DBSIZE データベースサイズを計測します
^GBLOCKCOPY データベース内のグローバルデータを別データベースまたはネームスペースにコピーします
^GETPPGINFO IRISTEMPデータベースでどのような一時グローバルを使用しているかを確認します
^%GCMP 2つのグローバルの内容を単純比較します
^%GSIZE ネームスペース内の各グローバルのデータサイズを確認します
^Integrity/
^INTEGRIT
データベースのセット、またはデータベース内のグローバルのサブセットの構造的な整合性を検証します
^JOBEXAM プロセス一覧を表示します。各プロセス詳細情報の表示や停止も行えます
^JOURNAL ジャーナリングを構成します
^LOCKTAB 現在使用しているロック情報の表示と削除を行います
^mgstat サンプリング周期単位でグローバルアクセスのカウンター情報を連続してファイルに記録します
^MIRROR ミラーリング構成、管理、およびステータスの操作などを行います
^MONMGR メッセージログ(messages.log)を監視して通知を生成したり電子メールを送信します
^SECURITY IRISセキュリティが適切に機能するのに必須のデータの設定とメンテナンスを実行します
^RESJOB IRISプロセスを停止します
^%SS プロセス一覧を表示します(参照のみ)。
^SYSLOG 共有メモリの一部分に記録している、IRIS内部のエラーログ情報を出力します
^SystemCheck
(旧:^Buttons)
IRISが使用しているプロセスの状態や共有メモリなどの情報収集を行います
^SystemPerformance IRISおよびインスタンスが稼働するプラットフォームに関する詳細なパフォーマンスデータを収集します
^TASKMGR タスクのスケジュールや管理を行います


※%付きのユーティリティ以外はすべて %SYS ネームスペースで実行する必要があります。
※管理ポータル: は、管理ポータルから実行できる対象機能になります。
※★<ユーティリティ名> をクリックすると製品ドキュメントの説明をご覧いただけます(一部記載なし)
 

★^BACKUP

バックアップやリストア処理を行います。
^BACKUPユーティリティには以下のようなメニューがあります。

%SYS>do ^BACKUP
1) Backup                                        // データベースのバックアップを行います
2) Restore ALL                                   // すべてのデータベースのリストアを行います
3) Restore Selected or Renamed Directories       // 選択したデータベースのリストアを行います
4) Edit/Display List of Directories for Backups  // バックアップに必要なディレクトリ・リストの編集/表示を行います
5) Abort Backup                                  // 実行中のバックアップを中止します
6) Display Backup volume information             // バックアップ・ボリュームに関する情報を表示します
7) Monitor progress of backup or restore         // バックアップまたはリストアの進行状況を監視します


管理ポータル:
システムオペレーション > バックアップ

enlightened【ご参考】
データベースのバックアップについて(InterSystems Symposia 2014)
累積バックアップと差分バックアップの違いについて
稼働中のインスタンスを停止せずにバックアップを行う方法
データベースのバックアップ方法について
 

★^DATABASE

データベースの作成・編集・削除など、データベースの管理に使用します。
^DATABASEユーティリティには以下のようなメニューがあります。

%SYS>do ^DATABASE
 1) Create a database                    // 新しいデータベースを作成します
 2) Edit a database                      // 既存データベースの属性を変更します
 3) List databases                       // データベースの一覧を表示します
 4) Delete a database                    // 既存データベースを削除します
 5) Mount a database                     // データベースのマウントを行います
 6) Dismount a database                  // データベースをディスマウントします
 7) Compact globals in a database        // データベースのグローバルの圧縮を行います。この機能は使用可能バージョンに制限(※)があります。
 8) Show free space for a database       // データベースの使用可能な空き容量を表示します
 9) Show details for a database          // 指定されたデータベースの詳細情報を表示します
10) Recreate a database                  // 既存のデータベースのパラメータに基づいて、新しい空のデータベースを作成します
11) Manage database encryption           // データベース暗号化の管理を行います
12) Return unused space for a database   // データベースの未使用領域を解放します
13) Compact free space in a database     // データベースの空き容量を圧縮します。この機能は使用可能バージョンに制限(※)ががあります。
14) Defragment a database                // データベースのデフラグを行います。この機能は使用可能バージョンに制限(※)ががあります。
15) Show background database tasks       // バックグラウンドのデータベースタスクを表示します

制限:圧縮やデフラグの機能は、ご利用のバージョンによって使用できない場合がありますのでご注意ください。
    詳細はこちらをご覧ください。

管理ポータル:
システム管理 > 構成 > システム構成 > データベース 

enlightened【ご参考】
データベースファイルのサイズを圧縮する方法
ターミナルやAPIを使用してネームスペースやデータベースを作成する方法
プログラムでデータベースを マウント/ディスマウント する方法
 

★^DATACHECK

2つのIRIS.DAT の内容が一致しているかを確認します。

enlightened【ご参考】
2つのデータベースにある複数のグローバルやルーチンを比較する方法
 

★^DBSIZE

データベースサイズを計測します。
例えば、バックアップを実行する直前に、バックアップに必要なディスク領域を計算するのに使用します。 

enlightened【ご参考】
オンラインバックアップでのバックアップサイズを見積もる方法
 

★^GBLOCKCOPY

データベース内のグローバルデータを、別データベース・またはネームスペースにコピーします。
その際、余計なサイズ(Killされて空いたサイズ)はコピーされないので、データベースの縮小が可能です。

enlightened【ご参考】
グローバルの高速コピーのための ^GBLOCKCOPY の使用法
【FAQ】データベースファイル IRIS.DAT のサイズを小さくするにはどうすればいいですか?

★^GETPPGINFO

現在の全てのプロセスプライベートグローバルの名前およびそれらのスペース割り当てをブロック単位で表示します。

enlightened【ご参考】
IRISTEMPデータベースでどの一時グローバルがサイズ消費しているかを特定する方法
プロセス・プライベート・グローバルとは
 

★^%GCMP

2つのグローバルに違いがないか内容を比較をします。

enlightened【ご参考】
2つのグローバルの内容を比較する方法
 

★^%GSIZE

ネームスペース内の各グローバルのデータサイズを確認します。

管理ポータル:
システム管理 > 構成 > ローカルデータベース > グローバル

enlightened【ご参考】
各グローバルのデータサイズを調べる方法
^%GSIZE で出力される各項目の意味
グローバルのサイズをプログラミングで取得する方法

★^Integrity または ^INTEGRIT

データベースのセット、またはデータベース内のグローバルのサブセットの構造的な整合性を検証します。

%SYS>do ^Integrity
This utility is used to check the integrity of a database
and the pointer structure of one or more globals.
 
Output results on
Device:                // ファイルに出力したい場合はファイルパスを入力
Right margin: 80 =>
 
Stop after any error?  No=>
Do you want to check all databases?  No=> Y    // 全てのデータベースをチェック
                                               // No の場合はデータベースディレクトリを指定
: 

管理ポータル:
システムオペレーション > データベース > 整合性チェック
 

★^JOBEXAM

プロセス一覧を表示します。各プロセス詳細の表示や停止も行えます。

管理ポータル:
システムオペレーション > プロセス
 

★^JOURNAL

ジャーナリングを構成します。
^JOURNALユーティリティには以下のようなメニューがあります。

%SYS>do ^JOURNAL
 1) Begin Journaling (^JRNSTART)             // ジャーナリングの開始
 2) Stop Journaling (^JRNSTOP)               // ジャーナリングの停止
 3) Switch Journal File (^JRNSWTCH)          // ジャーナルファイルの切り替え
 4) Restore Globals From Journal (^JRNRESTO) // ジャーナルファイルのリストア
 5) Display Journal File (^JRNDUMP)          // ジャーナルファイルの表示
 6) Purge Journal Files (PURGE^JOURNAL)      // ジャーナルファイルの削除
 7) Edit Journal Properties (^JRNOPTS)       // ジャーナルオプションの変更
 8) Activate or Deactivate Journal Encryption (ENCRYPT^JOURNAL())    // ジャーナルファイル暗号化の Activate/Deactivate
 9) Display Journal status (Status^JOURNAL)  // 現在のジャーナル状態の表示
10) -not available-
11) -not available-
12) Journal catch-up for mirrored databases (MirrorCatchup^JRNRESTO) // ミラーデータベースのジャーナルキャッチアップ
13) -not available-


管理ポータル:
システム管理 > 構成 > システム構成 > ジャーナル設定
システムオペレーション > ジャーナル
 

★^LOCKTAB

現在使用しているロック情報の表示と削除を行います。

管理ポータル:
システムオペレーション > ロック 

enlightened【ご参考】
プログラム内でロック情報を取得する方法
 

★^mgstat

サンプリング周期(既定は2秒)単位でグローバルアクセスのカウンター情報を連続してファイルに記録します。
^mgstat は、^SystemPerformance ユーティリティを実行した場合にも実行され、HTML パフォーマンスレポートに含められます。

enlightened【ご参考】
Grafana ベースの mgstat(InterSystems Caché / Ensemble / HealthShareのシステム監視ツール)用 GUI
 

★^MIRROR

ミラーリング構成、管理、およびステータスの操作などを行います。

管理ポータル:
システム管理 > 構成 > ミラー設定

enlightened【ご参考】
データベースミラーリングを使用した HA および DR の構成例
パフォーマンス101
ミラージャーナルファイルの削除のタイミングと要件
ミラーリングの機能について


★^MONMGR

IRISインスタンスのメッセージログ(messages.log)を監視して、システムからレポートされたアラートを検出し、通知を生成したり(alert.log)、電子メールを送信します。

enlightened【ご参考】
メッセージログ(messages.log) のログ深刻度が 2 以上でメールを送るようにする方法


★^RESJOB

プロセスIDを指定して、実行中のIRISプロセスを停止します(現在のプロセスは停止できません)。^JOBEXAMを使うと、すべての実行中のプロセスのリストが表示されるので、その中で停止 (終了)、中断、または再開するプロセスを指定することもできます。

USER>zn "%SYS"
%SYS>do ^RESJOB
Force a process to quit InterSystems IRIS
 
Process ID (? for status report): 17456    // 消したいプロセスのPIDを入力して <Enter> すると消える
Process ID (? for status report):          // ? を入れるとプロセス一覧が表示される「「

現在のプロセスは、以下で停止できる。

 DO $SYSTEM.Process.Terminate()

以下は、^RESJOB ユーティリティと同じで、現在のプロセス以外のその他のプロセスを停止する。

 DO $SYSTEM.Process.Terminate(17456)


 

★^SECURITY

IRISセキュリティが適切に機能するのに必須のデータの設定とメンテナンスを実行します。
^SECURITYユーティリティには以下のようなメニューがあります。

%SYS>do ^SECURITY
1) User setup                     // ユーザ定義の表示、追加、編集を行います
2) Role setup                     // ロール定義の表示、追加、編集を行います
3) Service setup                  // サービス定義を表示または編集します
4) Resource setup                 //  リソース定義の表示、追加、編集を行います
5) Application setup              // アプリケーション定義の表示、追加、編集を行います
6) Auditing setup                 // 監査ログの閲覧や、エクスポートを行います
8) SSL configuration setup        // SSL/TLS 構成の表示、追加、編集を行います
9) Mobile phone service provider setup  // 携帯電話サービスプロバイダ定義を表示または編集します
10) OpenAM Identity Services setup      // OpenAM ID サービスを設定します
11) Encryption key setup          // データベース暗号化キーファイルの作成や管理を行います
12) System parameter setup        // システムワイドセキュリティパラメータの参照と編集を行います
13) X509 User setup               // ウェブサービスセキュリティで使用する X.509 認証情報の表示、追加、編集を行います
14) KMIP server setup             // KMIP(Key Management Interoperability Protocol) サーバの管理・構成を行います
15) Exit


管理ポータル:
システム管理 > セキュリティ

enlightened【ご参考】
CSP/RESTアプリケーションに接続できません。どのように調査すれば良いですか?
セキュリティ設定のエクスポートとインポートに関するTips
 

★^%SS

現システムでアクティブな各プロセスの状態の情報を一覧表示します(参照機能のみ)。
各プロセスの詳細情報を表示したり、プロセスを終了したい場合は ^JOBEXAM を使用します。

管理ポータル:
システムオペレーション > プロセス 
 

★^SYSLOG

共有メモリの一部分に記録している、IRIS内部のエラーログ情報を出力します。
このログには、システムに何らかの問題が生じている場合の重要な診断情報が含まれることがあります。

1) 実行方法は以下のようになります。

USER>zn "%SYS"
%SYS>do ^SYSLOG
Device:   // Enter 押下、または出力ファイルパスを入力
Right margin: 80 =>   // Enter 押下
Show detail? No => Yes   // Yes + <Enter> 押下
InterSystems IRIS System Error Log printed on May 19 2023 at 11:53 AM
--------------------------------------------------------
Printing the last 8 entries out of 8 total occurrences.
Err   Process    Date/Time           Mod Line  Routine            Namespace
3     30848      05/19/2023 09:01:02AM 91 1304 BF0+1373^SYS.Datab %SYS
:

※上記は Err = 3 なので、オペレーティングシステムエラーの「指定されたパスが見つかりません」のエラーになります。
    Errは必ずしもオペレーティングシステムのエラーとは限りません。詳細はサポートセンターまでお問い合わせください。

C:\>net helpmsg 3
指定されたパスが見つかりません。


2) SYSLOG情報は共有メモリに保存される情報であるため、IRISを停止すると失われます。
   以下のIRIS構成パラメータ設定することにより、IRIS停止時に内部エラーログ情報をmessages.log に記録します。

   管理ポータル:
   システム管理 > 構成 > 追加の設定 > 互換性 
   ShutDownLogErrors  偽(既定値) -> 真
 

enlightened【ご参考】
syslog-その正体と意味するもの
 

★^SystemCheck

IRISが使用しているプロセスの状態や共有メモリなどの情報収集を行います。
トラブル発生時には、まずこちらの診断レポート情報(^SystemCheck)を取得していただきます。
※Caché/Ensemble では ^Buttons というユーティリティ名でした

実行方法は以下のようになります(取得に数分間要します)。

%SYS>do ^SystemCheck
Diagnostic Report Build # 087 Evidence Logging Tool
 
This reporting tool provides the information required for InterSystems
Technical Support to analyze most issues. Please send the resulting file with
each and every new problem sent to Support.
 
This process will take approximately 5 minutes to complete. Please be patient.
 
Continue (Y)? y    // Enter 押下または yes(y) を指定します
Report Interoperability-specific info? [No] n    //no(n) を指定します
Collecting information, please do not interrupt this process.

Please wait approximately 30 seconds for %SS snapshots.
Please wait approximately 1 minute for "irisstat" snapshots.
 
GloStat information now being collected.
Please wait approximately 1 minute and 40 seconds.
 
FTP the following files to ISC Support:
c:\intersystems\iris\mgr\***202208260909.html in text mode - 579,486 bytes
%SYS>
// <インストールディレクトリ>\mgr 下にhtmlファイルが出力されます。***部分は使用されているライセンスにより異なります


Cache の場合、^Buttons情報の取得は以下のようになります。

%SYS>do ^Buttons
Diagnostic Report Build # 087 Evidence Logging Tool
 
This reporting tool provides the information required for InterSystems
Technical Support to analyze most issues. Please send the resulting file with
each and every new problem sent to Support.
 
This process will take approximately 5 minutes to complete. Please be patient.
 
Continue (Y)?       // Enter 押下または yes(y) を指定します
Please wait approximately 30 seconds for %SS snapshots.
Please wait approximately 1 minute for "cstat" snapshots.
 
GloStat information now being collected.
Please wait approximately 1 minute and 40 seconds.
 
Log file saved to: c:\intersystems\cache\mgr\***202407291050.html, 1,955,622 bytes
Upload the file(s) above to InterSystems Support.
%SYS>
// <インストールディレクトリ>\mgr 下にhtmlファイルが出力されます。***部分は使用されているライセンスにより異なります 


【注意】
2023.1.0より前のバージョンでは、^SystemCheck情報収集時にONにする「ECP」と「ミラーリング」のデバッグフラグがOFFにならない(クリアされない)事象が発生する場合があります。
対象バージョンをご使用の場合、^SystemCheck 情報取得後、以下のコマンドでデバッグフラグをクリアするようにしてください。

%SYS>Do ^REDEBUG
Old flag values = *****   // FF ではないときはクリアが必要
New flag values (in Hex): FF  // FF でクリア設定
Done

%SYS>


システムがハング状態になるなどしてターミナルが開けない場合は、Windowsコマンドプロンプトより IRISHung.cmd (Linux系は IRISHung.sh) を実行します。※Cacheの場合は、CacheHung.cmd(Linux系は CacheHung.sh)
数分後、<IRISインストールディレクトリ>\mgr 下に、IRISHung_mmss.html ファイルが生成されます。

C:\>cd /intersystems/iris/bin    // <インストールディレクトリ>\bin に移動
C:\InterSystems\IRIS\bin>IRISHung.cmd

Full name of InterSystems IRIS directory: C:\InterSystems\IRIS    // IRISインストールディレクトリを入力
Writing information to "C:\InterSystems\IRIS\Mgr\IRISHung_mmss.html"
Please wait...

Log file saved to:
"C:\InterSystems\IRIS\Mgr\IRISHung_mmss.html"
File size is ***** bytes long

C:\InterSystems\IRIS\bin>


enlightened【ご参考】
InterSystems IRISトラブル対応ガイド~情報収集編~(^SystemCheck/IRISHungの使い方)
※P.7 (1).診断レポート(^SystemCheck)の実行
※P.11 (2). IRISHung の実行(Linuxの場合は、IRISHung.sh)

【IRISベース】トラブル発生時の情報収集方法(IRIS / IRIS for Health / UCR 編)


★^SystemPerformance

IRIS インスタンスおよびインスタンスが稼働するプラットフォームに関する詳細なパフォーマンスデータを収集します。
※Caché/Ensemble では ^pButtons というユーティリティ名でした。

enlightened【ご参考】
InterSystemsデータプラットフォームとパフォーマンス – パート1
InterSystemsデータプラットフォームとパフォーマンス – パート2 
InterSystemsデータプラットフォームとパフォーマンス –パート3: CPUに注目


★^TASKMGR

ジャーナルのパージや、バックアップの自動実行などのタスクのスケジュールや管理を行います。

管理ポータル:
システムオペレーション > タスク

enlightened【ご参考】
タスクの起動でエラーが発生した時にメールで通知する方法

2 Comments
讨论 (2)0
登录或注册以继续
文章
· 八月 22, 2022 阅读大约需 1 分钟

正規表現を使ってパターンに一致した部分文字列を取得する方法

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

正規表現を使用する$Locate()関数がご使用いただけます。

正規表現の使用方法

使用方法の例は以下の様になります。

USER>write str
あいうえおかきくけこABC123456さしすせそ 
USER>write $locate(str,"[A-Za-z]{3}[0-9]{6}",,,val)
11 
USER>write val
ABC123
讨论 (0)1
登录或注册以继续