Oracle Tuxedoは、OpenVMSプラットフォームで利用できるようになりました。このマニュアルは、OpenVMSにアプリケーションの移植を行うOracle Tuxedoの上級開発者向けです。
次の項では、OpenVMSプラットフォーム上でのOracle Tuxedoの固有の特性に関する一般的な質問に答えます。
Oracle Tuxedo for OpenVMSサーバーおよびクライアントは、どのOracle Tuxedoリリースとも相互運用が可能です。
OpenVMSオペレーティング・システムでのファイルの仕様は、最大7つの構成要素からなり、その中のいくつかは、値が指定されていない場合にデフォルト値が使用されます。OpenVMSの完全なファイル仕様の書式は次のとおりです。
Node$device:[root.][directory-name]filename.type;version
表1-1では、OpenVMSファイルの仕様の構成要素が定義されています。
注意: | 名前は全体で256文字を超えることはできません。ファイル名はすべて大文字と小文字が区別されません。したがって、たとえばUBBCONFIG.DATとubbconfig.datは同じファイルを指します。 |
MYCLUSTER$DKA100:[Tuxedo.APPS.SIMPAPP]UBBCONFIG.DAT;2
ファイル仕様は、セミコロン(;)で終了し、バージョン番号が含まれます。古いバージョンのファイルは、PURGEコマンドで削除できます。
ファイル名を含むすべてのOracle Tuxedoファイル(TUXCONFIGなど)は、OpenVMSのネイティブ形式にする必要があります。ファイル仕様はカンマ(,)で区切ることができます。たとえば、APPDIRは次のように指定できます。
APPDIR="DKA100:[Tuxedo.APPS.SIMPAPP],DKA100:[Tuxedo.APPS.QSAMP]"
OpenVMSには複数のネーミング・ルールがあります。表1-2は、有効なファイル拡張子と、それらがOpenVMSおよびOracle Tuxedoでどのように解釈されるかを示してます。
注意: | .EXE 拡張子は、UBBCONFIGファイルにリストされるサーバー名では不要です。サーバーを実行可能にするために拡張子が必要になる場合は、実行時にOracle Tuxedoによってサーバー名に追加されます。 |
次の項では、OpenVMSプラットフォームでOracle Tuxedoを構成する場合の固有の特性について説明します。
Oracle Tuxedoアプリケーションで必要なすべての環境変数は、論理名として定義する必要があります。たとえば、TUXCONFIG
、FLDTBLDIR32
、FIELDTBLS32
、VIEWDIR32
およびVIEWFILES32
変数は、論理名として定義する必要があります。これらの名前は、OpenVMSのネイティブ形式で指定し、Oracle Tuxedoコマンドを実行しているプロセスのプロセス表に定義する必要があります。Oracle Tuxedoユーティリティで生成されるプロセスのほとんどは、現行のプロセス表から論理名を継承します。
Oracle Tuxedo Workstation機能を使用している場合は、WSNADDR
およびWSTYPE
変数を論理名として定義する必要があります。OpenVMSでは、すべてのUNIXシステム変数が論理名になります。
たとえば、次のDCLコマンドを使用すると、TUXCONFIG
環境変数を設定できます。
$ DEFINE TUXCONFIG DKA100:[Tuxedo.APPS.SIMPAPP]TUXCONFIG.
これらの論理名は、Oracle Tuxedoコマンドを実行しているプロセスのプロセス表に設定することをお薦めします。論理名(Oracle Tuxedo共有ライブラリの論理名など)は、通常はグループ表またはシステム表に配置します。これらの論理名は、Oracle Tuxedoバイナリの特定のインストールに関連します。特定のOracle Tuxedoアプリケーションに固有の論理名は、プロセス表に設定してください。アプリケーション固有の論理名は、必要に応じて、デタッチ・プロセスでアクセスできる論理表に指定できます。
環境変数に値を割り当てる場合は、複数のディレクトリを指定できます。パス名を区切るには、各ディレクトリのパス名を指定して、カンマ(,)を使用します。たとえば、次の行では、2つのディレクトリ(SIMPAPPとBANKAPP)がAPPDIR変数に割り当てられます。
$ DEFINE APPDIR DKA100:[Tuxedo.SIMPAPP],DKA100:[Tuxedo:BANKAPP]
SHOW LOGICALコマンドがAPPDIRで実行されると、出力は次のようになります。
$ SHOW LOGICAL APPDIR
"APPDIR" = "DKA100:[Tuxedo.SIMPAPP]" (LNM$PROCESS_TABLE)
= "DKA100:[TUXEDO.BANKAPP]"
Oracle Tuxedoでは、複数の値を含む論理名を解釈できます。UBBCONFIGドファイルのパス関連のディレクティブは大文字の形式にする必要があります。
DCL$PATH
には、次の例のように、Oracle Tuxedoのインストール・ディレクトリのパス名を含める必要があります。
"DCL$PATH" = "DKA100:[WSCOTT.BIN]" (LNM$PROCESS_TABLE)
= "DKA100:[Tuxedo.BIN]"
= "SYS$SYSTEM:"
Oracle Tuxedoコマンド(tmboot
やtmshutdown
など)の大文字の引数はすべて、コマンドライン上で二重引用符で囲む必要があります。そうしないと、OpenVMSによって小文字に変換され、システムで正しく解釈されません。
$ tmboot "-A"
シェル・スクリプトを実行するコマンドは、DCLインタプリタで実行されるため、正しいDCLスクリプトにする必要があります。スクリプトを実行するOracle Tuxedoサービスの例には、しきい値コマンドのqmadmin
などがあります。
UBBCONFIGファイルのMACHINES
セクションには、ネットワークでマシンを認識するのに使用される名前(ネットワーク・ノード名)を入力する必要があります。マシンのノード名を確認するには、ホスト名ユーティリティを使用します。ホスト名ユーティリティの出力例は次のとおりです。
lcvms1.us.oracle.com
UBBCONFIGファイルのMACHINES
セクションにネットワーク・ノード名を入力するときは引用符で囲む必要があります。(ネットワーク・ノード名にピリオドが含まれない場合、引用符は必要ありません。)
IDユーティリティには、ユーザー・アカウントのUID(ユーザーID)とGID(グループID)が表示されます。IDユーティリティの出力例は次のとおりです。
UID=250456, GID=234
UBBCONFIGファイルに入力する必要のあるUIDとGIDの値を確認するには、IDユーティリティを使用します。
この項では、Oracle Tuxedoアプリケーションで使用されるリソース・マネージャに関する次の4種類の情報について説明します。
Oracle Tuxedoアプリケーションでリソース(SQL文、データベース、ライブラリなど)を識別または特定する必要がある場合、アプリケーションはリソース・マネージャ・ファイルを参照します。ビルド時に、buildclient(1)
またはbuildserver(1)
コマンドに-R
オプションを指定すると、コマンドがRMファイルを解釈して、ライブラリ名を一時オプション・ファイルに置きます。この一時ファイルは、リンカーによって読み取られるオプション・ファイルのリストに追加されます。ビルドが完了すると、一時ファイルは削除されます。
OpenVMSプラットフォーム用のRMファイルは、UDATAOBJ
ディレクトリ(Oracle Tuxedoのインストール時に作成されたディレクトリ)にあります。
RMファイルの各エントリは、ライブラリ名などのリソースのリストで構成されます。次のサンプルRMエントリ(Oracle Tuxedo SQLのリソース・マネージャに使用)に示すように、エントリ内のフィールドはカンマで区切られ、フィールド内の項目は空白で区切られます。
Tuxedo/SQL,tuxsql_switch,TUX_LIBSQL/SHARE TUX_LIBRMS/SHARE TUX_LIBFS/SHARE
Oracle Tuxedoユーザー・ログ・ファイルは、OpenVMSレコード管理サービス(RMS)によって書き込まれます。RMSでは、レコードのロックを実行するため、ユーザー・ログ・ファイルをすぐに表示することはできません。Oracle Tuxedoの警告、エラーおよび参照用のメッセージは、該当のULOGPFX
変数の定義に従って、ユーザー・ログ・ファイルで確認できます。
Oracle Tuxedoアプリケーションでは、tpopen(3c)
関数を呼び出して、トランザクション用のデータベースを開きます。次に、tpopen()
がOPENINFO
文字列(アプリケーション・コード内)の設定を参照して、開くデータベースの名前と場所を見つけます。
次の例(bankappサンプル・アプリケーションのOPENINFO
文字列から引用)に示すように、OPENINFO
文字列の値内のフィールドは、カンマで区切られます。
OPENINFO="Tuxedo/SQL,DKA100:[OracleDEV.APPS.BANKAPP]BANKDL1,BANKDB,readwrite"
Oracle Tuxedoアプリケーションでは、build_dgw(1)
コマンドを呼び出して、Domainsゲートウェイ・プロセスをビルドします。このコマンドでは、引数にDMTYPE
と呼ばれるファイル(新しいゲートウェイにリンクするライブラリのリストを含む)が必要です。
DMTYPEファイルの各エントリには、1つ以上のライブラリの名前が含まれます。ライブラリ名はカンマで区切られます。たとえば、次の行は、GWTDOMAIN(Oracle Tuxedo Domains用の標準サーバー)のDMTYPEファイルのエントリです。
TDOMAIN,TUX_LIBGW/SHARE TUX_LIBNWS/SHARE,,
次の項では、OpenVMSプラットフォームでOracle Tuxedoアプリケーションを開発する場合の固有の特性について説明します。
buildclient(1)
およびbuildserver(1)
ユーティリティは、OpenVMSプラットフォームで完全にサポートされます。適切なオプションとライブラリが使用されるようにするには、これらのユーティリティを使用することをお薦めします。
クライアントとサーバーをビルドする場合は、使用するOracle Tuxedo APIのプロトタイプを指定する必要があります。
buildclient(1)
およびbuildserver(1)
ユーティリティは、コンパイルするファイルに、これらの修飾子を自動的に使用します。
注意: | 現在サポートされているのは、OpenVMSプラットフォームでの64ビットのバイナリ生成のみであるため、buildclient(1) およびbuildserver(1) では、"/po=lo=argv" などのオプションがデフォルトでコンパイラに追加されます。独自のobj ファイルを作成したり、Oracle Tuxedoにリンクするには、このルールに従ってください。 |
Oracle Tuxedoクライアントおよびサーバーをリンクする場合は、リンカー・オプション・ファイルTUXLIB.OPT
(Oracle TuxedoインストールのLIB
ディレクトリ内)をリンク行に含める必要があります。buildclient(1)およびbuildserver(1)ユーティリティでは、両方ともTUXLIB.OPT
ファイルをリンク行に自動的に追加します。オプション・ファイルは、/OPT
スイッチを使用してリンカーに修飾する必要があることに注意してください。オプション・ファイルをOracle Tuxedoのリンク行で使用する方法の例は、例2のコンパイルおよびリンク行を参照してください。
UNIXプラットフォームと同様、CFLAGS
論理名を使用すると、オプションをビルドのコンパイル・フェーズに追加できます。OpenVMSビルドのLINKフェーズでは、異なるオプションが必要になる場合があります。論理名TMLKFLAGS
を使用すると、ビルドのLINKフェーズにオプションを指定できます。
buildclient(1)
およびbuildserver(1)
では、Oracle Tuxedoライブラリに関する警告が表示される場合があります。これらの警告は無視してください。Oracle Tuxedoライブラリには循環参照があり、ビルド時に警告が表示されます。
Oracle Tuxedo共有ライブラリを使用すると、OpenVMS上のOracle TuxedoユーザーはOracle Tuxedoバッファ・タイプ・スイッチ機能を利用できます。Oracle Tuxedoのリファレンス・マニュアルのbuffer(3c)に関する項を参照してください。
次の例は、buildclient(1)を実行して、SIMPCL.EXEという名前のクライアントを作成する方法を示しています。
$ BUILDCLIENT -f SIMPCL.C -o SIMPCL.EXE
%LINK-W-SHRWRNERS, compilation warnings
in shareable image file DKA100:[Tuxedo.LIB]LIBTUX_1030.EXE;1
%LINK-W-SHRWRNERS, compilation warnings
in shareable image file DKA100:[Tuxedo.LIB]LIBBUFT_1030.EXE;1
この例では、リンカーによってOracle Tuxedoに関する2つの警告メッセージが戻されます。これらのメッセージは重要でないため、無視して問題ありません。
オプション・ファイルは、リンク行に多数のファイルを指定する場合に役に立つ方法です。次の例では、コンパイル済でサーバーにリンクされるオブジェクト・ファイル(ECHO.OBJ
、PROCESS.OBJ
およびSECD.OBJ
)のセットを指定するのに、オプション・ファイルが使用されています。
$ TYPE SECD.OPT
!
! OPTION FILES USE ! in order to denote comment lines
! Any line which starts with ! is ignored by the linker
!
ECHO.OBJ
PROCESS.OBJ
SECD.OBJ
TUX_LIBTMIB /SHARE
$ BUILDSERVER -f SECD.OPT/OPT -o SECD.EXE -s "SECD:ECHO" -s "PROFILE"
TUX_LIBTMIB
は、Oracle TuxedoインストールのLIBライブラリのOracle Tuxedo LIBTMIB_1030.EXE
共有ライブラリを指す論理名です。tpadmcall(3c)
を使用してMIBにアクセスする必要がある場合は、TUX_LIBTMIB
ライブラリをクライアントまたはサーバーにリンクしてください。/SHARE
修飾子により、このファイルが共有ライブラリであることをリンカーに示します。(型修飾子に指定できるもう1つのオプションは/LIB
です。これは、非共有ライブラリ・ファイルを予定するようにリンカーに指示します。)ECHO
"や"PROFILE
")を使用します。この項では、アプリケーションのコードの記述に関するヒントについて説明します。
実行可能ファイルをアプリケーションで呼び出すには、次の操作のいずれかを実行する必要があります。
シンボリック名を定義するには、名前を入力して、ターゲットの実行可能ファイルのパスを指定します。実行可能ファイルはDCLスクリプトにする必要があります。
たとえば、simpappクライアントのsimpclのシンボルを定義するには、次の行をアプリケーションに入力します。
$ SIMPCL :== $ DKA100:[Tuxedo.SIMPAPP]SIMPCL.EXE
この行では、simpcl
をシンボリック名として定義します。SIMPCL.EXE
実行可能ファイルは、次の引数を指定して実行できます。
$ SIMPCL "Here is a string"
HERE IS A STRING
DCL$PATH
変数に、SIMCL.EXE
実行可能ファイルのディレクトリが含まれている場合は、実行可能ファイルのシンボリック名を定義する必要はありません。
コマンドラインからDCLスクリプトを実行するには、@
シンボルをスクリプトの名前の前に入力します。
標準入力からの入力を使用するプログラム(qmadmin
やtmadmin
など)をコードが呼び出す場合は、標準入力のリダイレクトが必要になる場合があります。Oracle Tuxedoでは、この操作が可能です。
OpenVMSプラットフォームで標準入力、標準出力および標準エラーをリダイレクトするには、論理名SYS$STDIN
、SYS$STDOUT
およびSYS$STDERR
を再定義します。
次の例は、qmadmin
スクリプトによってキュー・スペースが生成され、出力がqmadmin.stdoutとqmadmin.stderrの2つのファイルに出力されるプロセスを示しています。
$ TYPE QMADMIN.STDIN
echo
crdl DKA100:[Tuxedo.QSAMPLE]QUE 0 400
qspacecreate
QSPACE
62839
100
6
4
9
3
errque
y
16
q
$ define sys$input "DKA100:[Tuxedo.QSAMPLE]QMADMIN.STDIN"
$ define sys$output "DKA100:[Tuxedo.QSAMPLE]QMADMIN.STDOUT"
$ define sys$error "DKA100:[Tuxedo.QSAMPLE]QMADMIN.STDERR"
$ qmadmin
$ deassign sys$input
$ deassign sys$output
$ deassign sys$error
$ TYPE CRQUE.STDERR
qmadmin - Copyright (c) 1996 Oracle Systems, Inc.
Portions * Copyright 1986-1997 RSA Data Security, Inc.
All Rights Reserved.
Distributed under license by Oracle Systems, Inc.
TUXEDO is a registered trademark.
$ TYPE CRQUE.STDOUT
%DCL-I-SUPERSEDE, previous value of SYS$ERROR has been superseded
QMCONFIG=DKA100:[Tuxedo.QSAMPLE]QUE
> Echo is now on
> crdl DKA100:[Tuxedo.QSAMPLE]QUE 0 400
Created device DKA100:[Tuxedo.QSAMPLE]QUE, offset 0, size 400 on DKA100:[TUXEDO.QSAMPLE]QUE
> qspacecreate
Queue space name: IPC Key for queue space: Size of queue space in disk pages: Number of queues in queue space: Number of concurrent transactions in queue space: Number of concurrent processes in queue space: Number of messages in queue space: Error queue name: Initialize extents (y, n [default=n]): Blocking factor [default=16]:
> q
他のプラットフォームで実行する場合、Oracle Tuxedoユーティリティでは、ブリッジまたはデバイスをコマンドラインで指定する必要があります。ただし、同じユーティリティをOpenVMSプラットフォームで実行する場合は、ブリッジやデバイスを指定しないでください。これを行うと、警告メッセージがユーザー・ログ・ファイルに出力されます。