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

SAP HANA HDBSQL コマンド行ツールの使用

Objective

After completing this lesson, you will be able to hDBSQL コマンドラインツールおよび hdbuserstore ツールを使用します。

SAP HANA Client

ビジネスシナリオ

SAP HANA HDBSQL は、SQL 文の入力と実行、データベースプロシージャの実行、SAP HANA データベースに関する情報のクエリを行うためのコマンド行ツールです。管理者は、コマンド行から文を実行するか、または SAP HANA データベースにアクセスするスクリプトをスケジュールすることができます。

SAP HANA では、SAP HANA Client ソフトウェアパッケージの一部として、アプリケーションを接続するためのクライアントインタフェースが提供されています。クライアントソフトウェアまたはアプリケーションソフトウェアが SAP HANA データベースソフトウェアに接続されるたびに、SAP HANA Client とそのインタフェースを使用する必要があります。SAP HANA Client には、さまざまなアプリケーションプログラミングインタフェース (API) が用意されています。これらは SQLDBC や JDBC を使用し、SAP HANA データベース SQL コマンドネットワークプロトコルを介して SAP HANA データベースサーバに接続します。

概要: SAP HANA Client

概要: SAP HANA クライアント

管理領域におけるツールの最も一般的な使用ケースは、コマンド行ベースの HDBSQL の採用です。これは、SAP HANA Client ソフトウェアのインストールに付属し、hdbuserstore などの他のツールと一緒に提供されます。HDBSQL が完全修飾された接続情報で初期化されると、SQLDBC クライアントインタフェースを介して対象 SAP HANA データベースサーバに要求が送信されます。

SAP HANA Client ソフトウェアのクライアントインタフェースを使用するその他のツールには、データベースエクスプローラ (SAP HANA コックピットに統合)、基礎となる SAP HANA データベースシステムを持つ ABAP ベース SAP システム、および ODATA プロトコル、XMLA、または Node.js を使用する Web ベースのツールがあります。

以下のクライアントインタフェースがあります。

  • SQLDBC

  • JDBC

  • ODBC

  • Python DB

  • ADO NET

  • Node.js

  • Go (golang)

  • Ruby

開発者は、参照ガイド SAP HANA Client Interface Programming Reference を使用して、追加のインタフェースを実装することができます。

インストールと更新、互換性、およびプラットフォームマトリクス

SAP HANA Client ソフトウェアは、さまざまなプラットフォーム (UNIX、Linux、macOS、Microsoft Windows) にインストールすることができます。

注記

サポートされている SAP HANA Client プラットフォームの詳細については、以下を参照してください。 SAP ノート 3165810

SAP HANA Client ドライバのバージョン番号が接続先の SAP HANA サーバのバージョン番号と一致する必要はありません。SAP HANA Client は、SAP HANA 2.0 のすべてのサービスパックスタック (SPS) リリースとの厳密なバージョン間互換性を維持します。

以下の文書は、SAP HANA Client ソフトウェアの互換性、およびインストールと更新に関して有益な情報を提供しています。

HDBSQL との SAP HANA 接続

SAP HANA HDBSQL は、SAP HANA データベースに対するコマンドを実行するためのコマンド行ツールです。

SAP HANA HDBSQL を使用すると、SQL 文とデータベースプロシージャを実行できるほか、データベースおよびデータベースオブジェクトに関する情報をクエリすることができます。SAP HANA HDBSQL は、SAP HANA ソフトウェアとともにインストールされます。ローカルコンピュータ、およびリモートコンピュータの両方にあるデータベースにアクセスできます。

以下のコマンドを使用して、SAP HANA HDBSQL を呼び出します。 hdbsql [options] ロケーションから /usr/sap/<SID>/HDB<instance>/exe

注記

標準の SAP HANA システムのインストールでは、オペレーティングシステムユーザ <sid>adm が HDBSQL ツールを使用できます。個人 OS ユーザを使用している場合は、HDBSQL を実行する権限が OS レベルで適切に割り当てられていることを確認してください。

HDBSQL の機能

HDBSQL には以下の機能があります。

  • SQL 文の実行

  • データベースプロシージャの実行

  • データベースカタログについての情報の要求

  • シェルコマンドの実行

  • コマンドの実行 (コマンド構文とオプション)

  • HDBSQL のすべてのコールオプションの概要の表示

  • HDBSQL すべてのコマンドの概要の表示

SAP HANA システムに接続するためのオプション

HDBSQL をインタラクティブに使用して、コマンドを実行するには、データベースユーザとしてデータベースにログオンする必要があります。

データベースユーザのユーザ名とパスワードを指定しない場合、Kerberos 認証によるログオンが試行されます。

1 ステップ手順または 2 ステップ手順で SAP HANA HDBSQL を使用してデータベースにログオンすることができます。

