インストール後のタスクの実行

テナントデータベースの作成、名前変更、および削除

Objective

After completing this lesson, you will be able to マルチテナントデータベースアーキテクチャ内でのテナントの作成、名称変更、および削除のデモを行います。

マルチテナントアーキテクチャ:

SAP HANA システムはデータベース管理システム (DBMS) です。つまり、データベースモデルを管理するサーバコンポーネントです。データベース管理システムは、ユーザ、他のアプリケーション、およびデータベース自体と対話することによって、データを取得および分析します。汎用 DBMS では、データベースの定義、登録、クエリ、更新、および管理が可能です。

DBMS では以下の機能が実行されます。

  • 多数のユーザが同時に同じデータにアクセスできるように、マルチユーザ環境で大量のデータを管理

  • データ間の関係の更新

  • ユーザ権限コンセプトを使用したデータへの安全なアクセスの提供

  • システム障害の後、データを最新の整合性のあるステータスに自動的にリカバリ

  • データ要求の処理に高いパフォーマンスを実現

SAP HANA には、上記のすべての DBMS 機能があります。市場の汎用 DBMS と SAP HANA の最大の違いは、SAP HANA はすべてのデータをインメモリに格納することです。SAP HANA では、インメモリデータが一次保管場所であり、ディスク上のデータファイルは二次ストレージとみなされます。

注記

SAP HANA インメモリテクノロジーと、汎用 DBMS キャッシュ機能を混同しないでください。これらは、2 つの異なるものです。

単一データベースコンテナと複数データベースコンテナ (MDC)

マルチテナントデータベースコンテナシステムのコンセプトは、単一システム ID を持つ単一の SAP HANA システムまたはデータベース管理システムに基づいています。この単一システム ID には、システムデータベースのほかに、少なくとも 1 つのテナントデータベースが含まれます。システムデータベースには、システム全体のランドスケープ情報が保持され、システム全体に値する設定と監視が提供されます。あるテナントデータベースのユーザが、他のテナントデータベースに接続することはできません。また、システムでデータベース間アクセスが有効化されていない限り、ユーザは他のテナントデータベースのアプリケーションデータにアクセスできません。デフォルトでは、テナントデータベースは、アプリケーションデータとユーザ管理の観点において互いに分離されています。各テナントデータベースは、それぞれ独立してバックアップおよびリカバリすることができます。すべてのテナントデータベースが同じ SAP HANA データベース管理システムに含まれているため、すべて同じ SAP HANA バージョン (リビジョン番号) で実行されます。 さらに、定義された高可用性災害回復シナリオがすべてのテナントデータベースに適用されます。

複数コンテナシステムには、集中システム管理に使用されるシステムデータベースが常に 1 つだけ存在し、テナントデータベースとも呼ばれる任意の数 (ゼロを含む) のマルチテナントデータベースコンテナがあります。マルチコンテナモードでインストールされた SAP HANA システムは、単一システム ID (SID) で識別されます。データベースは SID とデータベース名によって識別されます。管理の観点からは、システムレベルで実行されるタスクとデータベースレベルで実行されるタスクは区別されます。SAP HANA コックピットなどのデータベースクライアントは、特定のデータベースに接続します。

複数コンテナシステムでは、システムデータベースのみがネームサーバを実行します。ネームサーバには、どのテナントデータベースが存在するかを含め、システム全体のランドスケープ情報が含まれます。また、システムデータベースのインデックスサーバ機能も提供されます。単一コンテナシステムのネームサーバとは異なり、複数コンテナシステムのシステムデータベースのネームサーバは、トポロジ情報を所有しません。つまり、データベースのテーブルとテーブルパーティションの場所に関する情報は保持されていません。データベース関連トポロジ情報は、関連するテナントデータベースカタログに保存されます。

テナントデータベースは、それ独自のインデックスサーバのみを必要とします。コンパイルサーバやプリプロセッササーバなどのデータを保持しないサーバは、システムデータベース上で動作し、すべてのデータベースを処理します。SAP HANA 拡張アプリケーションサービスのサーバは、テナントデータベースで実行されます。ただし、必要に応じて別のサービスとして追加することもできます。

注記

