#ヒントとコツ

4 フォロワー · 368 投稿

特定の問題をエレガントまたは異常な方法で解決するためのInterSystems テクノロジーの一連の経験。

記事 Megumi Kakechi · 9月 3, 2024 2m read

これは InterSystems FAQ サイトの記事です。
HTTPレスポンスヘッダ情報を取得したい場合、以下のような方法があります。
開発中などに、送られてきたヘッダの項目名、そのデータを確認したい場合に、是非ご活用ください。
 

*CSPまたはRESTでヘッダ情報を取る場合

set var=""for {
   set var=$order(%request.CgiEnvs(var))
   if var=""quitset val=$get(%request.CgiEnvs(var))
   write var_": "_val,"<BR>"
 }

%request オブジェクトについて


*ターミナルで情報を取る場合

%Net.HttpRequest クラスの Head メソッドを使用します。

set http = ##class(%Net.HttpRequest).%New()
 set http.Server = "localhost"set http.Port = 80do http.Head("/csp/user/menu.csp")         // ヘッダ情報をリクエストするURLdo http.HttpResponse.OutputToDevice()
 set http = ""


*簡単に目で見る場合

Webゲートウェイの

0
0 153
記事 Megumi Kakechi · 8月 15, 2024 2m read

通常、Caché でエクスポートしたクラスやルーチンをIRISにインポートすることは可能ですが、IRISよりエクスポートしたクラスやルーチンを Caché にインポートすることはできません。

Caché にインポートしようとすると、以下のようなエラーになります。

USER>do$system.OBJ.Load("C:\temp\test.xml")
 
ロード開始 07/23/202416:50:42
ファイル C:\temp\test.xml を xml としてロード中
ERROR #6301 行: 2 オフセット: 117 これはCacheエクスポートファイルではありません。インポートできません。
読込時に 1 個のエラーを検出しました。
 


どうしても、古いバージョンにインポートする必要がある場合、「/exportversion」というエクスポート修飾子を使用することが可能です。

使用方法は以下のようになります。/exportversion には、エクスポートしたルーチンをインポートしたい環境のCacheバージョンを指定します。

USER>write$SYSTEM.OBJ.Export("test.mac","c:\temp\test2.xml","/exportversion=cache2018.1")


ただし、/exportversion

2
0 202
記事 Megumi Kakechi · 8月 20, 2024 3m read

これは InterSystems FAQ サイトの記事です。
messages.logに「Updates may become suspended due to low available buffers」のエラーが出ている場合、このインスタンスのバッファ利用可能サイズが低下していることが考えられます。

上記メッセージが頻繁に出力するようであれば以下の対処をご検討ください。

  •  データベースキャッシュの設定値が小さければ、値を増やします(ただし、その分物理メモリに余裕が必要です。)
  •  データベースキャッシュの設定値が十分に大きな設定値であれば、ライトデーモンのバッファの書き込み処理でのディスク性能不足の可能性が考えられる為、更新処理を分散して時間当たりの更新量を減らすか、ディスク装置の性能を上げます。 ※ストレージのメンテナンス(スナップ等によるバックアップ)や、他のサーバによるI/O負荷などによる影響も考えられます。


メッセージの意味は以下のようになります。
(1)  03/04/24-04:56:28:499 (3872) 1 Available buffers are getting low (25% above the threshold for suspending updates) 
(2)  03/04/24-04:56:58:599 (3872) 2 Updates

0
0 134
記事 Mihoko Iijima · 2月 29, 2024 5m read

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

新しいインデックスを定義した後、インデックスの再構築が完了する前にクエリを実行するとデータが存在しているにもかかわらず「検索結果0件」や検索結果数が徐々に増えるような状況が発生します。

インデックスを永続クラス定義(またはテーブル定義)に追加しコンパイルすることで今まで使用していたクエリ実行経路が削除され、再度同じクエリを実行するタイミングで新しいインデックス定義を含めた実行経路が作成されるためです。(この時にインデックス再構築が完了していないとインデックスデータが存在しない、または不完全であるため0件や徐々に検索結果数が増えるような状況を起こします。)

これを起こさなために、新しいインデックスの再構築が終了するまでクエリオプティマイザにインデックスを使用させないように指定する方法が用意されています。