以下のオプションがあります。

  • ユーザ名とパスワードを使用する 1 ステップログオン

    HDBSQL の起動コマンドで、必要なすべての認証情報と接続情報を指定します。

  • ユーザ名とパスワードを使用する 2 ステップログオン

    1. HDBSQL の開始

    2. システムへの接続 (認証情報および接続情報あり)

この図は、シングルステップおよび 2 ステップのデータベースログインプロシージャのログインオプションとコマンドを示しています。

ヒント

セキュリティ上の理由から、接続文字列を使用して対話型 hsbsql セッションを開始するときは、-p <password> でパスワードを指定しないでください。オペレーティングシステムレベルのすべてのコマンドは保持されます。入力されたパスワードを含め、これらの情報は取得できます。

ただし、接続文字列でパスワードオプションを省略すると、hdbsql はパスワードを要求します。その文字列は、パスワードとして宣言され、オペレーティングシステムレベルではクリアテキストとして表示されません。

注記

複数コンテナシステムでは、オプション —d によりマルチテナントデータベースコンテナの名称を指定できます。オプション -d を指定しない場合は、デフォルトのテナントデータベースに自動的にログオンされます。

HDBSQL を使用したログオン: 例

この例では、ローカルホストのインスタンス番号 01 の SAP HANA テナントデータベース GBX への接続に HDBSQL を使用します。データベースユーザ GEORG にはパスワード Welcome1 が指定されています。

この図は、HDBSQL を起動するコマンドと、SAP HANA データベース接続詳細のサンプル出力を示しています。

コマンドの実行

SAP HANA HDBSQL コマンド

SAP HANA HDBSQL コマンドを使用して、データベースおよびデータベースオブジェクトの情報を設定します。

注記

HDBSQL 機能の詳細については、SAP HANA HDBSQL (コマンド行リファレンス) を参照してください。

ツールが起動すると、使用可能なコマンドの概要を取得するためのヒント (上の図を参照) がユーザにガイドされます (\h で呼び出し可能)。ユーザ (\du)、スキーマ (\ds)、テーブル (\dt)、ビュー (\dv) などを一覧表示するために、便利な照会コマンドが用意されています。

注記

以下の点に注意してください。

HDBSQL でコマンドを正常に実行するには、事前にアクティブな接続を確立しておく必要があります。例外は、\h (ヘルプの参照)、および\q (終了) です。

コマンドの実行

HDBSQL コマンドは、インタラクティブモードと非インタラクティブモードのどちらでも実行できます。SAP HANA HDBSQL コマンドに加えて、SQL 文またはデータベースプロシージャを実行できますが、引用符で囲む必要があります。

この図は、SAP HANA HDBSQL コマンドモード、インタラクティブおよび非インタラクティブ使用のステップ、および SQL 文の実行を示しています。

バッチファイルから複数のコマンドを実行したり、ファイルからコマンドをインポートしてバックグラウンドで実行したりすることができます。コマンド行オプション -c <separator> を使用して、バッチファイル内で個々のコマンドを区切るためのセパレータを指定します。デフォルト値はセミコロン (;) です。

注記

バッチファイルから実行する場合、AUTOCOMMIT モードがデフォルトで有効化されます。これを無効にした場合は、バッチファイルがインポートされた直後に HDBSQL によって SQL 文が実行されることを保証するために、バッチファイルには COMMIT 文が明示的に含まれている必要があります。

注記

SAP HANA SQL および SAP HANA SQLScript の詳細については、以下のガイドを参照してください。

さらに、SQLScript に関する SAP トレーニングもあります。SAP HANA 2.0 SPS06 SQLScript for SAP HANA

セキュアユーザストア (hdbuserstore)

セキュアユーザストア (hdbuserstore) は、SAP HANA Client とともにインストールされるツールです。これを使用して、SAP HANA システムへの接続情報をクライアント上に安全に保存します。このプロセスでは、ユーザが接続情報を入力しなくても、クライアントアプリケーションが SAP HANA に接続できるようになります。この機能は、SAP HANA に接続するスクリプトによって使用されます。

セキュアユーザストアを使用すると、ユーザパスワードを含む SAP HANA 接続情報をクライアント上に安全に保存することができます。この方法により、ユーザがホスト名またはログオン認証情報を入力しなくても、クライアントアプリケーションは SAP HANA に接続できるようになります。セキュアユーザストアを使用して、アプリケーションサーバが接続可能なすべてのホストの一覧を保存することにより、3 層シナリオ (SAP Business Warehouse など) のアプリケーションサーバのフェイルオーバーをサポートするように設定することもできます。

注記

セキュアユーザストアは SQLDBC および JDBC ベースの接続で使用できます。

hdbuserstore プログラム

