17.00 - 17.05 - installspストアド プロシージャ - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQL外部ルーチン プログラミング

Product
Advanced SQL Engine
Teradata Database
Release Number
17.00
17.05
Published
2020年6月
Content Type
プログラミング リファレンス
Publication ID
B035-1147-170K-JPN
Language
日本語 (日本)
Last Update
2021-03-30

目的

installspストアド プロシージャを使用して、MPPシステムのすべてのノードにパッケージを分散します。

定義

REPLACE PROCEDURE installsp
   (IN  name      VARCHAR(250) CHARACTER SET LATIN,
    IN  version   VARCHAR(250) CHARACTER SET LATIN,
    IN  filename  VARCHAR(250) CHARACTER SET LATIN,
    IN  path      VARCHAR(250) CHARACTER SET LATIN,
    IN  source    BLOB(200000),
    IN  operation VARCHAR(250) CHARACTER SET LATIN,
    OUT pform     VARCHAR(20)  CHARACTER SET LATIN,
    OUT cfgpath   VARCHAR(200) CHARACTER SET LATIN
   )

説明

name
パッケージの名前。
パッケージを分散するためにここで使用する名前と同じ名前を、後でパッケージをインストールするために使用するCREATE/REPLACE文で指定します。
version
パッケージに割り当てたバージョン。
例えば、初めてパッケージを配布するときは、バージョン「1.0」などのようにします。パッケージを更新して再配布する場合は、パッケージの変更内容に応じて「2.0」または「1.1」などのバージョンを割り当てます。
filename
サーバー側の宛先ファイルに使用する名前。
パッケージを配布するためにここで使用するファイル名と同じファイル名を、後でそのパッケージをインストールするために使用するCREATE/REPLACE文で指定します。
path
サーバー側の宛先ファイルに使用するオプションのパス。指定するパスは、次の固定パスに相対するパスになります。
teradata_installation_path/Teradata/dem
teradata_installation_pathは、Teradataインストール パスです。teradata_installation_pathの値を取得するには、コマンド ラインで以下を入力します。
pdepath -I
サーバー側の宛先ファイルへの絶対パスは、pathで指定された相対パスを、固定パスに追加した書式になります。path引数を省略すると、絶対パスが固定パスと同じになります。
installspストアド プロシージャは、cfgpath OUT引数内で絶対パスを返します。
source
コロン文字が先頭に付けられたUSING変数名。
パッケージを分散するためにinstallspを呼び出す場合、使用するCALL文でUSING行記述子を指定する必要があります。処理の間に、installspsourceをパッケージの内容に置き換えます。
operation
パッケージに実行する操作。有効な値は以下のとおりです。この値は、大文字と小文字を区別します。
  • 'CREATE': sourceによって指定されたパッケージの内容を、pathによって指定された場所のすべてのノードにfilenameと言う名前でコピーするよう指定します。ファイルがすでに存在している場合は、上書きしないでください。
  • 'REPLACE': sourceによって指定されたパッケージの内容を、pathによって指定された場所のすべてのノードにfilenameと言う名前でコピーするよう指定します。対象ファイルが存在している場合は、上書きしてください。
  • 'DROP': filenameによって指定された場所にあるpathという名前のファイルを削除するよう指定します。
  • 'CHECK': パッケージに対する操作を行わず、pform引数の対象プラットフォーム タイプを戻すよう指定します。
pform
対象プラットフォームのタイプ。例えば、LINUX64。
cfgpath
パッケージが配布されたサーバーの完全パスで、pathによって指定された、対象プラットフォームの固定パスへの相対パスを追加した書式になります。
後でパッケージをインストールするために適切なCREATE/REPLACE文を使用するときに、EXTERNAL NAME句でcfgpathの戻り値を使用して、サーバー側の宛先ファイルの絶対パスを指定します。

パッケージの配布手順