※ 2024/8/2: 2024.1以降から利用できる方法を追加しました。

2024.1以降

CREATE INDEXのDEFERオプションを使用します(オプションを付けないCREATE INDEX文では、作成時にインデックスの再構築も同時に行われます)。

DEFERオプションを使用することで、インデックスは追加されますがインデックスの再構築は行われず、追加したインデックスはクエリオプティマイザが使用しないように「選択不可」に設定され

1
0 358
記事 Megumi Kakechi · 7月 28, 2024 2m read

これは InterSystems FAQ サイトの記事です。
通常SQLCODE -114(一致する行が既に別のユーザにロックされています)のエラーはロックが競合した場合に発生します。

こちらはレコードロック競合があったり、ロック閾値を超える更新を行いテーブルロックに昇格した際に、そのテーブルレコードに対して別のプロセスよりSelectを行い共有ロックを取ろうとして失敗した(ロック待ちがタイムアウトとなった)場合に発生します。

Selectで共有ロックを取る場合というのは、IRIS の ISOLATION LEVEL がREAD COMMITTED(デフォルトはREAD UNCOMMITTED)で、Selectを行った場合です。

例:Sample.Personテーブルにテーブルロックがかかった状態で以下を実行する場合

USER>:sql
SQL Command Line Shell
----------------------------------------------------
 
The command prefix is currently set to: <<nothing>>.
Enter <command>, 'q' to quit, '?' for help.
[SQL]USER>>set transaction isolation level read co
0
0 183
記事 Megumi Kakechi · 7月 23, 2024 4m read

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

JDBC および ODBC 経由でInterSystemsIRISから外部データベースにアクセスしたい場合、SQLゲートウェイを使用しリンクテーブルを作成して接続できます。

2023.1以降のバージョンでは、リンクテーブルに加えて、外部テーブル/FOREIGN TABLE を使用することが可能となりました(2024.1時点で実験的機能)。

外部テーブルというのは、物理的に別の場所に保存されているデータを IRIS SQL に投影する非常に便利な機能です。
外部テーブルを使用する場合は、Java(2023.1の場合は1.8~)を事前にインストールし、JAVA_HOME環境変数を設定するだけで、簡単に接続することが可能です。

※JAVA_HOME環境変数設定例:
 


外部テーブルの使用方法については、以下の記事で紹介しております。
レシピデータセットを外部テーブルで読み込み、組み込みPythonでLLMを使って分析する (Langchain + OpenAI)
 


こちらの記事では、外部テーブルで作成できる2種類のテーブル(「CSVファイル直接接続」と「外部DBへのJDBCゲートウェイ経由での接続」)の簡単なサンプル作成例と、外部テーブルの特徴を紹介しています。
 

1-1.

0
0 260
記事 Mihoko Iijima · 7月 16, 2024 9m read

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

管理ポータル > [システム管理] > [セキュリティ] 以下の設定は、%SYSネームスペースにあるSecurityパッケージ以下クラスが提供するメソッドを利用することでプログラムから作成することができます。

以下シナリオに合わせたセキュリティ設定例をご紹介します。

シナリオ:RESTアプリケーション用設定を作成する

事前準備

シナリオの中で使用するソースを2種類インポートします。

アプリケーション用RESTディスパッチクラスをインポートします。