SAP HANA 2.0 SPS 01 以降では、複数コンテナデータベースモードが唯一のデータベースモードです。デフォルトでは、インストール時に単一のテナントデータベースが登録されます。アップグレードされたシステムには、古い単一コンテナに対応する 1 つのテナントデータベースが含まれます。SAP HANA コックピットを使用して、後でテナントデータベースを追加できます。

単一コンテナシステムは、更新中にテナントデータベースシステムに自動的に変換されます。単一コンテナシステムのデータベースは、システムデータベースとテナントデータベースに変換されます。アップグレードされたシステムは、古い単一コンテナに対応する 1 つのテナントデータベースで構成されます。システムデータベース (SYSTEMDB) によって新規ユーザ (SYSTEM) が登録されます。更新時に、このユーザのパスワードを指定する必要があります。単一コンテナシステムのデータベーススーパーユーザ (SYSTEM) がテナントデータベースの SYSTEM ユーザになります。新しいシステムデータベースを追加するには、運用コンセプトを調整する必要がある場合があります。

MDC アーキテクチャ

この図は、異なるアプリケーションを使用して接続する 2 つのテナント間の SAP HANA データ共有を示しています。

複数コンテナシステムのインストール中、SystemDB データベースのみが登録されます。このデータベースにはシステム全体とすべてのテナントデータベースの情報が含まれます。これは集中システム管理に使用されます。

SystemDB は、ランドスケープトポロジ情報、システム全体のパラメータ設定を含む管理データベースであり、すべてのテナントデータベースのバックアップとリストアを実行できます。デフォルトのパラメータ設定で実行される SAP HANA データベースでは、1 から 20 の追加テナントデータベースを登録できます。

SystemDB でシステム管理を行い、CPU およびメモリ割当ですべてのテナント DB のリソース管理を実行します。

テナントデータベースはその名称で識別され、テナント固有のパラメータ設定があります。バックアップおよびリストア操作は、テナントごとに個別に実行することができる。

複数コンテナシステムを使用する場合は、異なるテナントデータベースで複数のアプリケーションを実行できます。このデプロイメントオプションを使用して、既存の MCOS オンプレミスシナリオを置き換えることができます。

MDC: ユーザおよび管理レイヤ

この図は、システム、テナント、およびデータベースのロールと権限を含む SAP HANA のアーキテクチャを示しています。

システムデータベースで実行される管理タスクは、システム全体とそのすべてのデータベースに適用されます (システムレベルの設定など)。または、特定のテナントデータベース (テナントデータベースのバックアップなど) を対象とすることもできます。

システムデータベース

システムデータベースの登録は、複数コンテナシステムのインストール時、または単一コンテナシステムから複数コンテナシステムへの変換時に行われます。システムデータベースには、システム全体についての情報のほか、すべてのテナントデータベースについての情報が含まれています。これは集中システム管理に使用されます。

複数コンテナシステムには、正確に 1 つのシステムデータベースがあります。これはシステムのインストール中、または単一コンテナシステムからの移行中に登録されます。ここにはシステム管理のデータとユーザが含まれます。SAP HANA コックピットなどのシステム管理ツールはこのデータベースに接続できます。システムデータベースには、システムに存在するテナントデータベースに関する情報など、システムランドスケープ全体の情報が格納されます。ただし、データベース関連のトポロジ情報、つまり、データベースのテーブルとテーブルパーティションの場所に関する情報は所有しません。データベース関連トポロジ情報は、関連するテナントデータベースカタログに保存されます。

システムデータベースで実行される管理タスクは、システム全体とそのすべてのデータベース (システムレベルの設定など) に適用されます。または、特定のテナントデータベース (テナントデータベースのバックアップなど) を対象とすることもできます。

システムデータベースに関する注意点

システムデータベースに関する以下の情報に注意してください。

  • システムデータベースは、SQL が完全にサポートされているデータベースではありません。フル機能の SQL サポートは、テナントデータベースでのみ使用できます。

  • システムデータベースを複数のホストに分散できません。スケールアウトはできません。

  • システムデータベースは、テナントデータベースからの監視データを表示できますが (スキーマ SYS_DATABASES にあるビュー)、テナントデータベースの実際のコンテンツを表示することはできません。

