| Oracle Database管理者リファレンス 11gリリース1(11.1) for Linux and UNIX-Based Operating Systems E05786-05 |
|
![]() 戻る |
![]() 次へ |
この章では、OracleプリコンパイラおよびOracle Call Interfaceの使用方法について説明します。次の項目について説明します。
|
注意: この章で説明するデモンストレーションを使用するには、Oracle Database 11g Examplesメディアに収録されているOracle Database Examplesをインストールしてください。 |
Oracleプリコンパイラは、Oracle DatabaseのSQL文を高水準言語で記述されたプログラムと組み合せるためのアプリケーション開発ツールです。Oracleプリコンパイラは、ANSI SQLと互換性があり、Oracle Databaseやその他のANSI SQLデータベース管理システムで実行するオープンでカスタマイズされたアプリケーションを開発するために使用します。
この項では、次の項目について説明します。
|
注意: この項で示すORACLE_HOMEは、「管理者」インストール・タイプを使用してOracle Database Client 11gをインストールするときに作成されるORACLE_HOMEを指します。 |
Oracleプリコンパイラの構成ファイルは、$ORACLE_HOME/precomp/adminディレクトリにあります。
表6-1に、各プリコンパイラの構成ファイルの名前を示します。
すべてのプリコンパイラ実行可能ファイルを再リンクするには、Makeファイル$ORACLE_HOME/precomp/lib/ins_precomp.mkを使用します。特定のプリコンパイラ実行可能ファイルを手動で再リンクするには、次のコマンドを入力します。
$ make -f ins_precomp.mk relink exename = executable_name
このコマンドを実行すると、最初に、新しい実行可能ファイルが$ORACLE_HOME/precomp/libディレクトリに作成され、次にそのファイルが$ORACLE_HOME/binディレクトリに移動されます。
この例では、executableを表6-2で示した製品の実行可能ファイルで置き換えます。
表6-2に、Oracleプリコンパイラの実行可能ファイルを示します。
表6-2 Oracleプリコンパイラの実行可能ファイル
| 製品 | 実行可能ファイル |
|---|---|
|
Pro*C/C++ |
|
|
Pro*COBOL(AIX、HP-UXおよびSolaris SPARC(64ビット)) |
|
|
Pro*COBOL 32ビット(AIX、HP-UX PA-RISCおよびSolaris SPARC(64ビット)) |
|
|
Pro*FORTRAN(AIX、HP-UXおよびSolaris) |
|
|
Pro*FORTRAN 32ビット(HP-UX PA-RISC) |
|
|
SQL*Module for Ada(AIX) |
|
READMEファイルには、前回のリリース以降にプリコンパイラに加えられた変更が記載されています。
表6-3に、プリコンパイラのREADMEファイルの場所を示します。
次の問題は、すべてのプリコンパイラに共通しています。
C言語以外では、コンパイラによって、大文字の関数やサブプログラム名が小文字に変換されます。この結果、ユーザーが存在しない旨のエラー・メッセージが表示されることがあります。このエラー・メッセージが表示された場合は、オプション・ファイル内の関数またはサブプログラム名の大/小文字が、IAPXTB表の文字と一致しているかどうかを確認してください。
プリコンパイラとベンダー提供のデバッガに互換性がない場合があります。デバッガを使用して動作したプログラムが、デバッガを使用しないときも同様に動作するとはかぎりません。
IRECLENおよびORECLENの各パラメータには、最大値がありません。
Oracleライブラリは、プリコンパイラやOCIまたはOCCIアプリケーションと静的または動的にリンクできます。静的リンクの場合、アプリケーション全体のライブラリおよびオブジェクトは、1つの実行可能プログラムにリンクされます。その結果、アプリケーションの実行可能ファイルが非常に大きくなることがあります。
動的リンクの場合、実行コードの一部分が実行可能プログラムに格納され、残りの部分はアプリケーションの実行時に動的にリンクされるライブラリに格納されます。実行時にリンクされるライブラリを、動的ライブラリまたは共有ライブラリと呼びます。動的リンクには、次のようないくつかのメリットがあります。
ディスク領域要件が少なくなります。複数のアプリケーションで、または同一アプリケーションのコールで、同じ動的ライブラリを使用できます。
メイン・メモリー要件が少なくなります。同一の動的ライブラリ・イメージをメイン・メモリーに一度ロードしておくと、複数のアプリケーションでそれを共有できます。
クライアント共有ライブラリとクライアント静的ライブラリは、$ORACLE_HOME/libディレクトリまたは$ORACLE_HOME/lib32ディレクトリにあります。オラクル社が提供しているMakeファイルdemo_product.mkを使用してアプリケーションをリンクする場合は、デフォルトでクライアント共有ライブラリがリンクされます。
共有ライブラリ・パスの環境変数設定にクライアント共有ライブラリを含むディレクトリが指定されていない場合、実行可能ファイルの起動時に、次のようなエラー・メッセージのいずれかが表示される場合があります。
Cannot load library libclntsh.a Can't open shared library: .../libclntsh.sl.10.1 libclntsh.so.10.1: can't open file: errno=2 can't open library: .../libclntsh.dylib.10.1 Cannot map libclntsh.so
このエラーを防ぐには、共有ライブラリ・パスの環境変数を設定し、適切なディレクトリを指定します。次の表に、環境変数名のサンプル設定を示します。プラットフォームで32ビットおよび64ビットのアプリケーションがどちらもサポートされている場合、実行するアプリケーションに応じて、正しいディレクトリを指定してください。
| プラットフォーム | 環境変数 | サンプル設定 |
|---|---|---|
| AIX(32ビット・アプリケーション) | LIBPATH |
$ORACLE_HOME/lib32 |
| AIX(64ビット・アプリケーション) | LIBPATH |
$ORACLE_HOME/lib |
| HP-UX(32ビット・アプリケーション) | SHLIB_PATH |
$ORACLE_HOME/lib32 |
| HP-UX(64ビット・アプリケーション)およびLinux | LD_LIBRARY_PATH |
$ORACLE_HOME/lib |
| Solaris(32ビット・アプリケーション) | LD_LIBRARY_PATH |
$ORACLE_HOME/lib32 |
| Solaris(64ビット・アプリケーション) | LD_LIBRARY_PATH_64 |
$ORACLE_HOME/lib |
クライアント共有ライブラリは、インストール時に自動的に作成されます。クライアント共有ライブラリを再作成する場合は、次の手順を実行します。
クライアント共有ライブラリを使用するすべてのクライアント・アプリケーションを終了します。この中には、SQL*PlusやOracle Recovery ManagerなどのOracle Clientアプリケーションもすべて含まれます。
oracleユーザーでログインし、次のコマンドを実行します。
$ $ORACLE_HOME/bin/genclntsh
非スレッドのクライアント共有ライブラリ
|
注意: この項の内容は、HP-UXシステムに適用されます。 |
HP-UXでは、非スレッドのクライアント共有ライブラリを使用できます。ただし、このライブラリは、スレッドを使用する、またはスレッドに依存するOCIアプリケーションでは使用できません。
スレッドを使用しないアプリケーションでこのライブラリを使用するには、次のいずれかのコマンドを実行してOCIアプリケーションを作成します。
32ビット・アプリケーションの場合
$ make -f demo_rdbms32.mk build_nopthread EXE=oci02 OBJS=oci02.o
64ビット・アプリケーションの場合
$ make -f demo_rdbms.mk build_nopthread EXE=oci02 OBJS=oci02.o
次の表に、クライアント・アプリケーションについてサポートされるビット長(31ビット、32ビットまたは64ビット)を示します。
| クライアント・アプリケーションのタイプ | サポートされるプラットフォーム |
|---|---|
| 32ビットのみ | Linux x86 |
| 32ビットおよび64ビット | AIX、HP-UX PA-RISC、Linux x86-64およびSolaris SPARC |
| 64ビットのみ | HP-UX Itanium |
AIX、HP-UXおよびSolaris SPARCでは、Oracle Database 11gリリース1(11.1)とともに提供されているデモンストレーションおよびクライアント・アプリケーションはすべて、64ビット・モードでリンクおよび実行します。AIX、Solaris SPARCおよびHP-UXでは、同じOracleホーム・ディレクトリに32ビットおよび64ビットのクライアント・アプリケーションを作成できます。
次の表に、32ビットおよび64ビットのクライアント共有ライブラリを示します。
| プラットフォーム | 32ビット(または31ビット)のクライアント共有ライブラリ | 64ビットのクライアント共有ライブラリ |
|---|---|---|
| AIX |
$ORACLE_HOME/lib32/libclntsh.a $ORACLE_HOME/lib32/libclntsh.so |
$ORACLE_HOME/lib/libclntsh.a $ORACLE_HOME/lib/libclntsh.so |
| HP-UX PA-RISC |
$ORACLE_HOME/lib32/libclntsh.sl |
$ORACLE_HOME/lib/libclntsh.sl |
| Linux x86-64およびSolaris |
$ORACLE_HOME/lib32/libclntsh.so |
$ORACLE_HOME/lib/libclntsh.so |
異なるワード・サイズが混在しているインストールを実装するには、次の手順を実行します。
次のコマンドを実行して、32ビットおよび64ビットのクライアント共有ライブラリを作成します。
$ $ORACLE_HOME/bin/genclntsh
プラットフォームに応じて、次のいずれかの環境変数に、必要な32ビットおよび64ビットのクライアント共有ライブラリのパスを入力します。
| プラットフォーム | 環境変数 |
|---|---|
| AIX | LIBPATH |
| HP-UX(32ビット・クライアント・アプリケーション) | SHLIB_PATH |
| HP-UX、Linux x86、Linux x86-64およびSolaris | LD_LIBRARY_PATH |
32ビットのPro*CおよびOCIカスタマ・アプリケーションの作成
32ビットおよび64ビットのPro*CおよびOracle Call Interface(OCI)カスタマ・アプリケーションをサポートするオペレーティング・システムでは、次のファイルに32ビットPro*CおよびOCIアプリケーションの作成方法が記載されています。
| 作成内容 | 参照先のMakeファイル |
|---|---|
| 32ビットのPro*Cアプリケーションの作成 | $ORACLE_HOME/precomp/demo/proc/demo_proc32.mk |
| 32ビットのOCIアプリケーションの作成 | $ORACLE_HOME/rdbms/demo/demo_rdbms32.mk |
32ビット実行可能ファイルおよびライブラリ
|
注意: この項の内容は、AIX、HP-UXおよびSolaris SPARCのプラットフォームに適用されます。 |
プラットフォームで32ビットおよび64ビットのアプリケーションがどちらもサポートされている場合、$ORACLE_HOME/binディレクトリに32ビットおよび64ビットの実行可能ファイルが格納されています。また、次のディレクトリに32ビットのライブラリが格納されています。
$ORACLE_HOME/lib32
$ORACLE_HOME/rdbms/lib32
$ORACLE_HOME/hs/lib32
$ORACLE_HOME/network/lib32
$ORACLE_HOME/precomp/lib32
Pro*C/C++プリコンパイラを使用する場合は、事前にオペレーティング・システムの適切なバージョンのコンパイラが正しくインストールされていることを確認してください。
|
関連項目:
|
この項では、次の項目について説明します。
デモ・プログラムは、Pro*C/C++プリコンパイラの機能を紹介するために用意されています。デモ・プログラムには、C、C++およびObjectプログラムの3種類があります。デモ・プログラムはすべて、$ORACLE_HOME/precomp/demo/procディレクトリにあります。デフォルトでは、すべてのプログラムがクライアント共有ライブラリに動的にリンクされます。
デモ・プログラムを実行するには、$ORACLE_HOME/sqlplus/demo/demobld.sqlスクリプトで作成したデモンストレーション表がSCOTTスキーマにあり、そのパスワードがTIGERであることが必要です。
|
注意: デモンストレーションを作成する前に、SCOTTアカウントのロックを解除してパスワードを設定する必要があります。 |
デモ・プログラムを作成するには、$ORACLE_HOME/precomp/demo/proc/ディレクトリにあるMakeファイルdemo_proc.mkを使用します。たとえば、sample1のデモ・プログラムをプリコンパイル、コンパイルおよびリンクするには、次のコマンドを実行します。
|
注意: AIXシステムの場合、デモ・プログラムを正しくコンパイルするために、次の例のmakeコマンドの-rオプションを指定してください。たとえば、次のように入力します。
$ make -r -f demo_proc.mk sample1 |
$ make -f demo_proc.mk sample1
Pro*C/C++のCデモ・プログラムをすべて作成するには、次のコマンドを実行します。
$ make -f demo_proc.mk samples
Pro*C/C++のC++デモ・プログラムをすべて作成するには、次のコマンドを実行します。
$ make -f demo_proc.mk cppsamples
Pro*C/C++のObjectデモ・プログラムをすべて作成するには、次のコマンドを実行します。
$ make -f demo_proc.mk object_samples
一部のデモ・プログラムでは、$ORACLE_HOME/precomp/demo/sqlディレクトリ内にあるSQLスクリプトを実行する必要があります。このスクリプトを実行しないと、実行を要求するメッセージが表示されます。
デモ・プログラムを作成し、それに対応するSQLスクリプトを実行するには、「makeマクロ引数RUNSQL=run」をコマンドラインに追加します。たとえば、sample9デモ・プログラムを作成し、必要な$ORACLE_HOME/precomp/demo/sql/sample9.sqlスクリプトを実行するには、次のコマンドを実行します。
$ make -f demo_proc.mk sample9 RUNSQL=run
Objectデモ・プログラムのすべてを作成し、必要なSQLスクリプトすべてを実行するには、次のコマンドを実行します。
$ make -f demo_proc.mk object_samples RUNSQL=run
Makeファイル$ORACLE_HOME/precomp/demo/proc/demo_proc.mkを使用して、ユーザー・プログラムを作成できます。このMakeファイルは、32ビットまたは64ビットのユーザー・プログラムを作成します。Makeファイルdemo_proc32.mkを使用して、32ビットのユーザー・プログラムを作成することもできます。次の表に、Pro*C/C++により32ビットおよび64ビットのユーザー・プログラムを作成するためのMakeファイルを示します。
| プラットフォーム | 64ビットMakeファイル | 32ビットMakeファイル |
|---|---|---|
| AIX、HP-UX、Linux x86-64およびSolaris SPARC | demo_proc.mk |
demo_proc32.mk |
| Linux x86およびSolaris | 該当なし | demo_proc.mk |
|
関連項目: ユーザー・プログラムの作成方法は、そのMakeファイルを参照してください。 |
|
注意: AIXシステムの場合、プログラムを正しくコンパイルするために、次の例のmakeコマンドの-rオプションを指定してください。 |
Makeファイルdemo_proc.mkを使用してプログラムを作成する場合は、次のようなコマンドを実行します。
$ make -f demo_proc.mk target OBJS="objfile1 objfile2 ..." EXE=exename
各項目の意味は次のとおりです。
targetは、使用するMakeファイルのターゲットです。
objfilenは、プログラムをリンクするためのオブジェクト・ファイルです。
exenameは、実行可能プログラムです。
たとえば、Pro*C/C++ソース・ファイルmyprog.pcからプログラムmyprogを作成する場合は、作成する実行可能ファイルのソースとタイプに応じて、次のいずれかのコマンドを実行します。
Cソースの場合、クライアント共有ライブラリに動的にリンクさせるには、次のコマンドを実行します。
$ make -f demo_proc.mk build OBJS=myprog.o EXE=myprog
Cソースの場合、クライアント共有ライブラリに静的にリンクさせるには、次のコマンドを実行します。
$ make -f demo_proc.mk build_static OBJS=myprog.o EXE=myprog
C++ソースの場合、クライアント共有ライブラリに動的にリンクさせるには、次のコマンドを実行します。
$ make -f demo_proc.mk cppbuild OBJS=myprog.o EXE=myprog
C++ソースの場合、クライアント共有ライブラリに静的にリンクさせるには、次のコマンドを実行します。
$ make -f demo_proc.mk cppbuild_static OBJS=myprog.o EXE=myprog
表6-4に、Pro*COBOLプリコンパイラのネーミング規則を示します。
| 項目 | ネーミング規則 |
|---|---|
|
実行可能ファイル |
|
|
デモンストレーション・ディレクトリ |
|
|
Makeファイル |
|
Pro*COBOLでは、静的リンク、動的リンクまたは動的読取りプログラムをサポートしています。動的リンク・プログラムは、クライアント共有ライブラリを使用します。動的読取りプログラムは、$ORACLE_HOME/binディレクトリにあるrtsora(32ビットのCOBOLコンパイラの場合は、rtsora32)実行可能ファイルを使用します。
この項では、次の項目について説明します。
この項では、Pro*COBOLで必要な環境変数について説明します。
Acucorp ACUCOBOL-GT COBOLコンパイラを使用するには、A_TERMCAP、A_TERM、PATHおよびLD_LIBRARY_PATH環境変数を設定する必要があります。環境変数LD_LIBRARY_PATHに正しいディレクトリが設定されていない場合は、プログラムのコンパイルまたは実行時に、次のようなエラー・メッセージが表示されます。
runcbl: error while loading shared libraries: libclntsh.so: cannot open shared object file: No such file or directory
a_termcapファイルの場所を指定するには環境変数A_TERMCAPを設定し、そのファイルからサポートされる端末を指定するには環境変数A_TERMを設定します。たとえば、次のように入力します。
Bourne、BashまたはKornシェルの場合
$ A_TERMCAP=/opt/COBOL/etc/a_termcap $ A_TERM=vt100 $ export A_TERMCAP A_TERM
Cシェルの場合
% setenv A_TERMCAP /opt/COBOL/etc/a_termcap % setenv A_TERM vt100
/opt/COBOL/binディレクトリを含むように環境変数PATHを設定します。
Bourne、BashまたはKornシェルの場合
$ PATH=/opt/COBOL/bin:$PATH $ export PATH
Cシェルの場合
% setenv PATH opt/COBOL/bin:${PATH}
|
注意: AIXの場合、LIBPATH変数は、LD_LIBRARY_PATH変数と同等です。AIXでは、次のコマンドでLD_LIBRARY_PATH変数ではなくLIBPATH変数を使用する必要があります。 |
環境変数LD_LIBRARY_PATHには、コンパイラ・ライブラリがインストールされているディレクトリを設定します。たとえば、コンパイラ・ライブラリが/opt/COBOL/libディレクトリにインストールされている場合は、次のコマンドを実行します。
Bourne、BashまたはKornシェルの場合
$ LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/opt/COBOL/lib
$ export LD_LIBRARY_PATH
Cシェルの場合
% setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:/opt/COBOL/lib
Micro Focus Server Express COBOLコンパイラを使用するには、環境変数COBDIRとPATHおよび共有ライブラリ・パス環境変数を設定する必要があります。
共有ライブラリ・パス環境変数に$COBDIR/coblibディレクトリが設定されていない場合は、プログラムのコンパイルまたは実行時に、次のようなエラー・メッセージが表示されます。
Linuxの場合
rtsora: error while loading shared libraries: libcobrts_t.so: cannot open shared object file: No such file or directory
HP-UX PA-RISCおよびSolaris SPARCの場合
ld.so.1: rts32: irrecoverable: libfhutil.so.2.0: Can't open file: errno=2
AIXの場合
ld: rts32: irrecoverable: libfhutil.so: Can't open file: errno=2
HP-UX Itaniumの場合
/usr/lib/hpux64/dld.so: Unable to find library 'libcobrts64_t.so.2'. stoped
環境変数COBDIRには、コンパイラがインストールされているディレクトリを設定します。たとえば、コンパイラが/opt/lib/cobolディレクトリにインストールされている場合は、次のコマンドを実行します。
Bourne、BashまたはKornシェルの場合
$ COBDIR=/opt/lib/cobol $ export COBDIR
Cシェルの場合
% setenv COBDIR /opt/lib/cobol
$COBDIR/binディレクトリを含むように環境変数PATHを設定します。
Bourne、BashまたはKornシェルの場合
$ PATH=$COBDIR/bin:$PATH $ export PATH
Cシェルの場合
% setenv PATH ${COBDIR}/bin:${PATH}
環境変数LIBPATH、LD_LIBRARY_PATHまたはSHLIB_PATHには、コンパイラ・ライブラリがインストールされているディレクトリを設定します。たとえば、プラットフォームで環境変数LD_LIBRARY_PATHが使用されており、コンパイラ・ライブラリが$COBDIR/coblibディレクトリにインストールされている場合は、次のコマンドを実行します。
Bourne、BashまたはKornシェルの場合
$ LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$COBDIR/coblib
$ export LD_LIBRARY_PATH
Cシェルの場合
% setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:$COBDIR/coblib
Oracleでは、動的読取りPro*COBOLプログラムを実行するために、rtsora(64ビット・システムの32ビットCOBOLコンパイラの場合はrtsora32)という専用のランタイム・システムを用意しています。動的読取りPro*COBOLプログラムを実行するには、cobrunランタイム・システムのかわりに、rtsora(またはrtsora32)ランタイム・システムを使用します。cobrunを使用してPro*COBOLプログラムを実行すると、次のようなエラー・メッセージが表示されます。
$ cobrun sample1.gnt Load error : file 'SQLADR' error code: 173, pc=0, call=1, seg=0 173 Called program file not found in drive/directory
デモ・プログラムは、Pro*COBOLプリコンパイラの機能を紹介するために用意されています。デモ・プログラムは、$ORACLE_HOME/precomp/demo/procob2ディレクトリにあります。デフォルトでは、すべてのプログラムがクライアント共有ライブラリに動的にリンクされます。
デモ・プログラムを実行するには、$ORACLE_HOME/sqlplus/demo/demobld.sqlスクリプトで作成したデモンストレーション表がSCOTTスキーマにあり、そのパスワードがTIGERであることが必要です。
|
注意: デモンストレーションを作成する前に、SCOTTアカウントのロックを解除してパスワードを設定する必要があります。 |
次のMakeファイルを使用してデモ・プログラムを作成します。
$ORACLE_HOME/precomp/demo/procob2/demo_procob.mk
sample1というPro*COBOL用のデモ・プログラムをプリコンパイル、コンパイルおよびリンクするには、次のコマンドを実行します。
$ make -f demo_procob.mk sample1
Pro*COBOLデモ・プログラムを作成するには、次のコマンドを実行します。
$ make -f demo_procob.mk samples
rtsoraランタイム・システムで使用する動的読取りプログラムsample1.gntを作成し、実行するには、次のコマンドを実行します。
$ make -f demo_procob.mk sample1.gnt $ rtsora sample1.gnt
一部のデモ・プログラムでは、$ORACLE_HOME/precomp/demo/sqlディレクトリ内にあるSQLスクリプトを実行する必要があります。このスクリプトを実行しないと、実行を要求するメッセージが表示されます。
デモ・プログラムを作成し、それに対応するSQLスクリプトを実行するには、「makeマクロ引数RUNSQL=run」をコマンドに追加します。たとえば、sample9デモ・プログラムを作成し、必要な$ORACLE_HOME/precomp/demo/sql/sample9.sqlスクリプトを実行するには、次のコマンドを実行します。
$ make -f demo_procob.mk sample9 RUNSQL=run
Pro*COBOLデモ・プログラムを作成し、必要なSQLスクリプトすべてを実行するには、次のコマンドを実行します。
$ make -f demo_procob.mk samples RUNSQL=run
Makeファイル $ORACLE_HOME/precomp/demo/procob2/demo_procob.mkを使用して、ユーザー・プログラムを作成できます。このMakeファイルは、32ビットまたは64ビットのユーザー・プログラムを作成します。Makeファイルdemo_procob_32.mkを使用して、32ビット(または31ビット)のユーザー・プログラムを作成することもできます。次の表に、Pro*COBOLにより32ビット(または31ビット)および64ビットのユーザー・プログラムを作成するためのMakeファイルを示します。
| プラットフォーム | 64ビットMakeファイル | 32ビットMakeファイル |
|---|---|---|
| AIX、HP-UX、Linux x86-64およびSolaris SPARC | demo_procob.mk |
demo_procob_32.mk |
| Linux x86 | 該当なし | demo_procob.mk |
|
関連項目: ユーザー・プログラムの作成方法は、そのMakeファイルを参照してください。 |
Makeファイルdemo_procob.mkを使用してプログラムを作成する場合は、次のようなコマンドを実行します。
$ make -f demo_procob.mk target COBS="cobfile1 cobfile2 ..." EXE=exename
各項目の意味は次のとおりです。
targetは、使用するMakeファイルのターゲットです。
cobfilenは、プログラムのCOBOLソース・ファイルです。
exenameは、実行可能プログラムです。
たとえば、プログラムmyprogを作成する場合は、作成する実行可能ファイルのソースとタイプに応じて、次のいずれかのコマンドを実行します。
COBOLソースの場合、クライアント共有ライブラリに動的にリンクさせるには、次のコマンドを実行します。
$ make -f demo_procob.mk build COBS=myprog.cob EXE=myprog
COBOLソースの場合、静的にリンクさせるには、次のコマンドを実行します。
$ make -f demo_procob.mk build_static COBS=myprog.cob EXE=myprog
COBOLソースの場合、rtsora(32ビットのCOBOLコンパイラの場合はrtsora32)で使用するための動的読取りプログラムを作成するには、次のコマンドを実行します。
$ make -f demo_procob.mk myprog.gnt
Pro*FORTRANプリコンパイラを使用する場合は、事前に適切なバージョンのコンパイラがインストールされていることを確認してください。この項では、次の項目について説明します。
|
関連項目:
|
デモ・プログラムは、Pro*FORTRANプリコンパイラの機能を紹介するために用意されています。デモ・プログラムはすべて、$ORACLE_HOME/precomp/demo/proforディレクトリにあります。デフォルトでは、すべてのプログラムがクライアント共有ライブラリに動的にリンクされます。
デモ・プログラムを実行するには、$ORACLE_HOME/sqlplus/demo/demobld.sqlスクリプトで作成したデモンストレーション表がSCOTTスキーマにあり、そのパスワードがTIGERであることが必要です。
|
注意: デモンストレーションを作成する前に、SCOTTアカウントのロックを解除してパスワードを設定する必要があります。 |
デモ・プログラムを作成するには、$ORACLE_HOME/precomp/demo/proforディレクトリにあるMakeファイルdemo_profor.mkを使用します。たとえば、sample1のデモ・プログラムをプリコンパイル、コンパイルおよびリンクするには、次のコマンドを実行します。
$ make -f demo_profor.mk sample1
Pro*FORTRANのデモ・プログラムを作成するには、次のコマンドを実行します。
$ make -f demo_profor.mk samples
一部のデモ・プログラムでは、$ORACLE_HOME/precomp/demo/sqlディレクトリ内にあるSQLスクリプトを実行する必要があります。このスクリプトを実行しないと、実行を要求するメッセージが表示されます。
デモ・プログラムを作成し、それに対応するSQLスクリプトを実行するには、「makeマクロ引数RUNSQL=run」をコマンドラインに追加します。たとえば、sample11デモ・プログラムを作成し、必要な$ORACLE_HOME/precomp/demo/sql/sample11.sqlスクリプトを実行するには、次のコマンドを実行します。
$ make -f demo_profor.mk sample11 RUNSQL=run
Pro*FORTRANのデモ・プログラムを作成し、必要なSQLスクリプトすべてを実行するには、次のコマンドを実行します。
$ make -f demo_profor.mk samples RUNSQL=run
Makeファイル$ORACLE_HOME/precomp/demo/profor/demo_profor.mkを使用して、ユーザー・プログラムを作成できます。このMakeファイルは、32ビットまたは64ビットのユーザー・プログラムを作成します。Makeファイルdemo_profor_32.mkを使用して、32ビットのユーザー・プログラムを作成することもできます。次の表に、Pro*FORTRANにより32ビットおよび64ビットのユーザー・プログラムを作成するためのMakeファイルを示します。
| プラットフォーム | 64ビットMakeファイル | 32ビットMakeファイル |
|---|---|---|
| AIX、HP-UXおよびSolaris SPARC | demo_profor.mk |
demo_profor_32.mk |
|
関連項目: ユーザー・プログラムの作成方法は、そのMakeファイルを参照してください。 |
Makeファイルdemo_proc.mkを使用してプログラムを作成する場合は、次のようなコマンドを実行します。
$ make -f demo_profor.mk target FORS="forfile1 forfile2 ..." EXE=exename
各項目の意味は次のとおりです。
targetは、使用するMakeファイルのターゲットです。
forfilenは、プログラムのFORTRANソース・ファイルです。
exenameは、実行可能プログラムです。
たとえば、Pro*FORTRANソース・ファイルmyprog.pfoからプログラムmyprogを作成する場合は、作成する実行可能ファイルのタイプに応じて、次のいずれかのコマンドを実行します。
実行可能ファイルの場合、クライアント共有ライブラリに動的にリンクさせるには、次のコマンドを実行します。
$ make -f demo_profor.mk build FORS=myprog.f EXE=myprog
実行可能ファイルの場合、クライアント共有ライブラリに静的にリンクさせるには、次のコマンドを実行します。
$ make -f demo_profor.mk build_static FORS=myprog.f EXE=myprog
|
注意: この項の内容は、AIXプラットフォームに適用されます。 |
SQL*Module for Adaを使用する場合は、事前に適切なバージョンのコンパイラがインストールされていることを確認してください。
|
関連項目:
|
この項では、次の項目について説明します。
デモ・プログラムは、SQL*Module for Adaの機能を紹介するために用意されています。デモ・プログラムはすべて、$ORACLE_HOME/precomp/demo/modadaディレクトリにあります。デフォルトでは、すべてのプログラムがクライアント共有ライブラリに動的にリンクされます。
ch1_drvデモ・プログラムを実行するには、$ORACLE_HOME/sqlplus/demo/demobld.sqlスクリプトで作成したデモンストレーション表がSCOTTスキーマにあり、そのパスワードがTIGERであることが必要です。
|
注意: デモンストレーションを作成する前に、SCOTTアカウントのロックを解除してパスワードを設定する必要があります。 |
demcalspおよびdemohostの各デモ・プログラムでは、サンプルのcollegeデータベースがMODTESTスキーマに存在している必要があります。適切なmakeコマンドを使用してMODTESTスキーマを作成すると、サンプルのcollegeデータベースをロードできます。
SQL*Module for Adaデモ・プログラムを作成して、MODTESTユーザーの作成に必要なSQLスクリプトを実行し、サンプルのcollegeデータベースを作成するには、次のコマンドを実行します。
$ make -f demo_modada.mk all RUNSQL=run
1つのデモ・プログラム(demohost)を作成して、MODTESTユーザーの作成に必要なSQLスクリプトを実行し、サンプルのcollegeデータベースを作成するには、次のコマンドを実行します。
$ make -f demo_modada.mk makeuser loaddb demohost RUNSQL=run
SQL*Module for Adaデモ・プログラムを作成して、サンプルのcollegeデータベースを再び作成しない場合には、次のコマンドを実行します。
$ make -f demo_modada.mk samples
1つのデモ・プログラム(demohost)を作成して、サンプルのcollegeデータベースを再び作成しない場合は、次のコマンドを実行します。
$ make -f demo_modada.mk demohost
プログラムを実行するには、Oracle Netの接続文字列を定義するか、または適切な表が存在するデータベースに接続可能なINST1_ALIASという別名を定義する必要があります。
Makeファイル$ORACLE_HOME/precomp/demo/modada/demo_modada.mkを使用して、ユーザー・プログラムを作成できます。Makeファイルdemo_modada.mkを使用してプログラムを作成する場合は、次のようなコマンドを実行します。
$ make -f demo_modada.mk ada OBJS="module1 module2 ..." \ EXE=exename MODARGS=SQL_Module_arguments
各項目の意味は次のとおりです。
moduleは、コンパイル済のAdaオブジェクトです。
exenameは、実行可能プログラムです。
SQL_Module_argumentsは、SQL*Moduleに渡されるコマンドライン引数です。
|
関連項目: SQL*Module for Adaの詳細は、『Oracle SQL*Module for Ada Programmer's Guide』を参照してください。 |
Oracle Call Interface(OCI)またはOracle C++ Call Interface(OCCI)を使用する前に、適切なバージョンのCまたはC++がインストール済であることを確認してください。
|
関連項目:
|
この項では、次の項目について説明します。
OCIとOCCIの機能を紹介するデモ・プログラムは、ソフトウェアのOracle Database 11g Examplesメディアに収録されています。デモ・プログラムには、CおよびC++プログラムの2種類があります。デモ・プログラムは、$ORACLE_HOME/rdbms/demoディレクトリにあります。デフォルトでは、すべてのプログラムがクライアント共有ライブラリに動的にリンクされます。
デモ・プログラムを実行するには、$ORACLE_HOME/sqlplus/demo/demobld.sqlスクリプトで作成したデモンストレーション表がSCOTTスキーマにあり、そのパスワードがTIGERであることが必要です。一部のデモ・プログラムでは、デモ・ソース・ファイルに示されているように、特定の.sqlファイルを実行することが必要です。OCCIデモ・プログラムでは、occidemo.sqlを実行することが必要です。
|
注意: デモンストレーションを作成する前に、SCOTTアカウントのロックを解除してパスワードを設定する必要があります。 |
デモ・プログラムを作成するには、$ORACLE_HOME/rdbms/demoディレクトリにあるMakeファイルdemo_rdbms.mkを使用します。たとえば、cdemo1のデモ・プログラムをコンパイルおよびリンクするには、次のコマンドを実行します。
$ make -f demo_rdbms.mk cdemo1
OCIのCデモ・プログラムを作成するには、次のコマンドを実行します。
$ make -f demo_rdbms.mk demos
OCCIのC++デモ・プログラムを作成するには、次のコマンドを実行します。
$ make -f demo_rdbms.mk occidemos
Makeファイル$ORACLE_HOME/rdbms/demo/demo_rdbms.mkを使用して、ユーザー・プログラムを作成できます。このMakeファイルは、32ビットまたは64ビットのユーザー・プログラムを作成します。demo_rdbms32.mkを使用して、64ビットのオペレーティング・システムに32ビットのユーザー・プログラムを作成することもできます。次の表に、Pro*FORTRANにより32ビットおよび64ビットのユーザー・プログラムを作成するためのMakeファイルを示します。
| プラットフォーム | 64ビットMakeファイル | 32ビットMakeファイル |
|---|---|---|
| AIX、HP-UX、Solaris SPARCおよびLinux x86-64 | demo_rdbms.mk |
demo_rdbms32.mk |
| Linux x86 | 該当なし | demo_rdbms.mk |
|
関連項目: ユーザー・プログラムの作成方法は、そのMakeファイルを参照してください。 |
|
注意:
|
64ビット・ドライバを使用するJDBC/OCIデモ・プログラムを実行するには、次の手順を実行します。
次の各ファイルについて、環境変数CLASSPATHの先頭に$ORACLE_HOME/jdbc/lib/ojdbc5.jarを追加します。
jdbc/demo/samples/jdbcoci/Makefile jdbc/demo/samples/generic/Inheritance/Inheritance1/Makefile jdbc/demo/samples/generic/Inheritance/Inheritance2/Makefile jdbc/demo/samples/generic/Inheritance/Inheritance3/Makefile jdbc/demo/samples/generic/JavaObject1/Makefile jdbc/demo/samples/generic/NestedCollection/Makefile
$ORACLE_HOME/jdbc/demo/samples/generic/Makefileファイル内で、JAVA変数とJAVAC変数を変更し、JDKの位置および-d64フラグを次のように指定します。
JAVA=${ORACLE_HOME}/java/bin/java -d64
JAVAC=${ORACLE_HOME}/java/bin/javac -d64
$ORACLE_HOME/libディレクトリを含むように、環境変数LD_LIBRARY_PATH_64を設定します。
|
注意: AIXの場合、LIBPATH変数は、LD_LIBRARY_PATH_64変数と同等です。AIXでは、LD_LIBRARY_PATH_64変数ではなくLIBPATH変数を使用する必要があります。 |
この章の製品別の項で説明したように、ユーザー・プログラムを作成する場合は、オラクル社がソフトウェアとともに提供するMakeファイルdemo_product.mkを使用してください。このMakeファイルを変更する場合、またはカスタムMakeファイルを使用する場合は、次の制限事項に注意してください。
Oracleライブラリの順番は変更しないでください。リンク中にすべてのシンボルが解決されるように、Oracleライブラリはリンク・ラインに2回以上追加されます。
AIXを除き、Oracleライブラリの順番がすべてのプラットフォームで重要である理由は、次のとおりです。
Oracleライブラリは相互に参照し合います。たとえば、ライブラリAの関数はライブラリBの関数をコールし、ライブラリBの関数はライブラリAの関数をコールします。
HP-UXのリンカーは、1パス・リンカーです。AIX、LinuxおよびSolarisのリンカーは、2パス・リンカーです。
リンク・ラインにライブラリを追加する場合は、リンク・ラインの最初または最後に追加します。Oracleライブラリ間にユーザー・ライブラリを入れないでください。
nmakeまたはGNU makeなどのmakeユーティリティを使用する場合は、マクロおよび接頭辞の処理について、オペレーティング・システムで提供されているmakeユーティリティとの違いに注意してください。OracleのMakeファイルは、makeユーティリティによってテストおよびサポートされます。
Oracleライブラリの名前および内容は、リリース間で変更されることがあります。必要なライブラリを判断するには、現行のリリースで提供されているMakeファイルdemo_product.mkを必ず使用してください。
オラクル社が提供しているsymfindユーティリティを使用すると、シンボルが定義されているライブラリまたはオブジェクト・ファイルの場所を確認する際に役立ちます。プログラムのリンク時に、未定義シンボルは一般的なエラーの1つとみなされ、次のようなエラー・メッセージが生成されます。
$ make -f demo_proc.mk sample1 Undefined first referenced symbol in file sqlcex sample1.o sqlglm sample1.o ld: irrecoverable: Symbol referencing errors. No output written to sample1
このエラーは、参照するシンボルの定義をリンカーが検出できなかった場合に発生します。このエラー・メッセージが表示された場合は、シンボルが定義されているライブラリまたはオブジェクト・ファイルがリンク・ラインにあるかどうか、およびリンカーが検索しているファイルのディレクトリが正しいかどうかを確認します。
次の例は、symfindユーティリティの出力です。このユーティリティをsqlcexシンボルの検索に使用しています。
$ symfind sqlcex
SymFind - Find Symbol <sqlcex> in <**>.a, .o, .so
------------------------------------------------------
Command: /u01/app/oracle/product/11.1.0/bin/symfind sqlcex
Local Directory: /u01/app/oracle/product/11.1.0
Output File: (none)
Note: I do not traverse symbolic links
Use '-v' option to show any symbolic links
Locating Archive and Object files ...
[11645] | 467572| 44|FUNC |GLOB |0 |8 |sqlcex
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ./lib/libclntsh.sl
[35] | 0| 44|FUNC |GLOB |0 |5 |sqlcex
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ./lib/libsql.a
Oracle Databaseでは、2タスク通信にいくつかのシグナルが使用されます。シグナルは、プロセスがデータベースに接続するとユーザー・プロセスにインストールされ、切断すると削除されます。
表6-5に、Oracle Databaseで2タスク通信に使用されるシグナルを示します。
表6-5 2タスク通信に使用されるシグナル
| シグナル | 説明 |
|---|---|
|
Oracleプロセスが終了すると、パイプ・ドライバはSIGCLD(SIGCHLDともいいます)を使用します。SIGCLDシグナルは、オペレーティング・システム・カーネルによってユーザー・プロセスに送信されます。シグナル・ハンドラは、 |
|
|
パイプ2タスク・ドライバが、バンド外ブレークをユーザー・プロセスからOracleプロセスに送信する場合に、SIGCONTを使用します。 |
|
|
2タスク・ドライバが、ユーザーの割込み要求を検出する場合に、SIGINTを使用します。Oracleプロセスではなく、ユーザー・プロセスがSIGINTを受け取ります。 |
|
|
Oracle Netプロトコルが、ネットワーク・イベントの着信を示す場合に、SIGIOを使用します。 |
|
|
パイプ・ドライバが、通信チャネルのファイルの終わりを検出する場合に、SIGPIPEを使用します。パイプへの書き込み時に読取りプロセスが存在していない場合、SIGPIPEシグナルが書込みプロセスに送信されます。Oracleプロセスとユーザー・プロセスの両方が、SIGPIPEを受け取ります。SIGCLDは、SIGPIPEに似ていますが、ユーザー・プロセスのみに適用され、Oracleプロセスには適用されません。 |
|
|
パイプ・ドライバが、ユーザー側からOracleプロセスに割込みシグナルを送る場合に、SIGTERMを使用します。ユーザーが割込みキー([Ctrl]+[C])を押すと、このシグナルが送信されます。ユーザー・プロセスではなく、OracleプロセスがSIGTERMを受け取ります。 |
|
|
Oracle Net TCP/IPドライバが、バンド外ブレークをユーザー・プロセスからOracleプロセスに送信する場合に、SIGURGを使用します。 |
表に記載されているシグナルは、すべてのプリコンパイラ・アプリケーションに影響します。Oracleプロセスへの接続時に、SIGCLD(またはSIGCHLD)およびSIGPIPEにシグナル・ハンドラを1つのみインストールできます。osnsui()ルーチンをコールして設定すると、複数のシグナル・ハンドラをSIGINT用にインストールできます。SIGINTの場合は、osnsui()およびosncui()を使用して、シグナル受取りルーチンを登録および削除します。
また、必要に応じて、他のシグナルにもシグナル・ハンドラをインストールできます。Oracleプロセスに接続していない場合は、複数のシグナル・ハンドラをインストールできます。
例6-1に、シグナル・ルーチンおよび受取りルーチンの設定方法を示します。
例6-1 シグナル・ルーチンおよび受取りルーチン
/* user side interrupt set */ word osnsui( /*_ word *handlp, void (*astp), char * ctx, _*/) /* ** osnsui: Operating System dependent Network Set User-side Interrupt. Add an ** interrupt handling procedure astp. Whenever a user interrupt(such as a ^C) ** occurs, call astp with argument ctx. Put in *handlp handle for this ** handler so that it may be cleared with osncui. Note that there may be many ** handlers; each should be cleared using osncui. An error code is returned if ** an error occurs. */ /* user side interrupt clear */ word osncui( /*_ word handle _*/ ); /* ** osncui: Operating System dependent Clear User-side Interrupt. Clear the ** specified handler. The argument is the handle obtained from osnsui. An error ** code is returned if an error occurs. */
例6-2に、アプリケーション・プログラムでのosnsui()およびosncui()ルーチンの使用方法を示します。
例6-2 osnsui()およびosncui()ルーチンのテンプレート
/*
** User interrupt handler template.
*/
void sig_handler()
{
...
}
main(argc, argv)
int arc;
char **argv;
{
int handle, err;
...
/* Set up the user interrupt handler */
if (err = osnsui(&handle, sig_handler, (char *) 0))
{
/* If the return value is nonzero, then an error has occurred
Take appropriate action for the error. */
...
}
...
/* Clear the interrupt handler */
if (err = osncui(handle))
{
/* If the return value is nonzero, then an error has occurred
Take appropriate action for the error. */
...
}
...
}
Oracle XAは、X/Open Distributed Transaction Processing XAインタフェースのOracle実装です。XA標準には、トランザクション内の共有リソースへのアクセスを制御するリソース・マネージャ間や、トランザクションを監視および解決するトランザクション・サービス間の双方向インタフェースが規定されています。
Oracle Call Interfaceには、XA機能があります。TPモニターXAアプリケーションを作成するときは、TPモニター・ライブラリ(シンボルax_regおよびax_unregを定義するライブラリ)が、リンク・ラインでOracle Client共有ライブラリより前に設定されていることを確認してください。このリンク制限は、XAの動的登録(Oracle XAスイッチxaoswd)を使用する場合に必要です。
Oracle DatabaseのXAコールは、クライアント共有ライブラリ(プラットフォームに応じてlibclntsh.a、libclntsh.sl、libclntsh.soまたはlibclntsh.dylib)およびクライアント静的ライブラリ(libclntst11.a)の両方で定義されています。これらのライブラリは、$ORACLE_HOME/libディレクトリにあります。