Class Test.REST Extends%CSP.REST
{

Parameter CHARSET = "utf-8";Parameter CONTENTTYPE = "application/json";Parameter CONVERTINPUTSTREAM = 1;
XData UrlMap [ XMLNamespace = "http://www.intersystems.com/urlmap" ]
{
<Routes>
<Route Url="/hello" Method="POST" Call="TestInsert" Cors="true" />
<Route Url="/hello" Method="DELETE" Call="TestDel
0
0 160
記事 Megumi Kakechi · 7月 16, 2024 2m read

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

SQLゲートウェイの接続設定は管理ポータルで作成できますが、プログラムでも作成が可能です。

管理ポータル:
[システム管理] > [構成] > [接続性] > [SQLゲートウェイ接続]

こちらのトピックでは、ODBC/JDBCそれぞれの設定をプログラムで行う方法をご紹介します。


--- SQL Gateway for ODBC ----

set gc = ##class(%SQLConnection).%New()
 set gc.Name = "test"set gc.DSN = "IRIS User"set gc.Usr = "_system"set gc.pwd = "SYS"set gc.bUnicodeStream = 1set gc.useCOALESCE = 1write gc.%Save()
 


--- SQL Gateway for JDBC ----

set gc = ##class(%SQLConnection).%New()
 set gc.isJDBC = 1set gc.Name = "testj"set gc.Usr = "_system"set gc.pwd = "SYS"set gc.driver = "com.intersyst
0
0 169
記事 Mihoko Iijima · 7月 11, 2024 4m read

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

管理ポータル > [システム管理] > [セキュリティ] 以下の設定は、%SYSネームスペースにあるSecurityパッケージ以下クラスが提供するメソッドを利用することでプログラムから作成することができます。

ユーザ設定については、Security.UsersクラスCreate()メソッドを使えば作成できますが、ユーザを作成するだけでは適切な権限が付与されずに目的のデータにアクセスできない状況もあります。

例)testAユーザ作成

%SYS>set st=##class(Security.Users).Create("testA",,"testA","これはテストユーザです","USER")

%SYS>write st
1

上記メソッドで作成した結果は以下の通りです。(ロール付与無し、テーブルに対する権限の割り当てもなしの状態)

 

以降の解説では、以下のシナリオをもとにした設定を行っていきます。

シナリオ:アプリケーション開発者用ロールとユーザを作成する

1) アプリケーション開発者のtestAは、USERネームスペースにログインするアプリケーション開発者です(=%DevelopmentリソースのUse許可を与えます)。

2)

0
0 116
記事 Megumi Kakechi · 7月 10, 2024 5m read

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

こちらの記事では、「IRISでシャドウイングの代わりにミラーリングを構成する方法」を紹介しました。

今回は、「プログラムでシャドウイングの代わりにミラーリングを構成する方法(Windows版)」を紹介します。
【今回のサンプル・ミラー構成について】

  正サーバ(ミラー・プライマリ) 副サーバ(ミラー・非同期)
ミラー名 MIRRORSET MIRRORSET
ミラーメンバ名 MACHINEA MACHINEC
IPアドレス 35.77.84.159 54.248.39.237


では、ミラーの構成手順をご紹介します。手順は以下になります。
 

<ミラーリングのプライマリ設定>     // MACHINEA(正サーバ)

1. ISCAgentの自動起動設定および起動         ※Windowsコマンドプロンプトで実行

C:\Users\Administrator>sc config ISCAgent start=auto
C:\Users\Administrator>sc start ISCAgent

 

2. [システム管理] > [構成] > [ミラーサービスの有効化]     ※IRISターミナルで実行

zn"%SYS"set status=##class(
0
0 275
記事 Mihoko Iijima · 7月 9, 2024 2m read

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

メッセージログ(messages.log)/コンソールログ(cconsole.log) に以下のようなメッセージが表示される場合があります。

03/22/18-14:27:34:624 (1851) 2 [SYSTEM MONITOR] WriteDaemon Alert: Write Daemon still on pass 320186

このメッセージ出力は、ライトデーモンのデータベースファイルへの書き込み処理の遅延を示しています。
その原因としては、ディスクI/O負荷が高く、そのI/O要求量に対してディスク処理性能が不足していることが考えられます。

ディスクI/O負荷の原因としては以下が考えられます。

  • アプリケーションによるデータへの更新や参照処理が集中した
  • アンチウイルスソフトのスキャンやデータベースバックアップソフト等によるディスクへのI/O負荷

もしアンチウイルスソフトがインストールされている場合は、「アンチウイルスソフト(セキュリティソフト)のスキャンから除外してほしいリスト」に記述している情報を参考に、InterSystems製品の対象ファイルをスキャンの対象外に設定変更してください。

このメッセージは、InterSystems製品のシステムモニタによりライトデーモンの動作状況が監視され、ドキュメント「システ

0
0 125
記事 Mihoko Iijima · 7月 7, 2024 4m read

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

監査ログはシステムDB内テーブル(%SYS.Audit)に記録されていますので、そのテーブルに対するクエリを実行して抽出したり、%SYS.Auditテーブルに用意されていストアドプロシージャを利用して情報を取得しファイル出力するようにプログラムを用意することもできます。