MDC: データベース分離

データベース分離 (Database Isolation) により、マルチテナントデータベースコンテナ SAP HANA システムのオペレーティングシステムレベルでテナントデータベースの分離が指定されます。デフォルトでは、複数コンテナシステムのすべてのデータベースプロセスは OS ユーザ <sid>adm のもとで実行されます。OS メカニズムによるデータベース間攻撃を軽減する場合は、システムの高分離を設定します。この方法では、個別のテナントデータベースのプロセスは専用 OS グループの専用 OS ユーザのもとで実行する必要があります。ファイルシステムのデータベース固有データは、その後、標準 OS ファイルおよびディレクトリの権限を使用して保護されます。

この図は、OS レベルおよび SAP HANA データベースアーキテクチャでのテナントデータベースの分離を示しています。

MDC 高分離レベルのプロパティ

分離レベルが高いシステムのプロパティは以下のとおりです。

  • 個別のテナントデータベースのプロセスは、専用 OS グループの専用 OS ユーザのもとで動作します。

  • ファイルシステムのデータベース固有データは、OS ファイルおよびディレクトリの権限を使用して保護されます。<sid>adm にはテナントデータボリューム、ログボリューム、またはバックアップへの OS アクセス権限がありませんが、テナント固有のトレースファイルおよび設定ファイルにアクセスすることができます。

  • OS アクセス権限を必要とする操作は、正しい権限を持ったユーザに制限されます。この機能により、テナント間に別の保護レイヤが追加されます。OS へのアクセス権を持つテナント管理者は、OS コマンドを使用して他のテナントまたはシステムデータベースにアクセスできません。

システムデータベースでのポート割当

システムデータベースのポート番号は固定されています。

  • 3<instance>01 (内部)

  • 3<instance>13 (SQL)

  • 3<instance>14 (XS クラシックサーバを介した HTTP)

テナントデータベースのポート割当

すべてのテナントデータベースには、内部通信および外部通信のための独自のポートと接続があります。

すべてのテナントデータベースには、SQL 操作および内部通信のための専用ポートがあります。SAP HANA XS クラシックサーバを介した HTTP ベースのクライアント通信のための専用ポートもあります。これは、インデックスサーバにおいて組込サービスとしてデフォルトで実行されます。

シングルテナントシステムのインストール時に自動的に登録されるテナントデータベースのポート番号は、以下のとおりです。

  • 3<instance>03 (内部通信)

  • 3<instance>15 (SQL)

  • 3<instance>08 (SAP HANA クラシックサーバを介した HTTP)

後で追加されるテナントデータベースのポートは、その時点での可用性に応じて自動的に割り当てられます。

これらの固定割当のほかに、標準のポート番号割当はありません。ポート番号は使用可能なポート番号範囲から、データベースが登録された時間またはサービスが追加された時間の可用性に応じて自動的に割り当てられます。また、管理者はテナントデータベースの登録時またはサービスの追加時に、明示的にどのポート番号を使用するか指定することができます。

テナントデータベースのデフォルトのポート番号範囲は 40 から 3<instance>99 です。テナントごとに 3 つのポートが必要です。つまり、インスタンスごとに登録できる追加テナントデータベースの最大数は 20 です。

ただし、追加のインスタンスのポート番号を予約することにより、これを増やすことができます。コックピットでは、ダイアログによってこの操作が提案されます。または、[multidb] reserved_instance_numbers プロパティを global.ini ファイルで指定することができます。このプロパティのデフォルト値は 0 です。値を 1 に変更すると、さらに 1 つのインスタンスのポート番号が使用可能になります (たとえば、最初のインスタンスが 00 の場合は 30040–30199)。値を 2 に変更すると、2 つの追加インスタンスのポート番号が使用可能になります (たとえば、最初のインスタンスが 00 の場合、30040–30299)。

この図は、データベースクライアント、ホスト、Web ディスパッチャ、および複数のデータベースシステムコンポーネントを含むネットワークアーキテクチャを示しています。

注記

すべての SAP 製品 (SAP HANA を含む) のすべての TCP/IP ポートを含むインタラクティブテーブルは、以下の場所にあります。

すべての SAP 製品の TCP/IP ポート

