Technology Blogs by SAP
Learn how to extend and personalize SAP applications. Follow the SAP technology blog for insights into SAP BTP, ABAP, SAP Analytics Cloud, SAP HANA, and more.
cancel
Showing results for 
Search instead for 
Did you mean: 
haruki
Product and Topic Expert
Product and Topic Expert
791
(English version here)

0. はじめに


本ブログでは特に現在オンプレミスでSAP HANAをご利用いただいているお客様向けに、既存の資産をSAP HANA Cloudに移行するための方法をシリーズでご紹介します。

Part 1ではオンプレミスのSAP HANAのCalculation ViewをHDI化し、Part 2では変換したオブジェクトをSAP HANA Cloudに移行しました。このPart3では、データをオンプレミスのSAP HANAからSAP HANA Cloudに移行します。

Part1: オンプレミスHANAでCalculation ViewをHDIコンテナーのオブジェクトに変換する

Part 2: 変換したオブジェクトをSAP HANA Cloudにインポートする

Part 3: データをオンプレミスHANAからSAP HANA Cloudに移行する



 

なお、SAP HANA Cloudでは既存SAP HANAからSAP HANA Cloudへの移行ツールのご提供を予定しているため、将来的には本ブログの内容がツールでよりシンプルに行えるようになる可能性がある点、あらかじめご了承ください。(現時点ではSAP Cloud Platform, HANA Service (HANA as a Service / HaaS) からの移行ツールが最初に提供される予定です。)

では、はじめていきます。データの移行には大きく以下のステップで進めます。

  1. Data Provisioning Agent(DP Agent)を設定する

  2. 仮想テーブルを作成する

  3. データを移行する


本ブログでは、データの移行は仮想テーブルを使用してSQL(Insert - Select文)で行います。もちろんSDIのフローグラフでデータを移行することも可能ですが、これはまた別の機会にご説明しようと思います。

 

1. DP Agent設定する


1.1  DP Agentをインストールする


オンプレミスのSAP HANAとクラウドのSAP HANA Cloudをつなぐために、オンプレミス側にDP Agentをインストールします。本ブログでは、オンプレミスSAP HANAと同じネットワーク内のWindowsサーバーにDP Agentをインストールします。インストールの詳細はSAPヘルプこのブログの「Download DP agent from SAP Service Marketplace as a ZIP file」を参照ください。

1.2 DP Agentの設定を行う


SAPヘルプに沿って設定を行います。

1.2.1 Agent Admin用HANAユーザーの作成


SAP HANA CloudのSAP HANA Cockpitより、以下の権限を持つHANA DBユーザーを作成します。

Application Privilege : sap.hana.im.dp.admin::Administrator
System Privilege : AGENT_ADMIN, ADAPTER_ADMIN


1.2.2 DP Agent設定ツールの起動


まず管理者としてコマンドプロンプトを起動します。以下のように環境変数を設定し、DP Agent設定ツールを起動します。
setx DPA_INSTANCE "C:\usr\sap\dataprovagent"
cd %DPA_INSTANCE%
cd bin
agentcli.bat --configAgent



 

1.2.3 Agentの起動


オプション1(Start or Stop Agent)を選択し、次にオプション1(Start Agent)を選択するとDP Agentが起動します。

 

1.2.4 SAP HANA接続設定


DP AgentからSAP HANA Cloudに接続します。まずオプション6(SAP HANA Connection)を選択します。次に、オプション3(Connect to SAP HANA via JDBC)を選択します。その後、以下のように入力していきます。

Use encrypted JDBC connection : true
Use WebSocket to connect : false
Host Name (for Direct SQL) : SAP HANA Cloud InstanceのEndpoint(*)
Port Number (for Direct SQL) : SAP HANA Cloud InstanceのEndpoint(*)
Agent Admin HANAユーザーとパスワード : 1.2.1で作成したユーザー・パスワード
Use HTTP Proxy Server : false (環境に応じて変更してください)
HANA User for Agent Messaging : 任意のユーザー名・パスワード、true (新規にユーザーを作成)

これで、SAP HANA CloudとDP Agent間の接続が完了しました。

(*) ホスト名とポート番号はSAP Cloud Platform Cockpitより確認します。SAP HANA InstancesのEndpointです。(以下の枠内)



 

1.2.5 DP Agentの登録


DP Agentを登録します。DP Agent設定ツールのトップに戻り、オプション7(Agent Registration)を選択し、その後オプション1(Register Agent)を選択します。

Agent Name : 任意の名前
Agent Host : DP AgentがインストールされているサーバーのIPアドレス

 

1.2.6 Adapterの登録


SAP HANAと接続するためのAdapter「HanaAdapter」を登録します。DP Agent設定ツールのトップに戻り、オプション8(Adapter Registration)を選択し、次にオプション2(Register Adapter)を選択して以下のように入力します。

Adapter Name : HanaAdapter

 

1.2.7 確認