以下にご紹介する内容は「監査ログをプログラムで出力(ユーザやイベント指定など)する方法」に関連した内容で、監査ログのファイル出力を管理ポータルの機能を利用した例とプログラムを利用した例でご紹介します。

 

1. 管理ポータルの印刷機能を使う

管理ポータル > [システムエクスプローラ] > [SQL]を開き、%SYSネームスペースに接続します。

システムのチェックを入れ、スキーマに%SYSを指定した後、プロシージャの階層を展開するとプロシージャリストが参照できます。

%SYS.Audit_ で始まるプロシージャが監査ログに対して実行できるプロシージャです。

SQL文例)InterSystems製品内ユーザのSuperUserに対する監査ログをストアドプロシージャ:%SYS,Audit_ListByUser を利用して出力しています。

call %SYS.Audit_ListByUser(,,,,,'SuperUser')

引数については、クラスリファレンス:%SYS.Aud

0
0 156
記事 Mihoko Iijima · 7月 4, 2024 9m read

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

PythonスクリプトファイルやPythonで記述されたIRIS内メソッドを呼び出す際、エラーが発生した場合の対応方法をご紹介します。

説明使用するコードや資料PDFは公開しています👉 test1.pyFS.Utilsクラスコードのコピー元ビデオで解説している資料PDF

Embedded Python 自習用ビデオをご用意しています(項目別にYouTubeプレイリストをご用意しています)。

各プレイリストについて詳しくはこちらをご参照ください👉【はじめてのInterSystems IRIS】Embedded Python セルフラーニングビデオシリーズ公開!

0
0 443
記事 Mihoko Iijima · 7月 4, 2024 2m read

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

InterSystems製品のサーバサイドでファイル入出力を行うと、文字列はシステムで設定されたファイル入出力用文字コードに自動変換され、文字単位でREADします。

ファイルから入力する文字をバイト単位で操作するためには、自動変換を行わない無変換の状態でファイル入力を行い指定バイトずつ読みながら読んだ分だけUnicodeに手動で変換していく必要があります。

変換には$ZCONVERT()関数を使用します。($ZCONVERT()には省略形があり$ZCVT()でも同様の操作が行えます。)

なお、READした指定バイトを変換する際、文字の全バイトが含まれない場合もあるため、途中までの読み取りになった文字列を第4引数に指定する変数に設定できるようになっています。
次回読み取り時に途中だった文字を自動的に先頭に追加し、$ZCONVERT()の処理を実行します。

《メモ》ファイル入出力の文字コードについては、以下管理ポータルの画面で確認できます。
管理ポータル > 構成 > 国際言語設定 > 構成したデフォルト値
 入力/出力テーブルの表の「ファイル」

以下の文章がファイルにUTF8で保存されているとします。

2024/4/19:強風でしたが良い天気でした

無変換でファイル入力を行うには、%Stream.FileBinaryクラスを使用してファイ

0
0 152
記事 Megumi Kakechi · 7月 1, 2024 6m read

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

IRIS2024.1以降のバージョンをインストールしようとした際に、以下のようなエラーになることがあります。

This CPU is not supported by this version of IRISHealth, which requires “AVX” and “BMI” CPU instructions.


これは、2024.1以降のバージョンより最小CPUの条件として、AVX および BMI 拡張命令が含まれることが条件となっているのですが、ご使用の環境に含まれない(仮想環境やFTサーバ等の特殊なシステムでは無効化されている場合も)ときに出力されるエラーです。

最小CPUサポートバージョンについては、以下のドキュメントをご覧ください。
Minimum Supported CPU

現在使用中のCPUの拡張命令セットの情報の確認方法については、以下のDC記事をご覧ください。
CPU のマイクロアーキテクチャファミリと命令セットの判定方法


Linuxの場合は、lscpuコマンド、または lshw -class processor コマンドで確認できます。

実行例:

lscpu
アーキテクチャ:                      x86_64
CPU 操作モード:                      32-bit,
0
0 389
記事 Mihoko Iijima · 3月 11, 2024 2m read

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

現時点(2024年3月)では、コミュニティに掲載されているPythonライブラリ「iris-dollar-list」を利用することでIRISの$LIST()形式のデータをPythonのリストとして利用することができます。