HTTPS クライアントアクセス

SAP HANA 拡張アプリケーションサービスのサーバでは、Web ベースのアプリケーションが HTTPS を介して SAP HANA にアクセスできます。SAP HANA システムの内部 Web ディスパッチャはこれらの受信 HTTPS 要求を管理します。アプリケーションが複数コンテナシステムの特定のデータベースに要求を送信できるようにするには、各テナントデータベースにエイリアスホスト名が必要です。その後、エイリアスホスト名への要求が、対応するテナントデータベースのサーバに転送されます。HTTP ホストヘッダに物理ホスト名がある要求はシステムデータベース上で実行中のサーバに転送されます。

デフォルトの HTTP ポートは、すべての場合に使用されます。

  • 80<instance> (HTTP)

  • 43<instance> (HTTPS)

エイリアスホスト名は、受信リクエストが正しいデータベースにルーティングされるように、内部 HTTPS ポートにマッピングされます。

各個別テナントデータベースの xsengine.ini ファイルで、テナントデータベースに公式にアクセスできる URL を指定することによって、内部 SAP Web ディスパッチャを設定します。システムデータベースの URL の指定は自動で行われるため、指定する必要はありません。

ビジネスケース

新規テナントを登録する必要があるシナリオには、さまざまなビジネスおよび技術的なユースケースがあります。管理の観点から、このようなタスクを実行する前に詳細を把握しておくことが非常に重要です。登録および開始されたすべてのテナントには、DRAM、CPU、およびディスク割当が存在するため、SAP HANA システムのシステムリソースが使用されます。

一部のビジネスユースケースでは、複数のシステム、地域、事業単位、およびその他の基準から発生する異種データを統合するためにテナントが必要です。全体として、移行の側面は、追加のテナントを確立する必要がある場合に重要になってきます。これらの本稼働ユースケースに加えて、テストの側面および技術的な考慮事項も、新しいテナントを登録するきっかけになる場合があります。

一般的に、新しいテナントデータベースは以下のシナリオで登録されます。

  • … ビジネスニーズや技術的な需要が生じた場合

  • … インストール後、初期テナントが登録されなかった場合

  • … 単一コンテナシステムを複数コンテナシステムに変換する場合

  • … テスト目的でデータをカプセル化する場合

  • … その他の数多くのユースケース

テナントデータベースの作成

通常、システム管理者はテナントデータベースを登録してから、必要に応じて新しいテナントを設定します。以下に、設定の側面の例をいくつか示します。

より包括的で時間がかかり、要求の厳しいタスクが設定作業です。設定はさまざまな領域を幅広くカバーします。以下に例を示します。

  • データベース分離レベルの変更 (OS レベルでの追加の準備およびフォローアップタスクを含む)

  • テナントデータベースでは必要ない特定の機能の無効化 (バックアップ操作など)

  • データベース間アクセスの有効化および設定 (テナントデータベース間のクエリが必要な場合)

  • テナントデータベース管理者が重要なシステムプロパティを変更できないようにするための、設定変更ブロックリストの編集

  • SAP Web ディスパッチャの設定 (SAP HANA XS クラシックサーバを使用して HTTP クライアントがテナントデータベースにアクセスする場合)

    ただし、これらのトピックはこのレッスンの中心的な部分ではありません。こうした中、以下のことが明確に当てはまります。 新しいテナントデータベースを登録する際の最小の作業は、登録プロセスです。管理タスクは、この手順が終了した後に開始されます。

注記

このレッスンでは、テナントデータベースの登録、名称変更、および削除に焦点を当てます。これらの管理タスクは、SAP HANA コックピットを使用するか、コマンド行ツールで SQL 文を使用して行うことができます。

この図は、テナント、データベース、OS、ハードウェア、およびストレージレイヤを備えた SAP HANA のマルチコンテナシステムのアーキテクチャを示しています。

テナント関連の管理タスクは、システムデータベース管理によって処理され、システム権限 DATABASE ADMIN を必要とします。SAP HANA コックピットまたは SQL 文を使用して、テナントデータベースの登録、起動、停止などのテナント関連タスクを実行できます。

注記