Database Explorerにアクセスし、AgentとAdapterが登録されていることを確認します。





 

2. 仮想テーブルを作成する


SAP HANA CloudとオンプレミスSAP HANAを繋ぐDP Agentの設定が終わりました。次に、SAP HANA CloudにオンプレミスSAP HANAのテーブルを参照する仮想テーブルを作成します。

2.1 リモートソースを作成する


Database Explorerにて「Remote Source」を右クリックし「Add Remote Source」を選択します。



リモートソース名を入力し、アダプター名として「HanaAdapter」を選択します。オンプレミスSAP HANAのホスト名、ポート番号、接続ユーザー・パスワードなどを入力し、保存します。



作成されたリモートソースを開きます。スキーマが表示され、スキーマを開くとテーブルが表示されます。今回ソースとなるオンプレミスSAP HANAのHDIコンテナが管理するスキーマは「SALES_1」ですので、その中を確認するとPart2で作成したテーブル(SALES::HDI_MD_PRODUCTS, SALES::HDI_SO_HEADER, SALES::HDI_SO_ITEM)が確認できます。



 

2.2 仮想テーブルを作成するための権限を付与する


リモートソースが作成できました。次に仮想テーブルを作成します。その前に仮想テーブルを作成するための権限をHDIコンテナーの管理ユーザーに与えます。

ここでは、.hdbgrantsファイルを使用して権限を付与します。SAP HANA Cockpitで直接HDIコンテナーの管理ユーザーに権限を与えることも可能ではあります。

2.2.1 権限付与のためのUser-Provided Serviceを作成する


まず、権限付与のためのサービスを作成します。SAP Cloud Platform Cockpitにて、「New Instance」より新しいサービス(ここではgrant-service)を作成します。


{
"driver": "com.sap.db.jdbc.Driver",
"tags": [
"hana"
],
"user": "SYSTEM",
"password": "XXXXXX"
}

 

2.2.2 mta.yamlを編集する


作成したサービスをmta.yamlに登録します。以下の枠内を更新します。ここで、TARGET_CONTAINERは複数のHDIコンテナーが存在しているため設定しています。(SAP Cloud Platform CockpitのService Instancesより確認できます。)


 

2.2.3 .hdbgrantsファイルを作成しビルドする


権限付与のための.hdbgrantsファイルを作成し、ビルドします。ここでは、先ほど作成したリモートソースに対して「CREATE VIRTUAL TABLE」権限を付与します。
{
"grant-service": {
"object_owner": {
"global_object_privileges": [
{
"name": "OPHANA",
"type": "REMOTE SOURCE",
"privileges":[
"CREATE VIRTUAL TABLE"
]
}
]
}
}
}

 

2.3 仮想テーブルを作成する


ここまででリモートソースが作成でき、さらに仮想テーブルを作るための権限も付与できました。次に仮想テーブルを作成します。

SAP Web IDE for Full-Stackにて、右クリックでVirtualTableを新規作成します。

仮想テーブル名、リモートソース名、参照先のスキーマ名、テーブル名を入力します。DB名は「<NULL>」と入力します。保存してビルドすると仮想テーブルが作成されます。他のテーブルも同様に仮想テーブルを作成します。



Database Explorerで仮想テーブルを確認します。Tableに行くと、仮想テーブルが作成されていることが確認できます(ここではVT始まりのテーブル)。SQLのSELECT文を発行し、データが正常に取得できることを確認します。(SQL実行のたびにクラウドのSAP HANA CloudからオンプレミスのSAP HANAへデータを取得しに行きます。)



 

3. データを移行する


オンプレミスのSAP HANAのテーブルを参照する仮想テーブルがSAP HANA Cloud上に作成できました。この仮想テーブルを使用して、SAP HANA Cloudのテーブルにデータを移行します。移行方法は主に以下の2つが考えられます。

  1. SQLのInsert - Select文でデータを移行する

  2. Smart Data Integration(SDI)のFlowgraphでデータを移行する


本ブログでは、1のSQLでデータを移行します。

3.1 データを移行する


Database ExplorerでHDIコンテナーに接続します。以下のようなSQLを全てのテーブルに対して実行します。
insert into "SALESDB_1"."SALES::HDI_MD_PRODUCTS" select * from "SALESDB_1"."SALES::VT_MD_PRODUCTS";

SQLが正常に実行完了したらデータの移行は完了です。

 

3.2 データを確認する


Calculation Viewにアクセスし、Viewとデータが正常に移行されてることを確認します。Database ExplorerよりColumn Viewを表示します。ここにCalculation Viewのランタイムオブジェクトが表示されます。CUBE型のView「CV_SALES」を開きデータのプレビューを行うと、正常にデータが表示されることが確認できます。



 

 

以上でオンプレミスのSAP HANAからSAP HANA CloudへのCalculation Viewおよびテーブル・データの移行が完了しました。

他にもより効率的な方法があるかもしれませんが、一つの方法としてご参考になれば幸いです。