※標準ツールではありませんがご利用いただけます。詳細はコミュニティの記事「もう1つの $ListBuild() の実装:Pythonライブラリ「iris-dollar-list」」をご参照ください。

WindowsにインストールしたIRISで使用する場合は、以下の方法で「iris-dollar-list」をインストールしてください。

※Windows以外にインストールしたIRISでは、pipコマンドを利用した通常の方法でインストールできます。

コマンドプロンプトを開き、以下実行します。(IRISをデフォルトインストールしたときのディレクトリで掲載しています)

>cd C:\InterSystems\IRIS\bin> irispip install --target C:\InterSystems\IRIS\mgr\python iris-dollar-list

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

USER>set^ListTest=$LISTBUILD("test","あいうえお",101)

USER>:py
1
1 196
記事 Megumi Kakechi · 6月 11, 2024 6m read

SSL/TLS を使用するように InterSystems IRIS スーパーサーバを構成した際に、「管理ポータルに接続できなくなった」というお問い合わせを時々いただきます。
こちらの記事では、その際の対処法をご案内します。


スーパーサーバを SSL/TLS 化するために、以下のドキュメントにある方法を設定されると思います。
TLS を使用するための InterSystems IRIS スーパーサーバの構成

その際に、SSL/TLSサポートレベル  を 「必須」にしてしまうと、管理ポータルに接続できなくなる場合があります。

    
※管理ポータル:
     IRIS2024.1 ~ [システム管理] > [セキュリティ] > [スーパーサーバ]
     ~IRIS2023.1  [システム管理] > [セキュリティ] > [システム・セキュリティ] > [システムワイドセキュリティパラメータ]


「必須」に設定する場合、すべてのクライアントからの接続を SSL/TLS 化する必要があります。
これは、WebゲートウェイからIRISへの接続にもあてはまるため、「Webゲートウェイ <==> IRIS」間を SSL/TLS 設定していない場合は、管理ポータル(REST/CSPを含む)に接続ができなくなってしまいます。

「有効」に設定する場合は、 SSL/TLS

0
0 235
記事 Megumi Kakechi · 5月 27, 2024 4m read

こちら の記事では、LinuxでODBC接続を行う方法  をご紹介しました。

今回は、SSL/TLS を使用するように InterSystems IRIS スーパーサーバを構成 した IRIS に対して、ODBCで SSL/TLS 接続をする方法をご紹介します。

LinuxでODBC接続を行う方法 の記事で紹介している手順で、SSL/TLS なしでODBC接続できる環境を用意していることを前提にご説明します。

手順は以下のようになります。手順の詳細は、この後で説明します。


1.CA証明書を用意します

2.TLS 構成ファイルの設定を行います

3.TLS 構成ファイル odbcssl.ini を作成します

4.環境変数 ISC_SSLconfigurations で <path>/odbcssl.ini を指定します

5.IRISへのODBC接続確認をします



1.CA証明書を用意します

CA証明書に問題がないか証明書情報を確認します。
※ ***.***.***.*** :接続先IRISサーバのIPアドレス

# openssl s_client -connect ***.***.***.***:1972 -showcerts -CAfile /home/ec2-user/ca_certificate.crt < /dev/null
CONNECTED(00000003)
:
No ALPN
0
0 497
記事 Megumi Kakechi · 5月 24, 2024 4m read

こちら の記事では、LinuxでJDBC接続を行う方法  をご紹介しました。

今回は、SSL/TLS を使用するように InterSystems IRIS スーパーサーバを構成 した IRIS に対して、JDBCで SSL/TLS 接続をする方法をご紹介します。

LinuxでJDBC接続を行う方法 の記事で紹介している手順で、SSL/TLS なしでJDBC接続できる環境を用意していることを前提にご説明します。

手順は以下のようになります。手順の詳細は、この後で説明します。


1.CA証明書を用意します

2.Java キーストアに証明書をインポートします

3.Java ファイルを含むディレクトリに、SSLConfig.properties という名前の構成ファイルを作成ます

4.Java のコードに SSL/TLS の使用を指定する設定を追加します



1.CA証明書を用意します