システムの高分離が設定されている場合、新しいテナントデータベースに必要なオペレーティングシステム (OS) ユーザおよびグループがすでに存在します。

テナントデータベースの作成

SAP HANA コックピットのデータベース管理アプリケーションを使用して、システムデータベースからテナントデータベースを以下のように作成します。

  1. SAP HANA コックピットで、データベース管理を開きます。

  2. テナントの作成→空のテナントの作成を選択します。

    Create Tenant Database ページが開きます。

  3. 新しいデータベースの名称と、ユーザ SYSTEM の登録に使用するパスワードを入力します。

    注記

    テナントデータベースを登録する場合、テナントデータベースの一意の名称を指定する必要があります。

    パスワードは、最初はシステムデータベースで設定されたパスワードポリシーに準拠している必要があります。データベースが登録されたら、テナントデータベースのパスワードポリシーを変更できます。

  4. オプション: テナントデータベースを作成するシステムが高分離用に設定されている場合、テナントデータベースの OS ユーザおよびグループを指定します。

  5. オプション: 作成後にデータベースが自動的に起動されないようにします (デフォルトでは自動起動)。

  6. オプション: システムが複数のホストに分散されている場合は、データベースを作成するホストを指定します。

  7. オプション: コーディネータインデックスサーバの内部通信ポートの番号を指定します。

  8. オプション: その他の必要なサービスを追加します。

  9. Create Tenant Database を選択します。

この図は、システム管理インタフェースで SQL コマンドを使用してテナントデータベースを作成する方法を具体的に示しています。

技術的には、登録プロセスは以下のようにバックグラウンドで実行されます。

  1. データベースには、一意のシステムローカル ID が割り当てられます。

  2. ホスト情報を指定しなかった場合は、負荷分散アルゴリズムによって最適なホスト配置が決定されます。

  3. 内部通信ポートの番号を指定しなかった場合は、ポート番号の可用性に基づいて自動的に割り当てられます。

  4. 必要なデータボリュームおよびログボリュームが、影響を受けるホストに登録されます。

  5. 新しいデータベースは、システムデータベースの M_DATABASES システムビューに入力されます。

  6. daemon.ini ファイルが更新され、デーモンプロセスがトリガされてインデックスサーバサービスが開始されるほか、設定された各ホストでその他の追加サービスが開始されます。

  7. 新しいテナントデータベースにおいて、SYSTEM ユーザ用の指定のパスワードが設定されます。

  8. 新しいテナントデータベースが作成され、場合によっては起動され、データベース管理アプリケーションに表示されます。M_DATABASES ビューでもアクセスできるようになりました。

テナントを登録する SQL 文

注記

この文は、マルチテナントデータベースシステムの SYSTEMDB でのみ使用できます。

SQL 文を使用してテナントデータベースを以下のように作成します。CREATE DATABASE

CREATE DATABASE <database_name> [ AT [ LOCATION ] '<hostname>[:<port_number> ] ' ] SYSTEM USER PASSWORD <password>

SQL (自動ホスト配置および自動ポート割当あり) を使用してテナントデータベースを登録する例:

CREATE DATABASE HA200NEWDB SYSTEM USER PASSWORD Welcome1

注記

複数ホストシナリオでは、テナントデータベースを登録するホストの名前など、追加のオプションを指定できます。完全な SQL 構文については、SAP HANA プラットフォーム向け SAP HANA SQL リファレンスガイドを参照してください。

テナントデータベース名の変更

SAP HANA コックピットの Database Management アプリを使用するか、hdbsql などのコマンド行ツールで SQL 文を使用して、システムデータベースから、テナントデータベースの名称を変更することができます。

この図は、共有コンピューティングリソース上に個別のテナントデータベースおよびシステムデータベースがある SAP HANA のマルチコンテナシステムアーキテクチャを示しています。

前提条件

テナント名を変更すると、テナントは停止します。権限に関しては、テナントの登録の場合と同様です。このアクションは、システム権限 DATABASE ADMIN を持つシステムデータベース管理者としてのみ実行できます。テナントのコピーや移動、有効なシステムレプリケーションなど、その他の同時に実行される操作、または動的階層化オプションが使用されている場合は、エラーが発生する可能性があります。

