Oracle® Database管理者リファレンス 12c リリース1 (12.1) for Linux and UNIX-Based Operating Systems B71275-11 |
|
前 |
次 |
この章では、OracleプリコンパイラおよびOracle Call Interfaceの使用方法について説明します。内容は次のとおりです。
Oracleプリコンパイラは、Oracle DatabaseのSQL文を高水準言語で記述されたプログラムと組み合せるためのアプリケーション開発ツールです。Oracleプリコンパイラは、ANSI SQLと互換性があり、Oracle Databaseやその他のANSI SQLデータベース管理システムで実行するオープンでカスタマイズされたアプリケーションを開発するために使用します。
この項では、次の項目について説明します。
注意: この項で示すORACLE_HOME は、「管理者」インストール・タイプを使用してOracle Database Client 12cをインストールするときに作成される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*FORTRAN 32ビット(Oracle Solaris、HP-UXおよびIBM AIX on POWER Systems (64-Bit)) |
|
Pro*COBOL 32ビット(Oracle Solaris、HP-UXおよびIBM AIX on POWER Systems (64-Bit)) |
|
Pro*COBOL (Oracle Solaris、HP-UXおよびIBM AIX on POWER Systems (64-Bit)) |
|
Pro*C/C++ 32ビット(HP-UX) |
|
Pro*FORTRAN(HP-UX) |
|
SQL*Module for Ada (IBM AIX on POWER Systems (64-Bit)) |
|
次の問題は、すべてのプリコンパイラに共通しています。
C言語以外では、コンパイラによって、大文字の関数やサブプログラム名が小文字に変換されます。これが、No such user exists
エラー・メッセージの原因になる可能性があります。このエラー・メッセージが表示された場合は、オプション・ファイル内の関数またはサブプログラム名の大/小文字が、IAPXTB表の文字と一致しているかどうかを確認してください。
プリコンパイラとベンダー提供のデバッガに互換性がない場合があります。デバッガを使用して動作したプログラムが、デバッガを使用しないときも同様に動作するとはかぎりません。
IRECLEN
およびORECLEN
の各パラメータには、最大値がありません。
Oracleライブラリは、プリコンパイラやOCIまたはOCCIアプリケーションと静的または動的にリンクできます。静的リンクの場合、アプリケーション全体のライブラリおよびオブジェクトは、1つの実行可能プログラムにリンクされます。その結果、アプリケーションの実行可能ファイルが非常に大きくなることがあります。
動的リンクの場合、実行コードの一部分が実行可能プログラムに格納され、残りの部分はアプリケーションの実行時に動的にリンクされるライブラリに格納されます。実行時にリンクされるライブラリを、動的ライブラリまたは共有ライブラリと呼びます。動的リンクには、次のようないくつかのメリットがあります。
ディスク領域要件が少なくなります。複数のアプリケーションで、または同一アプリケーションのコールで、同じ動的ライブラリを使用できます。
メイン・メモリー要件が少なくなります。同一の動的ライブラリ・イメージをメイン・メモリーに一度ロードしておくと、複数のアプリケーションでそれを共有できます。
クライアント共有ライブラリとクライアント静的ライブラリは、$ORACLE_HOME/lib
にあります。オラクル社が提供しているdemo_
product
.mk
ファイルを使用してアプリケーションをリンクする場合は、デフォルトでクライアント共有ライブラリがリンクされます。
共有ライブラリ・パスの環境変数設定にクライアント共有ライブラリを含むディレクトリが指定されていない場合、実行可能ファイルの起動時に、次のようなエラー・メッセージのいずれかが表示される場合があります。
Cannot load library libclntsh.a cannot 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ビットのアプリケーションがどちらもサポートされている場合、実行するアプリケーションに応じて、正しいディレクトリを指定してください。
プラットフォーム | 環境変数 | サンプル設定 |
---|---|---|
Oracle Solaris (32ビットおよび64ビット・アプリケーション)およびLinux | LD_LIBRARY_PATH |
$ORACLE_HOME/lib |
IBM AIX on POWER Systems (32ビットおよび64ビット・アプリケーション) | LIBPATH |
$ORACLE_HOME/lib |
HP-UX(32ビット・アプリケーション) | SHLIB_PATH |
$ORACLE_HOME/lib |
HP-UX (64ビット・アプリケーション) | LD_LIBRARY_PATH |
$ORACLE_HOME/lib |
クライアント共有ライブラリは、インストール時に自動的に作成されます。それを再作成する必要がある場合、次の手順を実行します。
クライアント共有ライブラリを使用するすべてのクライアント・アプリケーションを終了します。この中には、SQL*PlusやOracle Recovery ManagerなどのOracle Clientアプリケーションもすべて含まれます。
oracle
ユーザーでログインし、次のコマンドを実行します。
$ $ORACLE_HOME/bin/genclntsh
非スレッドのクライアント共有ライブラリ
注意: この項の内容は、HP-UXシステムに適用されます。 |
HP-UXでは、非スレッドのクライアント共有ライブラリを使用できます。ただし、このライブラリは、スレッドを使用する、またはスレッドに依存するOCIアプリケーションでは使用できません。
スレッドを使用しないアプリケーションでこのライブラリを使用するには、次のコマンドを実行して32および64ビットのOCIアプリケーションを作成します。
$ make -f demo_rdbms.mk build_nopthread EXE=oci02 OBJS=oci02.o
クライアント・アプリケーション・タイプ(32ビットまたは64ビット)は次のプラットフォームでサポートされています。
Oracle Solaris
Linux x86-64
IBM: Linux on System z
IBM AIX on POWER Systems (64-Bit)
HP-UX Itanium
次の表に、32ビットおよび64ビットのクライアント共有ライブラリを示します。
プラットフォーム | 32ビットのクライアント共有ライブラリ | 64ビットのクライアント共有ライブラリ |
---|---|---|
Oracle Solaris、Linux x86-64およびIBM: Linux on System z |
$ORACLE_HOME/lib/libclntsh.so |
$ORACLE_HOME/lib/libclntsh.so |
IBM AIX on POWER Systems (64-Bit) |
$ORACLE_HOME/lib/libclntsh.a $ORACLE_HOME/lib/libclntsh.so |
$ORACLE_HOME/lib/libclntsh.a $ORACLE_HOME/lib/libclntsh.so |
HP-UX Itanium | $ORACLE_HOME/lib/libclntsh.sl |
$ORACLE_HOME/lib/libclntsh.sl |
異なるワード・サイズが混在しているインストールを実装するには、次の手順を実行します。
次のコマンドを実行して、32ビットおよび64ビットのクライアント共有ライブラリを作成します。
$ $ORACLE_HOME/bin/genclntsh
プラットフォームに応じて、次のいずれかの環境変数に、必要な32ビットおよび64ビットのクライアント共有ライブラリのパスを入力します。
プラットフォーム | 環境変数 |
---|---|
Oracle Solaris、Linux x86-64、IBM: Linux on System zおよびHP-UX | LD_LIBRARY_PATH |
IBM AIX on POWER Systems (64-Bit) | LIBPATH |
HP-UX(32ビット・クライアント・アプリケーション) | SHLIB_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 |
Pro*C/C++プリコンパイラを使用する場合は、事前にオペレーティング・システムの適切なバージョンのコンパイラが正しくインストールされていることを確認してください。
関連項目:
|
この項では、次の項目について説明します。
デモ・プログラムは、Pro*C/C++プリコンパイラの機能を紹介するために用意されています。デモ・プログラムには、C、C++およびObjectプログラムの3種類があります。デモ・プログラムはすべて、$ORACLE_HOME/precomp/demo/proc
ディレクトリにあります。デフォルトでは、すべてのプログラムがクライアント共有ライブラリに動的にリンクされます。
デモ・プログラムを実行するには、$ORACLE_HOME/sqlplus/demo/demobld.sql
スクリプトで作成したデモンストレーション表がパスワード付きのJONESスキーマに存在する必要があります。
注意: デモンストレーションを作成する前に、JONESアカウントのロックを解除してパスワードを設定する必要があります。 |
デモ・プログラムを作成するには、$ORACLE_HOME/precomp/demo/proc/
ディレクトリにあるMakeファイルdemo_proc.mk
を使用します。たとえば、sample1
のデモ・プログラムをプリコンパイル、コンパイルおよびリンクするには、次のコマンドを実行します。
$ make -f demo_proc.mk sample1
注意: IBM AIX on POWER Systems (64-Bit)の場合、デモ・プログラムを正しくコンパイルするために、次の例のmake コマンドの-r オプションを指定してください。次に例を示します。
$ make -r -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ファイル |
---|---|---|
Oracle Solaris、Linux x86-64、IBM: Linux on System z、IBM AIX on POWER Systems (64-Bit)およびHP-UX | demo_proc.mk |
demo_proc32.mk |
関連項目: ユーザー・プログラムの作成方法は、そのMakeファイルを参照してください。 |
注意: IBM AIX on POWER Systems (64-Bit)の場合、プログラムを正しくコンパイルするために、次の例の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-3に、Pro*COBOLプリコンパイラのネーミング規則を示します。
Pro*COBOLでは、静的リンク、動的リンクまたは動的読取りプログラムをサポートしています。動的リンク・プログラムは、クライアント共有ライブラリを使用します。動的読取りプログラムは、$ORACLE_HOME/bin
ディレクトリにあるrtsora
実行可能ファイルを使用します。
この項では、次の項目について説明します。
この項では、Pro*COBOLで必要な環境変数について説明します。
Micro Focus Server Express COBOLコンパイラを使用するには、環境変数COBDIR
とPATH
および共有ライブラリ・パス環境変数を設定する必要があります。
環境変数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
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}
注意: IBM AIX on POWER Systems (64-Bit)の場合、LIBPATH 変数はLD_LIBRARY_PATH 変数と同等です。IBM AIX on POWER Systems (64-Bit)では、次のコマンドで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
Oracleには、動的読取りPro*COBOLプログラムを実行するために、rtsora
という専用のランタイム・システムが用意されています。動的読取りPro*COBOLプログラムを実行するには、cobrun
ランタイム・システムのかわりに、rtsora
ランタイム・システムを使用します。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
スクリプトで作成したデモンストレーション表がパスワード付きのJONESスキーマに存在する必要があります。
注意: デモンストレーションを作成する前に、JONESアカウントのロックを解除してパスワードを設定する必要があります。 |
次の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ビットのユーザー・プログラムを作成することもできます。次の表に、Pro*COBOLにより32ビットおよび64ビットのユーザー・プログラムを作成するためのMakeファイルを示します。
プラットフォーム | 64ビットMakeファイル | 32ビットMakeファイル |
---|---|---|
Oracle Solaris、Linux x86-64、IBM: Linux on System z、IBM AIX on POWER Systems (64-Bit)およびHP-UX | demo_procob.mk |
demo_procob_32.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
で使用するための動的読取りプログラムを作成するには、次のコマンドを実行します。
$ make -f demo_procob.mk myprog.gnt
Pro*FORTRANプリコンパイラを使用する場合は、事前に適切なバージョンのコンパイラがインストールされていることを確認してください。この項では、次の項目について説明します。
関連項目:
|
デモ・プログラムは、Pro*FORTRANプリコンパイラの機能を紹介するために用意されています。デモ・プログラムはすべて、$ORACLE_HOME/precomp/demo/profor
ディレクトリにあります。デフォルトでは、すべてのプログラムがクライアント共有ライブラリに動的にリンクされます。
デモ・プログラムを実行するには、$ORACLE_HOME/sqlplus/demo/demobld.sql
スクリプトで作成したデモンストレーション表がパスワード付きのJONESスキーマに存在する必要があります。
注意: デモンストレーションを作成する前に、JONESアカウントのロックを解除してパスワードを設定する必要があります。 |
デモ・プログラムを作成するには、$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ファイル |
---|---|---|
Oracle Solaris、IBM AIX on POWER Systems (64-Bit)およびHP-UX | 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
注意: この項の内容は、IBM AIX on POWER Systems (64-Bit)プラットフォームに適用されます。 |
SQL*Module for Adaを使用する場合は、事前に適切なバージョンのコンパイラがインストールされていることを確認してください。
関連項目:
|
この項では、次の項目について説明します。
デモ・プログラムは、SQL*Module for Adaの機能を紹介するために用意されています。デモ・プログラムはすべて、$ORACLE_HOME/precomp/demo/modada
ディレクトリにあります。デフォルトでは、すべてのプログラムがクライアント共有ライブラリに動的にリンクされます。
ch1_drv
デモ・プログラムを実行するには、$ORACLE_HOME/sqlplus/demo/demobld.sql
スクリプトで作成したデモンストレーション表がパスワード付きのJONES
スキーマに存在する必要があります。
注意: デモンストレーションを作成する前に、JONESアカウントのロックを解除してパスワードを設定する必要があります。 |
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
各項目の意味は次のとおりです。
modulen
は、コンパイル済の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 12c Examplesソフトウェアに収録されています。デモ・プログラムには、CおよびC++プログラムの2種類があります。デモ・プログラムは、$ORACLE_HOME/rdbms/demo
ディレクトリにあります。デフォルトでは、すべてのプログラムがクライアント共有ライブラリに動的にリンクされます。
デモ・プログラムを実行するには、$ORACLE_HOME/sqlplus/demo/demobld.sql
スクリプトで作成したデモンストレーション表がパスワード付きのJONESスキーマに存在する必要があります。一部のデモ・プログラムでは、デモ・ソース・ファイルに示されているように、特定の.sqlファイルを実行することが必要です。OCCIデモ・プログラムでは、occidemo.sqlを実行することが必要です。
注意: デモンストレーションを作成する前に、JONESアカウントのロックを解除してパスワードを設定する必要があります。 |
デモ・プログラムを作成するには、$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ファイル |
---|---|---|
Oracle Solaris、Linux x86-64、IBM AIX on POWER Systems (64-Bit)およびHP-UX | demo_rdbms.mk |
demo_rdbms32.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
を設定します。
注意: IBM AIX on POWER Systems (64-Bit)の場合、LIBPATH 変数はLD_LIBRARY_PATH_64 変数と同等です。IBM AIX on POWER Systems (64-Bit)では、LD_LIBRARY_PATH_64 変数ではなくLIBPATH 変数を使用する必要があります。 |
この章の製品別の項で説明したように、ユーザー・プログラムを作成する場合は、オラクル社がソフトウェアとともに提供するMakeファイルdemo_
product
.mk
を使用してください。このMakeファイルを変更する場合、またはカスタムMakeファイルを使用する場合は、次の制限事項に注意してください。
Oracleライブラリの順番は変更しないでください。リンク中にすべてのシンボルが解決されるように、Oracleライブラリはリンク・ラインに2回以上追加されます。
IBM AIX on POWER Systems (64-Bit)を除き、Oracleライブラリの順序がすべてのプラットフォームで重要である理由は、次のとおりです。
Oracleライブラリは相互に参照し合います。たとえば、ライブラリAの関数はライブラリBの関数をコールし、ライブラリBの関数はライブラリAの関数をコールします。
HP-UXのリンカーは、1パス・リンカーです。IBM AIX on POWER Systems (64-Bit)、LinuxおよびOracle 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/12.1.0/bin/symfind sqlcex Local Directory: /u01/app/oracle/product/12.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ライブラリはスレッド・セーフで、マルチスレッド・アプリケーションをサポートします。
関連項目: マルチスレッド・アプリケーションの詳細は、『Pro*C/C++プログラマーズ・ガイド』を参照してください。 |
Oracle Databaseでは、2タスク通信にいくつかのシグナルが使用されます。シグナルは、プロセスがデータベースに接続するとユーザー・プロセスにインストールされ、切断すると削除されます。
表6-4に、Oracle Databaseで2タスク通信に使用されるシグナルを示します。
表6-4 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
ディレクトリにあります。