最初に、CA証明書を用意します。証明書に問題がないか証明書情報を確認します。
※ ***.***.***.*** :接続先IRISサーバのIPアドレス

# openssl s_client -connect ***.***.***.***:1972 -showcerts -CAfile /home/ec2-user/ca_certificate.crt < /dev/null
CONNECTED(00000003)
:
No
0
0 476
記事 Mihoko Iijima · 5月 20, 2024 2m read

InterSystems製品のバックアップ方法の中の4つの目方法は「コールドバックアップ」です。

InterSystems製品を停止できるときに利用できるバックアップ方法です。別サーバに環境を移植するときや、コミュニティエディションから製品版キットのインストール環境にデータベースを移植する場合などにもお使いいただけます。

 

バックアップ手順

1. InterSystems製品を停止する

2. バックアップしたいデータベースを退避する

3. InterSystems製品を開始する

 

既存環境から新環境へ移植する場合などの手順

1. 既存環境のInterSystems製品を停止する。

既存環境の設定など含めて全てを新環境に移植する場合は、以下記事の退避内容をご確認いただき、ご準備ください。

2. 新環境にInterSystems製品をインストールする。

1. の手順でコピーしていた情報をもとに、新環境の構成を設定します。

3. 新環境のInterSystems製品を停止する。

4. 既存環境のデータベースファイル(.DAT)を新環境の対象となるデータベースディレクトリに配置する(置換する)

対象:ユーザ用DB

5.

0
0 148
記事 Mihoko Iijima · 5月 20, 2024 5m read

InterSystems製品のバックアップ方法の中の3つの目方法は、「並行外部バックアップ」についてです。

この方法は外部バックアップと異なり、スナップショットなどのストレージ機能がない環境に向いている方法でオンラインバックアップよりも高速にバックアップできます。(古いバージョンのInterSystems製品でも利用できるバックアップ方法です。)

ただし、バックアップやリストア手順が複雑になります。

並行外部バックアップの利用を検討される際は、事前にリストア手順についてもテスト環境などでご確認いただくことを推奨します。

 

並行外部バックアップ概要

データベースファイル(.DAT)を通常のコピーコマンドなどで退避します。

データベースファイルのサイズによってはコピー時間が長くなります。外部バックアップの方法を利用するとライトデーモン凍結時間のタイムアウトを迎えてしまうため、バックアップを正しく完了できません。

そのため並行外部バックアップでは、ライトデーモンの凍結を行わずデータベースのダーティコピーを行う方法を採用しています。

ダーティコピーのバックアップファイルだけでは不完全であるため、最後にオンラインバックアップの差分バックアップを行うことで完全なバックアップを取得します。

最後の手順に差分バックアップを行うため、オンラインバックアップと同様にデータベースリストを事前に作成する必要があります。

メモ

0
0 222
記事 Mihoko Iijima · 5月 16, 2024 27m read

この記事は、「インターシステムズ製品をバックアップする前に確認したいこと」に続く記事で、InterSystems製品のバックアップの手法の中の「オンラインバックアップ」の仕組みと、バックアップ・リストア手順について解説します。

オンラインバックアップは、InterSystems製品が用意するバックアップ機能を利用する方法で、バックアップ対象に設定した全データベースの使用済ブロックをバックアップする方法です。

InterSystems製品のデータベースには、サーバ側で記述したコード、テーブル定義/クラス定義、データ(レコード、永続オブジェクト、グローバル)が格納されていますので、これらすべてが1つのファイルにバックアップされます。

データ量が増えればバックアップファイルサイズも大きくなります。 また、データ量の増加に伴いバックアップ時間も長くなります。

バックアップ時間に制限のない環境や、ユーザからのアクセスがない環境(例:ディザスタリカバリの目的で配置しているミラーリングの非同期メンバ)のバックアップ方法としては最適ですが、バックアップ時間に制限がある場合は不向きです。

バックアップ時間をできるだけ短くしたい場合は、推奨方法である「外部バックアップ」や、手順が少し複雑になりますが「並行外部バックアップ」を取り入れるなどご検討ください。

外部バックアップもオンラインで

0
0 414
記事 Mihoko Iijima · 5月 16, 2024 26m read

開発者の皆さん、こんにちは。