プロシージャ内で、データベースの名称が変更され、テナント名を含むディスク上のディレクトリの名称も変更されます。既存のバックアップの名称は変更されませんが、バックアップ履歴は継続します。ビジネスコンテンツの観点からは、データボリュームおよびログボリュームは影響を受けません。

デフォルトでは、名称が変更されたテナントデータベースは名称変更後に自動的に起動しませんが、SAP HANA コックピットを名称変更アクションに使用した場合などに、テナントを起動するオプションがあります (以下の図を参照)。

この図は、共有コンピューティングリソース上に個別のテナントデータベースおよびシステムデータベースがある SAP HANA のマルチコンテナシステムアーキテクチャを示しています。

テナント名を変更する SQL コマンド

注記

以下のコマンドは、マルチテナントデータベースシステムの SYSTEMDB でのみ使用できます。

以下のように RENAME DATABASE SQL 文を使用してテナントデータベースを登録します。

RENAME DATABASE <current_database_name> TO <new_database_name>

SQL を使用してテナントデータベースの名称を変更する例:

RENAME DATABASE HA200NEWDB TO HA200RENAME

注記

以前に使用されていたバックアップディレクトリ、およびサードパーティバックアップツールに書き込まれたバックアップは、テナントデータベースの名称が変更されても削除されません。そのため、バックアップに注意し、可能な場合は、名称が変更されたテナントを起動する操作の直後に完全バックアップを実行してください。

テナントデータベースの削除

不要になったテナントデータベースは削除できます。SAP HANA コックピットの Database Management アプリを使用して、システムデータベースからテナントデータベースを削除します。

この図は、共有ハードウェアリソース上の複数のデータベースを管理する SAP HANA のマルチコンテナアーキテクチャを示しています。

他のテナント処理タスクと同様に、テナントデータベースを削除できるのは、システム権限 DATABASE ADMIN が割り当てられたシステムデータベース管理者のみです。なお、テナントデータベースは停止します。管理者がデータベースをマニュアルで停止するか、削除操作が行われる前に SAP HANA システムによって自動的に停止します。

この図は、データベース管理、バックアップ削除オプション、SQL コマンド、およびバックアップを安全に削除するためのガイダンスを示しています。

SAP HANA 2.0 SPS01 以降を実行しているテナントデータベースを削除する場合、削除されたテナントのバックアップディレクトリを保持するオプションがあります (上の図を参照)。この場合、そのバックアップは、ファイルシステムから削除することでしか削除できません。以前のバージョンの SAP HANA を実行しているテナントデータベースを削除すると、バックアップディレクトリは自動的に削除されます。そのため、これらのバックアップディレクトリを保持する場合は、データベースを削除する前にディレクトリを再配置することをお奨めします。

注記

テナントを削除した後でも、同じ名称で新しいテナントを登録することで、削除されていないデータベースバックアップにアクセスして使用できます。これは、システムが高分離用に設定されていない場合にのみ機能します。

削除されたテナントデータベースは一覧に表示されなくなります。ボリュームおよびトレースファイルが削除されます。

テナントを削除する SQL コマンド

注記

以下のコマンドは、マルチテナントデータベースシステムの SYSTEMDB でのみ使用できます。

以下のように DROP DATABASE SQL 文を使用してテナントデータベースを削除します。

DROP DATABASE <database_name> [ DROP BACKUPS ]

SQL を使用してテナントデータベースを削除する例:

DROP DATABASE HA200NEWDB

DROP BACKUPS オプションは、テナントデータベースで現在使用中のすべてのバックアップディレクトリを削除します。

以前に使用されていたバックアップディレクトリ、およびサードパーティのバックアップツールに書き込まれたバックアップは削除されません。

追加情報

この図は、データベースの起動/停止とバックアップに必要なテナント管理者権限を、それぞれシステム権限タイプとともに示しています。

注記

テナントに基づく管理タスクのコンテキストでは、以下のリソースを参考にすると役立つ場合があります。
  • SAP ノート 2101244 - FAQ: SAP HANA マルチテナントデータベースコンテナ (MDC)

  • SAP ノート 2096000 - SAP HANA テナントデータベース - 追加情報 (SAP HANA tenant databases - Additional Information)