以下に、MPPシステムのすべてのノードにパッケージを分散するための手順を概説します。完全な例については、例: パッケージの配布を参照してください。

  1. ターゲット サーバー上で、サーバー側の宛先ファイルのディレクトリのアクセス権限を変更し、ユーザー'tdatuser'によりアクセスできるようにします。(サーバー側の宛先ファイルへのパスは、installspストアド プロシージャのパス引数を使用します。)

    あるいは、'tdatuser'以外のオペレーティング システム ユーザーの許可の下でパッケージを分散するには、以下のようにします。

    1. CREATE AUTHORIZATION文またはREPLACE AUTHORIZATION文を使用して、パッケージ配布に使用するオペレーティング システム ユーザーを識別するコンテキストを作成します。
    2. 以下のSQL文を使用して、SYSLIB.INSTALLPKG UDFの定義を取得します(installspストアド プロシージャはinstallpkg UDFを呼び出します)。
      SHOW FUNCTION SYSLIB.INSTALLPKG;
    3. REPLACE FUNCTION文を使用して、EXTERNAL SECURITY句を含めるようにSYSLIB.INSTALLPKG定義を変更し、UDFの実行をCREATE AUTHORIZATION文またはREPLACE AUTHORIZATION文で作成したコンテキストと関連付けます。
    4. ターゲット サーバー上で、サーバー側の宛先ファイルのディレクトリのアクセス権限を変更し、CREATE AUTHORIZATION文またはREPLACE AUTHORIZATION文で確立したユーザーがアクセスできるようにします。(サーバー側の宛先ファイルへのパスは、installspストアド プロシージャのパス引数を使用します。)

    CREATE AUTHORIZATION、REPLACE AUTHORIZATION、REPLACE FUNCTION、およびEXTERNAL SECURITY句の詳細については、<Teradata Vantage™- SQLデータ定義言語 - 詳細トピック、B035-1184>を参照してください。

  2. Windowsクライアント システム上でlobteqを起動します。

    このインターフェースとコマンドは、BTEQと同様です。

  3. 対象のTeradata Databaseにログオンします。

    BTEQで使用するものと同じLOGONコマンドを使用してください。BTEQ LOGONコマンドの詳細は、<Basic Teradata®Queryリファレンス、B035-2414>を参照してください。

  4. lobteq .usingコマンドを使用してパッケージを開き、次のCALL文のUSING修飾子のデータ バッファにロードします。

    .usingコマンドは、パッケージを開くための次の構文をサポートしています。

    .using 'filename'xfile

    filenameは、パッケージのファイル名です(パスを含む)。

  5. SYSLIB.installspストアド プロシージャを呼び出します。

    CALL文でUSING修飾子を使用して、パッケージを遅延モードのLOBとしてサーバーに渡します。

  6. lobteqを終了します。
  7. [オプション]サーバー上で、サーバー側の宛先ファイルのディレクトリのアクセス権限を変更し、パッケージ配布に使用するオペレーティング システム ユーザーによるアクセスを削除します。

配布パッケージのインストール

パッケージを分散したら、適切なCREATE/REPLACE文を使用して、サーバーにパッケージをインストールできます。例えば、UDFパッケージを分散した場合は、CREATE FUNCTIONまたはREPLACE FUNCTION文を使用して、サーバーにUDFパッケージをインストールします。

Teradataには、CREATE/REPLACE文とパッケージおよびバージョン情報を、SYSLIBデータベースのdem、demddl、およびdempartテーブルに保存するために使用できるストアド プロシージャが用意されています。詳細は、パッケージをバックアップするための手順を参照してください。

例: パッケージの配布

ここでは、バージョン1.0のlibcstd2.soというパッケージを、すべてのノードに配布する例を示します。この例では、ターゲット サーバーのディレクトリは/Teradata/dem/udfsであり、.soファイルはWindowsクライアント上にあります。

LobTeq -- Enter your DBC/SQL request or LobTeq command:
.using 'libcstd2.so'xfile

*** .using accepted

LobTeq -- Enter your DBC/SQL request or LobTeq command:
USING (a BLOB AS DEFERRED)
CALL SYSLIB.installsp('cstdlib2', '1.0', 'libcstd2.so', 'udfs',
   :a, 'CREATE', pform, cfgpath);

Sending LOB data, chunk 1
*** Procedure has been executed.

LINUX64               /Teradata/dem/udfs/

ここでは、インストール済みのパッケージから関数を作成するCREATE FUNCTION文の例を示します。

CREATE FUNCTION SYSLIB.cSTD_DEV(x FLOAT)
RETURNS FLOAT
CLASS AGGREGATE
LANGUAGE C
NO SQL
PARAMETER STYLE SQL
EXTERNAL NAME 'SP!/Teradata/dem/udfs/libcstd2.so';

EXTERNAL NAME句に指定されたファイル名とパスは、filenameの呼び出しで使用されるcfgpath IN引数とinstallsp OUT引数と同じであることに注意してください。

関連トピック

詳細情報 参照先
lobteqがサポートするコマンド .helpコマンドを使用したときにlobteqが提供する情報。
CREATE FUNCTION文の使用によるUDFパッケージのインストール Teradata Vantage™- SQLデータ定義言語 - 詳細トピック、B035-1184
パッケージのバックアップまたは復元 パッケージのバックアップまたは復元