Ensemble のアップグレード
Ensemble の現在のリリースにアップグレードするかどうかを考慮する場合、今回のリリースにおける新機能と拡張機能、および前回のインストール後に追加された各リリースの互換性の問題を確認する必要があります。"Ensemble リリース・ノート" の以下の章では、このような情報について記載しています。
-
アップグレードの互換性の問題
-
リリース履歴
Ensemble で InterSystems のミラーリング・テクノロジを使用する場合は、“Ensemble ミラーのアップグレード” で説明している特別な追加手順を参照してください。
Ensemble は Caché 上で実行します。つまり、新しい Ensemble のリリースでは、Ensemble への変更のほか、基盤となる Caché テクノロジにおける多数の変更も取り入れられています。その内容は以下のテーブルのとおりです。
アップグレードの対象 | 基盤となる変更 |
---|---|
Ensemble 2017.2 から Ensemble 2018.1 | Caché 2017.2 から Caché 2018.1 |
Ensemble 2017.1 から Ensemble 2018.1 | Caché 2017.1 から Caché 2018.1 |
Ensemble 2016.2 から Ensemble 2018.1 | Caché 2016.2 から Caché 2018.1 |
Ensemble 2016.1 から Ensemble 2018.1 | Caché 2016.1 から Caché 2018.1 |
Ensemble 2015.2 から Ensemble 2018.1 | Caché 2015.2 から Caché 2018.1 |
Ensemble 2015.1 から Ensemble 2018.1 | Caché 2015.1 から Caché 2018.1 |
Ensemble 2015.1 から Ensemble 2018.1 | Caché 2015.1 から Caché 2018.1 |
Ensemble 2014.1 から Ensemble 2018.1 | Caché 2014.1 から Caché 2018.1 |
Ensemble 2013.1 から Ensemble 2018.1 | Caché 2013.1 から Caché 2018.1 |
Ensemble 2012.2 から Ensemble 2018.1 | Caché 2012.2 から Caché 2018.1 |
Ensemble 2012.1 から Ensemble 2018.1 | Caché 2012.1 から Caché 2018.1 |
Ensemble 2010.2 から Ensemble 2018.1 | Caché 2010.2 から Caché 2018.1 |
Ensemble 2010.1 から Ensemble 2018.1 | Caché 2010.1 から Caché 2018.1 |
Ensemble 2009.1 から Ensemble 2018.1 | Caché 2009.1 から Caché 2018.1 |
Ensemble 2008.2 から Ensemble 2018.1 | Caché 2008.2 から Caché 2018.1 |
Ensemble 2008.1 から Ensemble 2018.1 | Caché 2008.1 から Caché 2018.1 |
Ensemble 2007.1 から Ensemble 2018.1 | Caché 2007.1 から Caché 2018.1 |
Ensemble 4.0.1 から Ensemble 2018.1 | Caché 5.2.3 から Caché 2018.1 |
Ensemble 4.0 から Ensemble 2018.1 | Caché 5.2.1 から Caché 2018.1 |
Ensemble 2008.2 以前のバージョンからアップグレードしている場合、Ensemble 2018.1 に直接アップグレードできません。まず中間のバージョンにアップグレードする必要があります。詳細は、"Caché インストール・ガイド" の "サポート対象アップグレード・パス" を参照してください。
Ensemble にはリリース 2011.1 はありませんでした。
以前のバージョンの Ensemble からアップグレードする際には、Caché ドキュメントの "Caché リリース・ノートおよびアップグレード・チェックリスト" が役立ちます。
2007.1 リリース以降の Ensemble は、同じバージョン番号の Caché 上で実行するようになっています。
アップグレードのインストールを実行する前に、この章の説明を確認し、アップグレード前に実行しておく必要があるタスクがないかどうかを判断します。次のバージョンから今回のリリースにアップグレードできます。
-
Ensemble 2017.1
-
Ensemble 2016.2
-
Ensemble 2016.1
-
Ensemble 2015.2
-
Ensemble 2015.1
-
Ensemble 2014.1
-
Ensemble 2013.1
-
Ensemble 2012.2
-
Ensemble 2012.1
-
Ensemble 2010.2
-
Ensemble 2010.1
-
Ensemble 2009.1
-
Ensemble 2008.2
-
Ensemble 2008.1
-
Ensemble 2007.1
Ensemble のこのリリースにアップグレードする場合は、"Ensemble 2007.1 以降からのアップグレード" の指示に従ってください。
次のバージョンから Ensemble のこのリリースにアップグレードするには、追加のアップグレード手順を実行する必要があります。
-
Ensemble 4.0.1
-
Ensemble 4.0
"Ensemble 4.0 または 4.0.1 からのアップグレード" の指示にも従ってください。
バージョン 4.0 より前の Ensemble や、Ensemble のフィールド・テスト・バージョンを使用しており、これらを最新の Ensemble 製品にアップグレードしたい場合は、インターシステムズのサポート窓口Opens in a new tabまでお問い合わせください。
Ensemble 2007.1 以降からのアップグレード
Ensemble 2007.1 以降から Ensemble のこのリリースにアップグレードする場合は、Caché のアップグレードに関するドキュメントに説明のあるファイルが削除されるほか、以下の Ensemble ファイルも削除されます。
-
ENSDEMO ネームスペースにあるすべてのユーザ・ファイル
-
通常 Ensemble 用に予約されているパッケージ内のユーザ・ファイル (CSPX、Demo、Ens、または EnsLib)
これらのネームスペース内のいずれかのファイルをカスタマイズした場合や、これらのネームスペースに新しいファイルを追加した場合は、アップグレード前にそれらのファイルを保持する必要があります。これらのファイルを保持するには、アップグレードを実行する前にエクスポートする必要があります。アップグレードが完了した後で、エクスポートしたファイルを任意のネームスペースにインポートします。
プロダクションを実行中の Ensemble インスタンスはアップグレードできません。Ensemble を実行している状態でアップグレードを実行すると、その Ensemble は強制的にシャットダウンされます。実行中のプロダクションをすべて停止し、Ensemble を正常にシャットダウンしてから、アップグレードのインストールを開始することをお勧めします。
いくつかの環境では、Ensemble でネームスペースを作成し、その後でネームスペースから Ensemble マッピングを削除する必要があります。これを行う場合は、これらのマッピングを削除する影響をよく理解してから行ってください。これらのマッピングを削除した場合は、ネームスペースに対して Ensemble を無効化する必要があります。Ensemble に対して無効化されるネームスペースを新規作成するには、ネームスペースを作成する際に [これを Ensemble ネームスペースにする] チェックボックスのチェックを外します。詳細は、"Caché システム管理ガイド" の “Ensemble インスタンスでのネームスペースの作成” を参照してください。ネームスペースが既に作成され、Ensemble マッピングが削除済みの場合は、ネームスペースで Ensemble を無効化するために、ターミナル・ウィンドウを開き、以下のコマンドを実行できます。
Do ##class(%Library.EnsembleMgr).DisableNamespace("namespace",1)
マッピングを削除したものの Ensemble が無効化されていない場合は、Ensemble をアップグレードすることでマッピングを再作成します。このトピックに関する詳細は、インターシステムズのサポート窓口Opens in a new tabまでお問い合わせください。
既存の Ensemble インストールを Ensemble のこのリリースにアップグレードする手順は次のとおりです。
-
実行中のすべてのプロダクションを終了します。
-
すべてのネームスペースですべてのプロダクションの自動開始オプションを無効にします。"Ensemble の管理" の “プロダクション自動開始の管理” を参照してください。
-
アップグレード時に削除されるファイルを保持するには、それらをエクスポートしておきます。
-
Ensemble 2010.2 またはそれ以前の Ensemble でカスタムの検索テーブルを使用しており、既存の Ensemble をアップグレードする場合は、アップグレード前に ENSLIB ネームスペースでターミナルから以下のコマンドを実行して、既存のメタデータを再配置するための準備をします。
ENSLIB>Merge ^%SYS("Ensemble","Upgrade","SearchTable","Data") = ^Ens.Config.SearchTablePropD
アップグレード時に、Ensemble によってこの場所がチェックされ、元の検索テーブル・クラスが存在するネームスペースに既存のメタデータが追加されます。この処理は、該当するネームスペース内の検索テーブルのコンパイル前に実行されます。詳細は、"Ensemble リリース・ノート" の “アップグレードの互換性の問題” の章で “検索テーブルの検証の更新” を参照してください。
アップグレード・プロセスでは、すべての検索テーブル・クラスが自動的にリコンパイルされるため、アップグレード後にコンテンツをインポートしたり、グローバルを破棄したりしないでください。アップグレード・プロセスでは、アップグレード後も検索テーブルのメタデータが正しく維持されるように確実に処理されます。また、変換後のデータの整合性も保証されます。そのため、アップグレードを実際に開始する前に、アップグレード・プロセスを十分にテストし、元のメタデータに何か問題が見つかった場合は事前に対処することを強くお勧めします。
-
大規模なメッセージ・ウェアハウスがあり、テーブルのチューニングを実行した場合、または拡張サイズの値と選択性の値を手動で設定した場合は、新しいデフォルト値が既存のシステムに適合することを確認するか、またはアップグレード後にテーブルのチューニングを実行してください。テーブルのチューニングも、Selectivity 値の手動設定も行っていない場合は、通常、デフォルト値でパフォーマンスが向上します。
このテーブルへのアクセスを最適化するための操作を行った場合、次の操作を実行して、アップグレード後にシステムが適切に動作することを確認してください。
-
現在のシステムの ExtentSize および Selectivity の各値を記録します。その方法の 1 つとして、スタジオで Ens.MessageHeaderOpens in a new tab クラスを開きます。ExtentSize と Selectivity は、コード・ウィンドウのクラス定義の末尾にリストされます。
-
値が新しいデフォルト値と大幅に異なる場合は、アップグレード後にテーブル・チューニングを実行するか、スタジオまたは管理ポータルで使用システムに合わせて ExtentSize および Selectivity の各値を手動で更新してください。
Important:[クラスを最新状態に保つ] チェック・ボックスにチェックを付けておけば、実行中のシステムに対してテーブル・チューニングを実行できます。
管理ポータルの システム, SQL, スキーマ, テーブル ページからのテーブル・チューニングの使用に関する詳細は、"Caché SQL 最適化ガイド" の “テーブルの最適化” の章にある “ExtentSize、Selectivity、および BlockCount” を参照してください。
-
-
"Caché インストール・ガイド" の “Caché のアップグレード” の説明に従って、Ensemble にアップグレードする準備を行います。
-
"Caché インストール・ガイド" で、該当するプラットフォームの章の説明に従って Ensemble をインストールします。
各章では、特定のアップグレード手順について説明しています。
-
以前の Ensemble インストールからエクスポートしたカスタム・スキーマまたはその他のプロダクション・コンポーネントやクラスがある場合は、スタジオまたは管理ポータルを使用してこれらをインポートします。必ず、各項目をエクスポートしたときと同じネームスペースにインポートしてください。
-
Ensemble のアップグレード後、定義済みのすべてのオブジェクトをリコンパイルする必要があります。そのための 1 つの方法は、カスタム・コードを含むネームスペース内の全オブジェクトをリコンパイルすることです。ネームスペースにあるすべてのオブジェクトをリコンパイルするには、ターミナル・ウィンドウを開き、以下のコマンドを実行します。
ZN "namespace" DO $system.OBJ.CompileAll("u")
このメソッドは、指定されたネームスペースで、クラス・ディクショナリのアップグレードとコンパイルの両方を実行します。
$SYSTEM.OBJ.CompileAllNamespaces() メソッドを使用して、すべてのネームスペースをリコンパイルすることも可能ですが、HealthShare インストールのアップグレード時にはこれを実行しないでください。HealthShare で使用するネームスペースはリコンパイルしないでください。
Important:クラスとスキーマのコンパイルは、それらを使用する DTL または BPL をコンパイルする前に実行する必要があります。複合アプリケーションでは、その他の依存性も考慮しなければならない場合があります。
$SYSTEM.OBJ.CompileAll() の使用を推奨するうえで、コンパイル対象のアイテム間の依存性について、すべての情報がアイテムの宣言内に完全に含まれていることを前提としています。この情報は、DependsOn および CompileAfter などのコンパイラ・キーワードを含めることで設定できます。または、コードをコンパイルするルーチンを作成して、特にスキーマとドメイン固有の言語に関連して、コンパイラが認識できない依存性を考慮されるようにすることができます。
-
Emsenble のアップグレード処理では、アップグレードに関する重要な情報がログ・ファイルに報告されます。アップグレード後、Ensemble インスタンスの \mgr サブディレクトリにある ensinstall.log ファイルの内容を確認し、アップグレードの結果を確認します。
-
以前のインストール環境で、Java ゲートウェイ、またはいずれかの Caché 言語バインディングを使用してプロキシ・クラスを生成していた場合、該当するドキュメントの指示に従って、ここでそのクラスを再生成します。
-
"Caché 言語バインディング" セット内のその他のドキュメント
-
一部の旧リリースでは、プロダクションを自動的に開始するために、またはプロダクションの開始時にコードを自動的に実行するために、このコードを Caché ユーザ開始ルーチン ^%ZSTART に挿入していました。現在はこのコードは他の場所に属している必要があります。したがって、すべての Ensemble 関連コードをユーザ開始ルーチン ^%ZSTART から削除してください。以下の交換メカニズムを使用します。
-
プロダクションを自動的に開始するには、カスタム・コードではなく、Ensemble のプロダクション自動開始オプションを使用します。詳細は、"Ensemble の管理" の “プロダクション自動開始の管理” を参照してください。
-
プロダクションの起動時に実行するコードを特定します。プロダクション・クラス内の OnStart() コールバック・メソッドを上書きして、その中にそのコードを配置します。
-
プロダクションの起動時に特定のビジネス・ホストに対して機能するように設計されたコードを特定します。対応するビジネス・サービス・クラス、ビジネス・プロセス・クラス、またはビジネス・オペレーション・クラス内の OnProductionStart() コールバック・メソッドを上書きして、その中にそのコードを配置します。
これらのコールバック・メソッドに関する情報は、"Ensemble プロダクションの開発" の “あまり一般的ではないタスク” を参照してください。
-
-
必要に応じて、プロダクション自動開始オプションを再度有効にします。"Ensemble の管理" の “プロダクション自動開始の管理” を参照してください。
Ensemble 4.0 または 4.0.1 からのアップグレード
Ensemble 4.0 または 4.0.1 から Ensemble の最新リリースにアップグレードする手順は、それ以降のバージョンからアップグレードする手順と同じですが、考慮を必要とする点がいくつかあります。以下の列があります。
-
アップグレード手順で、HL7 カスタム・スキーマ定義 (*.HL7) はすべて削除されます。
Caution:これらのファイルを保持するには、アップグレードを実行する前にエクスポートする必要があります。アップグレードが完了した後で、エクスポートしたファイルを任意のネームスペースにインポートします。
-
Ensemble 対応の各ネームスペースに対し、ターミナル・セッションから以下のコマンドを実行します。
ZN "nextEnsembleNamespace" DO ##class(Ens.MessageHeader).%PurgeIndices() DO ##class(Ens.MessageHeader).%BuildIndices() DO ##class(EnsLib.HL7.Message).%PurgeIndices() DO ##class(EnsLib.HL7.Message).%BuildIndices() DO ##class(EnsLib.HL7.Message).%BuildIndices(($LB("Extent")))
これらのコマンドは、ENSDEMO ネームスペース、ENSEMBLE ネームスペース、およびユーザ定義のすべての Ensemble 対応ネームスペースで必要です。
Ensemble ミラー・メンバのアップグレード
この節では、Ensemble ミラー構成をアップグレードするための手順を説明します。標準の Caché アップグレード手順を理解している必要があります。ミラー上での Ensemble の実行に関する一般的な情報は、"Caché 高可用性ガイド" の “ミラーリングにおける Ensemble の考慮事項” を参照してください。アップグレード手順の詳細は、"Caché インストール・ガイド" の “ミラーリングを使用した最小ダウンタイムのアップグレード” を参照してください。
ミラーを含むあらゆるアップグレードには、次の 2 種類の変更が関連します。
-
すべてのミラー・メンバ上で発生する変更 (CACHELIB および ENSLIB 内のライブラリ・コードの置換など)。
-
バックアップ・ミラー・メンバ上ではデータベース・アクセスは読み取り専用であるために、(プライマリ・フェイルオーバー・メンバ上で) 1 回だけ発生する、ミラー・データに影響を与える変更。
Ensemble のアップグレード・コードではこの区別が重視され、アップグレード中には両方の種類の変更を行う必要がある場合があります。重要な点として、Ensemble のアップグレード・コードは Ensemble 対応ネームスペースへのアップグレードをネームスペース単位で実行し、各ネームスペースにミラー・データが含まれているかどうかをチェックすることに留意してください。ネームスペースに何らかのミラー・データが含まれている場合、上記の “1 回だけ” 発生する手順が、プライマリ・フェイルオーバー・メンバ上でのアップグレード・コードの実行時にそのネームスペースに対してのみ適用されます。そのため、ネームスペースがアップグレードされているかどうかを判断するために Ensemble が使用するデータをミラー・メンバ間で共有する必要があります。
以下の各節では、このデータの詳細について示すとともに、ミラー構成の Ensemble インスタンスをアップグレードするための手順と重要な問題について説明します。
重要なミラー・グローバル・データ
共有が必要なアップグレード・データがある最も重要な場所は、各ネームスペース内の ^Ens.Mirror グローバルです。ここにはミラー・データが格納されています。^Ens.Mirror グローバルは、そのネームスペースに対して実行する必要があるアップグレード手順はどれか判断するために使用されます。そのため、ミラー・データを含む各ネームスペースについて、ミラー・データベースにこのグローバルが確実に含まれていなければなりません。より具体的に説明すると、ミラー・データを含む各ネームスペースについて、そのネームスペース内の ^Ens.Mirror グローバルをミラー・データベースにマッピングすることによって、そのネームスペースのアップグレード・プロセスで “1 回だけ” 実行する手順が完了しているかどうかをミラーの両方のメンバが判断できるようにする必要があります。
また、ミラー・データを含む各ネームスペースのミラー・データベースに ^Ens.AutoStart グローバルをマッピングする必要もあります。^Ens.AutoStart グローバルは、スタートアップ後に自動的に起動させる Ensemble プロダクションの名前を指定します。通常、このような自動起動はミラー・メンバ間で同じにするのが妥当です。
上記の 2 つのディレクティブの意味は、例で示すと理解しやすくなるかもしれません。ある Ensemble ネームスペースで、DATA1 および DATA2 という 2 つのユーザ・データベースが使用されているとします。(このネームスペースには ENSLIB へのマッピングも含まれていますが、これは Ensemble によって処理されます)。DATA2 はミラー・データベースですが、DATA1 はミラーリングされていません。この場合、^Ens.AutoStart と ^Ens.Mirror の両方をミラー・データベース DATA2 に明示的にマッピングし、両方のミラー・メンバがグローバルのコンテンツを認識できるようにする必要があります。
アップグレードの開始前に、両方のインスタンスでミラー・データを含むネームスペースに対してプロダクションの自動起動を無効にします。推奨されているとおり、特定のネームスペースに関して、^Ens.AutoStart グローバルが 2 つのインスタンス間でミラーリングされている場合、この手順を実行する必要があるのはプライマリ・ミラー・メンバ上だけです。ミラーリングされていない場合は、両方のフェイルオーバー・メンバ上でこの手順を実行します。これは Ensemble の標準のアップグレード手順に沿っており、アップグレードが実行されている間、あらゆるプロダクションの起動を防止します。
以下の各コマンドを使用して、指定した NAMESPACE について 2 つの重要なグローバルが正しくマッピングされているか特定できます。
Write ##class(SYS.Database).%OpenId($P(##class(%SYS.Namespace).GetGlobalDest
("NAMESPACE","Ens.Mirror"),"^",2)).Mirrored
Write ##class(SYS.Database).%OpenId($P(##class(%SYS.Namespace).GetGlobalDest
("NAMESPACE","Ens.AutoStart"),"^",2)).Mirrored
この場合は、システム全体の構成開始設定である EnsembleAutoStart を使用して自動開始をオフにしないでください。この設定は CPF ファイルに含まれており、ミラーリングされていないからです。代わりに、ネームスペースごとに自動開始を無効にします。
ミラーの考慮事項
Ensemble のアップグレードでは、アップグレード中に %SYS ネームスペースにデータを移動する必要がある場合があります。両方のノードで手順を実行して、両方のノードが必要に応じてすべてのアップグレード手順を確実に実行できるようにします。
また、両方のマシンに存在する必要がある他のデータまたはコードや、変更する必要があるユーザ・アプリケーションがあるかどうかについても把握しておく必要もあります。
ミラーのアップグレードの実行
"Caché インストール・ガイド" の “ミラーリングを使用した最小ダウンタイムのアップグレード” では、3 種類のミラー・アップグレードについて説明しています。主要バージョンのアップグレードを実行し、Ensemble ネームスペースにミラー・データを含める場合は、ミラー・データベースの変更が含まれるいずれかの手順を選択する必要があります。