この記事は、「インターシステムズ製品をバックアップする前に確認したいこと」に続く記事で、InterSystems製品のバックアップの手法の中の「外部バックアップ」の仕組みと、バックアップ・リストア手順について解説します。

まず、「外部バックアップ」とは、InterSystems製品の専用ルーチン使用せず、InterSystems製品以外のバックアップソリューションを使用してデータベースをバックアップする方法で、現時点の推奨されるバックアップ方法です。

詳細な説明、手順については、ドキュメント「外部バックアップ」をご参照ください。

外部バックアップでは、主に、論理ディスク・ボリュームの有効な "スナップショット" を迅速に作成するテクノロジと共に使用します。

例えば、

  • Windowsサーバの場合は、VSS(ボリューム・シャドウ・コピー・サービス)と組み合わせて利用する
  • AWSのEBS Snapshotと組み合わせて利用する

スナップショット・テクノロジが使用できないシステムであっても、後述する「特別な考慮」で対応できればご利用いただけます。

それでは早速、外部バックアップの前後で必要となるIRIS側の手続きと、バックアップとリストアについて確認していきましょう!

0
0 411
記事 Mihoko Iijima · 5月 16, 2024 9m read

開発者の皆さん、こんにちは。

この記事では、InterSystems製品のバックアップ方法(4種類)のご紹介と、バックアップを行う前に確認しておきたい内容について解説します。

また、この記事に続くシリーズ記事では、それぞれのバックアップの仕組みと操作例を交えたバックアップとリストア手順を解説していきます。

シリーズ記事の中で行っているバックアップ練習、リストア練習の内容については、インターシステムズの講師付きトレーニングコースの中でも取り入れている内容で、一人1環境の演習環境内で実際にお試しいただいています。