セキュアユーザストアは、SAP HANA のクライアントパッケージでインストールされます。SAP HANA Client をインストールすると、hdbuserstore プログラムは以下のいずれかのディレクトリに配置されます。

  • /usr/sap/hdbclient (Linux または UNIX)

  • %SystemDrive%\Program Files\sap\hdbclient (Microsoft Windows)

セキュアユーザストアはユーザ固有であるため、対応するセキュアストアファイルを所有するオペレーティングシステムユーザのみがセキュアストアにアクセスできます。ただし、適切なオペレーティングシステム権限があれば、他のユーザのセキュアストアを管理することができます。このオプションは、たとえば、アプリケーションサーバが異なるユーザ (<sapsid>adm ではなく SAPService<SAPSID>) のもとで実行されるため、Microsoft Windows 上で ABAP の接続詳細を管理するために必要です。

hdbuserstore のコマンド

hdbuserstore を使用して、セキュアストア内の接続情報を保存および管理します。hdbuserstore に格納されている接続情報の管理には、いくつかのコマンドが用意されています。

使用可能なコマンドの詳細については、"SAP HANA セキュリティガイド" を参照してください。

この図は、暗号化システムのコマンド、パラメータ、および説明を含むコマンド参照テーブルを示しています。

アンダースコア、ハイフン、ピリオド、および英数字 (0-9、a-z、A-Z) を使用できます。その結果、キーは常に大文字 (0-9、A-Z) になります。

この図は、ユーザの作成、キーのリスト、パスワードの管理を行うための主要な MySQL コマンドの例を示しています。

注記

このツールではユーザが実際に存在しているかどうかはチェックされません。

hdbuserstore を使用したフェイルオーバーシナリオ

hdbuserstore は、さまざまなユースケースのフェイルオーバーサポートを設定するためにも使用されます。

  • サーバが接続可能なホスト/ポートの一覧を指定することで、アプリケーションサーバ (ABAP ベース) のフェイルオーバーを実現します。コマンド例 (一般書式) は、以下のようになります。hdbuserstore SET DEFAULT "<hostname_node1>:3<inst>15; … ;<hostname_node(n)>:3<inst>15" <sapsid> <password>

  • クライアントが接続可能なホスト/ポートペアの一覧を指定することで、分散テナントデータベース上で動作するクライアントのフェイルオーバーをサポートします。コマンド例 (一般書式) は、以下のようになります。hdbuserstore SET <KEY> <hostname>:<System_DB_SQL_port>[,<hostname2>:<System_DB_SQL_port>,…..]@<database_name> <user> <password>

SAP HANA HDBSQL および HDBUSERSTORE の使用

ビジネスシナリオ

SAP HANA データベースで文を実行しようとしていますが、SAP HANA コックピットの一部として利用可能なグラフィカルユーザインタフェース (データベースエクスプローラ SQL コンソールなど) がありません。SAP HANA HDBSQL を使用してこれらのアクティビティを実行します。

さらに、ユーザがログオン情報を入力しなくても、SAP HANA に接続するクライアントアプリケーションを利用できることが求められています。このメカニズムを機能させるには、hdbuserstore を設定する必要があります。

タスク 1: SAP HANA HDBSQL を使用して SAP HANA システム DB にログオンする

SYSTEM ユーザの認証情報を直接指定し、SAP HANA HDBSQL を使用して SAP HANA システムデータベースにログオンします。

ステップ

  1. すべての参加者: トレーニングランドスケープへの HA200 SAP Learning Cloud トレーニングシステムランドスケープ接続を閉じた場合は、演習問題 HA200 トレーニングランドスケープの確認のステップ 1 の説明に従って接続を開きます。

  2. すべての参加者: Linux サーバに対する PuTTY ssh セッションを閉じた場合は、演習問題 HA200 トレーニングランドスケープの探索のステップ 4 の説明に従ってセッションを開きます。

  3. すべての参加者: SYSTEM ユーザの認証情報を使用して、SAP HANA システムデータベースにログオンします。

    項目参加者 1 の値参加者 2 の値
    <SID>H46H47
    <データベース>SYSTEMDBSYSTEMDB
    <SAP HANA データベースサーバ>wdflbmt7346wdflbmt7347
    <SAP HANA OS ユーザ>h46admh47adm
    1. PuTTY ウィンドウで、以下のコマンドを使用して SAP HANA OS ユーザに切り替えます。

      Code Snippet
      1
      su – <sid>adm

    2. 以下のコマンドを使用して、SAP HANA SYSTEMDB データベースに接続します。

      Code Snippet
      1
      hdbsql -n <SAP HANA database server> -i 00 -d <database> -u SYSTEM -p Welcome1

    3. <ENTER>を押して、接続要求を確定します。

    結果

    これで、SAP HANA インストールの SYSTEM DB に接続されました。
  4. 全参加者: システムデータベースをクエリして、接続をテストします。

    1. 以下のコマンドを実行します。

      Code Snippet
      1
      SELECT * FROM dummy

    2. 結果画面を終了するには、q を入力します。

    3. HDBSQL コマンドの概要を表示するには、 \h と入力します。

    4. データベースに関する一般情報を表示するには、次のように入力します。\s

    5. HDBSQL 接続を閉じてツールからログオフするには、 \q を入力します。