参加者の皆さんと一緒に演習を進めて行きますと、データベースリストアの後に行うジャーナルリストアについては、ユーティリティから出力される確認項目が多いため、皆さん慎重に確認されながらリストアの指示を入力されています。そのため、リストア開始前の手続きや準備に意外と時間がかかっています。(実行例

普段なかなかバックアップやリストアを行う機会がないかと思いますが、万が一の場合に備え練習いただくことで実際のリストア作業が発生した際も落ち着いて対処

0
0 166
記事 Toshihiko Minamoto · 5月 14, 2024 8m read

「30 秒も経ってるのにサービスを受けられないなんて、 あり得ない! もう結構!」

「大変申し訳ございません。 次回からはご予約なさってはいかがでしょうか。」

お気に入りのレストランでこんなコメントを聞いたら、そんな発言はばかばかしいと思うのではないでしょうか。 でも、API のコンテキストでは、まったく合理的な意見です。 お気に入りのレストランと同じように、API にも常連客がいます。よく訪問するユーザーのことです。 同じように繰り返し予約が可能であればよいと思いませんか?

これには、IRIS の基本機能がいくつか関わってきます。 まず、%SYSTEM.License インターフェースを理解する必要があります。 これは、IRIS インスタンスのライセンス使用状況に関する情報を取得するために提供されているインターフェースです。 次に、%CSP.SessionEvents クラスについて学ぶ必要があります。 このクラスを使うと、CSP セッションのライフサイクル全体で呼び出される様々なメソッドをオーバーライドできます。

まずは、%SYSTEM.License インターフェースから見ていきましょう。このクラスには、$SYSTEM.License を使って呼び出せるメソッドもあれば、##class(%SYSTEM.License) で呼び出す必要のあるメソッドもあります。

0
1 114
記事 Toshihiko Minamoto · 5月 9, 2024 3m read

VS Code でファイルを編集しているときに、グローバル値のチェックやいくつかの ObjectScript コマンドの実行が必要だったことはありませんか? これが可能になりました。しかもセットアップは不要です! vscode-objectscript 拡張機能バージョン 2.10.0 以上を持っており、InterSystems IRIS 2023.3 以降に接続している場合は、サーバーの場所に関係なくサーバーへのターミナル接続を開けるようになりました。

この新しいターミナルを開く方法には 3 つあります。

WebSocket ターミナルは、読み取り、ネームスペースの切り替え、中断、カスタムターミナルプロンプトなど、標準 ObjectScript シェルの多数の機能をサポートしていますが、 この記事では、これに特有の 3 つの機能に焦点を当てたいと思います。

  • コマンド入力は構文の色付けがされるため、実行する前に入力

0
0 286
記事 Megumi Kakechi · 5月 6, 2024 4m read

前回、LinuxでODBC接続を行う方法 をご紹介しました。

今回は、LinuxでJDBC接続を行う方法 をご紹介します。作業は、root ユーザ で行います。

はじめに、Linuxのバージョンを確認します。

$ cat /etc/os-release
NAME="Red Hat Enterprise Linux"
VERSION="9.4 (Plow)"
:


1. yumパッケージのアップデートを行います

$ su -
Password:
Last login: Tue May  7 01:04:35 UTC 2024 on pts/0
# yum update


2. Java をインストールします

今回は、Adoptium OpenJDK の Version 8 - LTS を使用してテストします。
※ *.tar.gz は、/usr/java 以下にダウンロードします。

#cd /usr/java# ls
OpenJDK8U-jdk_x64_linux_hotspot_8u412b08.tar.gz
# tar zxvf OpenJDK8U-jdk_x64_linux_hotspot_8u412b08.tar.gz
:
# ls
jdk8u412-b08  OpenJDK8U-jdk_x64_linux_hotspot_8u412b08.tar.gz


3.

0
0 1352
記事 Megumi Kakechi · 5月 2, 2024 3m read

こちらの記事では、LinuxでODBC接続の設定を行う方法をご紹介します。


はじめに、Linuxのバージョンを確認します。

$ cat /etc/os-release
NAME="Red Hat Enterprise Linux"
VERSION="9.4 (Plow)"
:


1. yumパッケージのアップデートを行います

$ sudo yum update


2. unixODBCをインストールします

$ sudo yum install unixODBC

確認します

$which odbcinst
/usr/bin/odbcinst
$which isql
/usr/bin/isql
$ odbcinst -j
unixODBC 2.3.9
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /home/ec2-user/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8


3. IRISクライアントをインストールします

※Linuxのバージョン

0
0 925
記事 Megumi Kakechi · 4月 25, 2024 2m read

大きなサイズのデータを持つフィールドに対してインデックスを作成すると、<SUBSCRIPT>エラーとなることがあります。

これは、グローバルの添え字(サブスクリプト)のサイズには制限があり、制限を超えるとエラーとなるためです。

例えば、以下のようなインデックスの場合、

^Sample.PersonI("NameIdx"," xxx...xxx",1)       =       ""

グローバル名+サブスクリプト部(=の左側)が、エンコード文字数で最長 511 文字を超えるとエラーとなります(日本語の場合はもっと小さな文字数です)。

※ご参考:グローバル参照の最大長


大きいデータを持つカラムに対してインデックスを設定したい場合の回避策としては、こちらの ドキュメント にありますように
「該当のプロパティのインデックス照合文字列を任意の文字数(例:128文字)に制限した照合を定義」
する方法があります。


具体的には、以下の2つの方法になります。
※クラス定義の変更/保存/コンパイル+インデックスの再構築が必要です。

1. プロパティ定義で対応する:

Property Name as%String (COLLATION = "TRUNCATE(128)", MAXLEN = 300);
Index NameIdx On Name;   // インデックスは大文字小文字を区別する// もしくはPro
0
0 152
記事 Mihoko Iijima · 1月 25, 2024 4m read

開発者の皆さん、こんにちは。

こちらの記事👉「Apache Webサーバ(プライベートWebサーバ: PWS)インストレーションの廃止」でご案内していましたが、コミュニティエディションを除くInterSystems製品のバージョン2023.2以降では、プライベートWebサーバ(*)を使用した管理ポータル/Webアクセスを非推奨に変更しました。

(*)プライベートWebサーバとは、バージョン2023.1以前のInterSystems製品をインストールすると自動でインストールされる簡易的なApacheで、52773番ポートで管理ポータルやWebアクセスのテストにご利用いただけるWebサーバです。(本番運用環境には適さない簡易的なWebサーバです)

新規インストール/アップグレードインストールによるプライベートWebサーバの利用可否やインストール時の選択項目の違いについての概要は以下表をご参照ください。

3
0 625