タスク 2: SAP HANA HDBSQL を使用して SAP HANA テナント DB にログオンする

SAP HANA HDBSQL を使用して SAP HANA テナントデータベースにログインし、SYSTEM ユーザの認証情報を使用して、今回は非表示のパスワードを入力します。

ステップ

  1. すべての参加者: SYSTEM ユーザの認証情報を使用して、SAP HANA テナントデータベースにログオンします。

    項目参加者 1 の値参加者 2 の値
    <SID>H46H47
    <データベース>H46H47
    SAP HANA database serverwdflbmt7346wdflbmt7347
    1. 以下のコマンドを使用して、SAP HANA テナントデータベースに接続します。

      Code Snippet
      1
      hdbsql -n <SAP HANA database server> -i 00 -d <database> -u SYSTEM

    2. パスワードは 2 番目のステップで要求されます。パスワード Welcome1 を入力します。

      こうすると、パスワードは画面、プロセス一覧、およびオペレーティングシステムレベルの履歴に表示されません。

  2. すべての参加者: SQL コマンドを実行して、接続が機能するかどうかをテストします。

    1. 接続が機能するかどうかをテストするには、以下のコマンドを実行します。

      Code Snippet
      1
      select * from "SYS"."P_USERS_"

    2. 結果画面を終了するには、q と入力します。

    3. HDBSQL 接続を閉じるには、 \q と入力します。

    4. ユーザ <sid>adm のコンテキストで PuTTY ウィンドウを開いたままにします。これは、次のステップで必要になります。

タスク 3: hdbuserstore の内容を確認し、テナント DB の SYSTEM ユーザの接続エントリを登録する

ステップ

  1. All Participants: hdbuserstore の内容を表示します。

    項目参加者 1 の値参加者 2 の値
    <SID>H46H47
    <キー名>MYTENANTDBMYTENANTDB
    <SAP HANA データベースサーバ>wdflbmt7346wdflbmt7347
    <SQL ポート>3001530015
    <データベース>H46H47
    1. PuTTY ウィンドウで、以下のコマンドを入力します。

      Code Snippet
      1
      hdbuserstore LIST

      出力結果は、データファイルがディレクトリ /usr/sap/<SID>/home/.hdb/<hostname>/SSFS_HDB.DAT にあることを示しています。インストール時に登録された SAPDBCTRL ユーザのエントリがすでに存在します。このエントリは、SAP ホストエージェントによって使用されます。

  2. すべての参加者: テナントデータベース SYSTEM ユーザの新しいユーザキーを作成し、このユーザキーの下にパスワードを保存します。

    1. 次のコマンドを入力します。

      Code Snippet
      1
      hdbuserstore SET <keyname> <SAP HANA database server>:<SQL-Port>@<database> SYSTEM Welcome1

    2. hdbuserstore の新規登録エントリを照会するには、前のステップで以下のコマンドを繰り返しますが、新しく登録したキーの名称を追加します。

      Code Snippet
      1
      hdbuserstore LIST <keyname>

      出力では、新しい hdbuserstore キーが以下のように登録されたことが示されます。

      Code Snippet
      12345
      KEY <keyname> ENV : <SAP HANA database server>:30015 USER: SYSTEM DATABASE: <database>

タスク 4: 新しいキーで SAP HANA テナント DB に接続する

新しい hdbuserstore キーを使用して SAP HANA データベースに接続します。

ステップ

  1. すべての参加者: セキュアユーザストアキーを使用して SAP HANA データベースにログオンします。

    1. 次のコマンドを入力します。

      Code Snippet
      1
      hdbsql -U <keyname>

    2. 接続しているデータベースを確認するには、\s を入力します。

      dbname フィールドに、接続しているデータベースが表示されます。これは、テナントデータベースである必要があります。

  2. すべての参加者: コマンドを実行して、接続が機能するかどうかをテストします。

    1. 以下のコマンドを使用して、テナントデータベースをクエリします。

      Code Snippet
      1
      SELECT * FROM dummy

    2. 結果画面を終了するには、q と入力します。

    3. HDBSQL を閉じるには、\q を入力します。

    4. ユーザ <sid>adm の接続を解除するには、exit を入力して <ENTER> で確定します。

    結果

    hdbuserstore を使用してキーを登録し、そのキーを使用して、インタラクティブな接続詳細を提供することなく、テナント DB に接続しました。最後に、PuTTY セッションでユーザ haroot に戻ります。