ヘッダーをスキップ

Oracle Database 管理者リファレンス
10g リリース2(10.2) for UNIX Systems

B19278-06
目次
目次
索引
索引

戻る 次へ

6 OracleプリコンパイラおよびOracle Call Interfaceの使用

この章では、OracleプリコンパイラおよびOracle Call Interfaceの使用方法について説明します。次の項目について説明します。

6.1 Oracleプリコンパイラの概要

Oracleプリコンパイラは、Oracle DatabaseのSQL文を高水準言語で記述されたプログラムと組み合せるためのアプリケーション開発ツールです。Oracleプリコンパイラは、ANSI SQLと互換性があり、Oracle Databaseやその他のANSI SQLデータベース管理システムで実行するオープンでカスタマイズされたアプリケーションを開発するために使用します。

次の項目について説明します。

6.1.1 プリコンパイラ構成ファイル

Oracleプリコンパイラの構成ファイルは、$ORACLE_HOME/precomp/adminディレクトリにあります。表6-1に、各プリコンパイラの構成ファイルの名前を示します。

表 6-1    Oracleプリコンパイラのシステム構成ファイル 
製品  構成ファイル 

Pro*C/C++ 

pcscfg.cfg 

Pro*COBOL(AIX、HP-UX、Solaris、Tru64 UNIXおよびzSeries Linux) 

pcbcfg.cfg 

Pro*FORTRAN(AIX、HP-UX、SolarisおよびTru64 UNIX) 

pccfor.cfg 

Object Type Translator 

ottcfg.cfg 

SQL*Module for Ada(AIX) 

pmscfg.cfg 

6.1.2 プリコンパイラ実行可能ファイルの再リンク

すべてのプリコンパイラ実行可能ファイルを再リンクするには、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プリコンパイラの実行可能ファイル 
製品  実行可能ファイル 

Pro*C/C++ 

proc 

Pro*COBOL(AIX、HP-UX、Linux on POWER、Tru64 UNIX、Solaris SPARC(64ビット)およびzSeries Linux) 

procobまたはrtsora 

Pro*COBOL 32ビット(AIX、HP-UX PA-RISC、HP-UX Itanium、Solaris SPARC(64ビット)およびzSeries Linux) 

procob32またはrtsora32 

Pro*FORTRAN(AIX、HP-UX、Linux on POWER、SolarisおよびTru64 UNIX) 

profor(AIXおよびSolarisの場合は32ビット) 

Pro*FORTRAN 32ビット(HP-UXおよびLinux on POWER) 

profor32 

SQL*Module for Ada(AIX) 

modada 

6.1.3 プリコンパイラのREADMEファイル

表6-3に、プリコンパイラのREADMEファイルの場所を示します。READMEファイルには、前回のリリース以降にプリコンパイラに加えられた変更が記載されています。

表 6-3    プリコンパイラのREADMEファイルの保存場所 
プリコンパイラ  READMEファイル 

Pro*C/C++ 

$ORACLE_HOME/precomp/doc/proc2/readme.doc 

Pro*COBOL 

$ORACLE_HOME/precomp/doc/procob2/readme.doc 

Pro*FORTRAN 

$ORACLE_HOME/precomp/doc/pro1x/readme.txt 

6.1.4 すべてのプリコンパイラに共通の問題

次の問題は、すべてのプリコンパイラに共通しています。

6.1.5 静的および動的リンク

Oracleライブラリは、プリコンパイラやOCIまたはOCCIアプリケーションと静的または動的にリンクできます。静的リンクの場合、アプリケーション全体のライブラリおよびオブジェクトは、1つの実行可能プログラムにリンクされます。その結果、アプリケーションの実行可能ファイルが非常に大きくなることがあります。

動的リンクの場合、実行コードの一部分が実行可能プログラムに格納され、残りの部分はアプリケーションの実行時に動的にリンクされるライブラリに格納されます。実行時にリンクされるライブラリを、動的ライブラリまたは共有ライブラリと呼びます。動的リンクには、次のようないくつかのメリットがあります。

6.1.6 クライアント共有ライブラリとクライアント静的ライブラリ

クライアント共有ライブラリとクライアント静的ライブラリは、$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およびTru64 UNIX 

LD_LIBRARY_PATH 

$ORACLE_HOME/lib 

Mac OS X 

DYLD_LIBRARY_PATH 

$ORACLE_HOME/lib(64ビット・ライブラリ)

$ORACLE_HOME/lib32(32ビット・ライブラリ) 

zSeries Linux(31ビット・アプリケーション)、Linux on POWER(32ビット・アプリケーション)およびSolaris(32ビット・アプリケーション) 

LD_LIBRARY_PATH 

$ORACLE_HOME/lib32 

Linux on POWER(64ビット・アプリケーション)およびSolaris(32ビット・アプリケーション) 

LD_LIBRARY_PATH_64 

$ORACLE_HOME/lib 

クライアント共有ライブラリは、インストール時に自動的に作成されます。クライアント共有ライブラリを再作成する場合は、次の手順を実行します。

  1. クライアント共有ライブラリを使用するすべてのクライアント・アプリケーションを終了します。この中には、SQL*PlusやOracle Recovery ManagerなどのOracle Clientアプリケーションもすべて含まれます。

  2. oracleユーザーでログインし、次のコマンドを実行します。

    $ $ORACLE_HOME/bin/genclntsh
    
非スレッド化クライアント共有ライブラリ


注意:

この項の内容は、HP-UX PA-RISCシステムに適用されます。 


HP-UX PA-RISCでは、非スレッド化クライアント共有ライブラリを使用できます。ただし、このライブラリは、スレッドを使用するOCIアプリケーションやスレッドに依存するOCIアプリケーションでは使用できません。

スレッドを使用しないアプリケーションにこのライブラリを使用するには、次のいずれかのコマンドを実行してOCIアプリケーションを作成します。

6.2 クライアント・アプリケーションのビット長サポート

次の表に、クライアント・アプリケーションについてサポートされるビット長(31ビット、32ビットまたは64ビット)を示します。

クライアント・アプリケーションのタイプ  サポートされるプラットフォーム 

32ビットのみ 

Linux x86およびSolaris x86 

64ビットのみ 

Tru64 UNIXおよびLinux Itanium 

32ビットおよび64ビット 

Linux on POWER、Solaris SPARC、Linux x86-64およびMac OS X 

31ビットおよび64ビット 

zSeries Linux 

AIX、HP-UX、Linux on POWER、Solaris SPARCおよびzSeries Linuxでは、Oracle Database 10g リリース2(10.2)とともに提供されているデモンストレーションおよびクライアント・アプリケーションはすべて、64ビット・モードでリンクおよび実行します。AIX、Linux on POWER、Solaris SPARCおよびHP-UXでは、同じOracleホーム・ディレクトリに32ビットおよび64ビットのクライアント・アプリケーションを作成できます。同様に、zSeries Linuxでは、同じOracleホーム・ディレクトリに31ビットおよび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
 

HP-UX Itanium、Solaris、Linux on POWER、Linux x86-64およびzSeries Linux 

$ORACLE_HOME/lib32/libclntsh.so

注意: zSeries Linuxでは、$ORACLE_HOME/lib32ディレクトリに31ビットのライブラリが含まれます。 

$ORACLE_HOME/lib/libclntsh.so
 

Mac OS X 

$ORACLE_HOME/lib32/libclntsh.dylib
 
$ORACLE_HOME/lib/libclntsh.dylib
 

異なるワード・サイズが混在しているインストールを実装するには、次の手順を実行します。

  1. 次のコマンドを実行して、32ビットおよび64ビットのクライアント共有ライブラリを作成します。

    $ $ORACLE_HOME/bin/genclntsh
    
    
  2. 使用しているプラットフォームに応じて、次のいずれかの環境変数に、必要な32ビットおよび64ビットのクライアント共有ライブラリのパスを入力します。

    プラットフォーム  環境変数 

    AIX 

    LIBPATH 

    HP-UX(32ビットのクライアント・アプリケーション) 

    SHLIB_PATH 

    HP-UX、Linux on POWER、Linux x86、Linux x86-64、SolarisおよびTru64 UNIX 

    LD_LIBRARY_PATH 

    Mac OS X 

    DYLD_LIBRARY_PATH 

32ビットのPro*CおよびOCIカスタマ・アプリケーションの作成

32ビットおよび64ビットのPro*CおよびOracle Call Interface(OCI)カスタマ・アプリケーションをサポートするオペレーティング・システムでは、次のファイルに32ビットPro*CおよびOCIアプリケーションの作成方法が記載されています。

作成内容 . .  参照先のMakeファイル . . 

32ビットのPro*Cアプリケーションの作成(Linux on POWERを除くすべてのプラットフォーム) 

$ORACLE_HOME/precomp/demo/proc/demo_proc32.mk 

32ビットのOCIアプリケーションの作成(Linux on POWERを除くすべてのプラットフォーム) 

$ORACLE_HOME/rdbms/demo/demo_rdbms32.mk 

32ビットのPro*Cアプリケーションの作成(Linux on POWERの場合) 

$ORACLE_HOME/precomp/demo/proc/demo_proc.mk 

32ビットのOCIアプリケーションの作成(Linux on POWERの場合) 

$ORACLE_HOME/rdbms/demo/demo_rdbms.mk 


注意:

Linux on POWERで、前の表で指定したmakeファイルを使用してCOMPILER_MODE=32を設定すると、GCCを持つ32ビット・オブジェクトが作成されます。

COMPILER=VAC.を設定すると、オペレーティング・システムでIBM XL Compilerを起動できます。 


32ビットの実行可能ファイルとライブラリ


注意:

この項の内容は、Mac OS X、AIX、HP-UX、Linux on POWER、Solaris SPARCおよびzSeries Linuxの各プラットフォームに適用されます。 


32ビットおよび64ビットのアプリケーションをサポートするプラットフォームでは、$ORACLE_HOME/binディレクトリに32ビットおよび64ビットの実行可能ファイルが格納されています。さらに、次のディレクトリに32ビットのライブラリが格納されています。

6.3 Pro*C/C++プリコンパイラ

Pro*C/C++プリコンパイラを使用する場合は、事前にオペレーティング・システムの適切なバージョンのコンパイラが正しくインストールされていることを確認してください。

関連項目:

  • サポートされるコンパイラのバージョンの詳細は、『Oracle Databaseインストレーション・ガイド』を参照してください。

  • Pro*C/C++プリコンパイラおよびインタフェース機能の詳細は、『Pro*C/C++プログラマーズ・ガイド』を参照してください。

 

6.3.1 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

6.3.2 Pro*C/C++のユーザー・プログラム

Makeファイル$ORACLE_HOME/precomp/demo/proc/demo_proc.mkを使用して、ユーザー・プログラムを作成できます。このMakeファイルは、32ビットまたは64ビットのユーザー・プログラムを作成します。Makeファイルdemo_proc32.mkを使用して、32ビット(zSeries Linuxの場合は31ビット)のユーザー・プログラムを作成することもできます。次の表に、Pro*C/C++により32ビット(または31ビット)および64ビットのユーザー・プログラムを作成するためのMakeファイルを示します。

プラットフォーム  64ビットMakeファイル  32ビットMakeファイル 

AIX、HP-UX、Solaris SPARC、zSeries LinuxおよびMac OS X 

demo_proc.mk 

demo_proc32.mk

注意: zSeries Linuxの場合、このMakeファイルは31ビットのユーザー・プログラムを作成します。 

Linux x86およびSolaris 

該当なし 

demo_proc.mk 

Linux ItaniumおよびTru64 UNIX 

demo_proc.mk 

該当なし 

Linux on POWER 

demo_proc.mk 

demo_proc.mk

注意: export COMPILER_MODE=32 

関連項目:

ユーザー・プログラムの作成方法は、そのMakeファイルを参照してください。 


注意:

AIXシステムの場合は、プログラムが正しくコンパイルされるようにするために、次の例のmakeコマンドに-rオプションを指定してください。 


Makeファイルdemo_proc.mkを使用してプログラムを作成する場合は、次のようなコマンドを実行します。

$ make -f demo_proc.mk target OBJS="objfile1 objfile2 ..." EXE=exename

各項目の意味は次のとおりです。

たとえば、Pro*C/C++ソース・ファイルmyprog.pcからプログラムmyprogを作成する場合は、作成する実行可能ファイルのソースとタイプに応じて、次のいずれかのコマンドを実行します。

6.4 Pro*COBOLプリコンパイラ


注意:

Linux Itanium、Solaris x86およびMac OS Xでは、Pro*COBOLはサポートされていません。Linux on POWERの場合、Pro*COBOLは64ビットでのみサポートされます。 


表6-4に、Pro*COBOLプリコンパイラのネーミング規則を示します。

表 6-4    Pro*COBOLのネーミング規則 
項目  ネーミング規則 

実行可能ファイル 

procobまたはprocob32 

デモンストレーション・ディレクトリ 

procob2 

Makeファイル 

demo_procob.mkまたはdemo_procob_32.mk 

Pro*COBOLでは、静的リンク、動的リンクまたは動的読取りプログラムをサポートしています。動的リンク・プログラムは、クライアント共有ライブラリを使用します。動的読取りプログラムは、$ORACLE_HOME/binディレクトリにあるrtsora(32ビットのCOBOLコンパイラの場合は、rtsora32)実行可能ファイルを使用します。

6.4.1 Pro*COBOLの環境変数

この項では、Pro*COBOLで必要な環境変数について説明します。

6.4.1.1 Acucorp ACUCOBOL-GT COBOLコンパイラ


注意:

Linux on POWERでは、Acucorp ACUCOBOLはサポートされていません。 


Acucorp ACUCOBOL-GT COBOLコンパイラを使用するには、A_TERMCAPA_TERMPATHおよび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_TERM

a_termcapファイルの場所を指定するには環境変数A_TERMCAPを設定し、そのファイルからサポートされる端末を指定するには環境変数A_TERMを設定します。たとえば、次のように入力します。

PATH

/opt/COBOL/binディレクトリを含むように環境変数PATHを設定します(zSeries Linuxシステムで31ビット・コンパイラを使用している場合は、/opt/COBOL31/binディレクトリ)。

LD_LIBRARY_PATH


注意:

AIXでのLIBPATH変数は、LD_LIBRARY_PATH変数と同等です。AIXでは、次のコマンドでLD_LIBRARY_PATH変数ではなく、LIBPATH変数を使用する必要があります。 


環境変数LD_LIBRARY_PATHには、コンパイラ・ライブラリがインストールされているディレクトリを設定します。たとえば、コンパイラ・ライブラリが/opt/COBOL/libディレクトリにインストールされている場合は、次のコマンドを実行します。

6.4.1.2 Micro Focus Server Express COBOLコンパイラ

Micro Focus Server Express COBOLコンパイラを使用するには、環境変数COBDIRPATHおよび共有ライブラリ・パス環境変数を設定する必要があります。

関連項目:

共有ライブラリ・パス環境変数の詳細は、「クライアント共有ライブラリとクライアント静的ライブラリ」の項を参照してください。 

共有ライブラリ・パス環境変数に$COBDIR/coblibディレクトリが設定されていない場合は、プログラムのコンパイルまたは実行時に、次のようなエラー・メッセージが表示されます。

COBDIR

環境変数COBDIRには、コンパイラがインストールされているディレクトリを設定します。たとえば、コンパイラが/opt/lib/cobolディレクトリにインストールされている場合は、次のコマンドを実行します。

PATH

$COBDIR/binディレクトリを含むように環境変数PATHを設定します。

共有ライブラリ・パス

環境変数LIBPATHLD_LIBRARY_PATHまたはSHLIB_PATHには、コンパイラ・ライブラリがインストールされているディレクトリを設定します。たとえば、プラットフォームで環境変数LD_LIBRARY_PATHが使用されており、コンパイラ・ライブラリが$COBDIR/coblibディレクトリにインストールされている場合は、次のコマンドを実行します。

6.4.2 Pro*COBOLのOracleランタイム・システム

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

6.4.3 Pro*COBOLのデモ・プログラム

デモ・プログラムは、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

6.4.4 Pro*COBOLのユーザー・プログラム

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、Solaris SPARCおよびzSeries Linux 

demo_procob.mk 

demo_procob_32.mk

注意: zSeries Linuxの場合、このMakeファイルは31ビットのユーザー・プログラムを作成します。 

Linux x86 

該当なし 

demo_procob.mk 

Tru64 UNIX 

demo_procob.mk 

該当なし 

Linux on POWER 

demo_procob.mk 

demo_procob.mk

注意: export COMPILER_MODE=32 

関連項目:

ユーザー・プログラムの作成方法は、そのMakeファイルを参照してください。 

Makeファイルdemo_procob.mkを使用してプログラムを作成する場合は、次のようなコマンドを実行します。

$ make -f demo_procob.mk target COBS="cobfile1 cobfile2 ..." EXE=exename

各項目の意味は次のとおりです。

たとえば、プログラムmyprogを作成する場合は、作成する実行可能ファイルのソースとタイプに応じて、次のいずれかのコマンドを実行します。

6.4.5 FORMATプリコンパイラ・オプション

FORMATプリコンパイラ・オプションは、COBOLの入力行の形式を指定します。デフォルト値のANSIを指定した場合、列1〜6はオプションの順序番号、列7はコメントまたは継続行を示します。段落名は列8〜11で開始され、列12〜72が文となります。

TERMINALを指定した場合、列1〜6は削除され、列7が左端の列になります。

6.5 Pro*FORTRANプリコンパイラ


注意:

LinuxまたはMac OS Xでは、Pro*FORTRANはサポートされていません。 


Pro*FORTRANプリコンパイラを使用する場合は、事前に適切なバージョンのコンパイラがインストールされていることを確認してください。この項では、次の項目について説明します。

6.5.1 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

6.5.2 Pro*FORTRANのユーザー・プログラム

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 

Tru64 UNIX 

demo_profor.mk 

該当なし 

関連項目:

ユーザー・プログラムの作成方法は、そのMakeファイルを参照してください。 

Makeファイルdemo_proc.mkを使用してプログラムを作成する場合は、次のようなコマンドを実行します。

$ make -f demo_profor.mk target FORS="forfile1 forfile2 ..." EXE=exename

各項目の意味は次のとおりです。

たとえば、Pro*FORTRANソース・ファイルmyprog.pfoからプログラムmyprogを作成する場合は、作成する実行可能ファイルのタイプに応じて、次のいずれかのコマンドを実行します。

6.6 SQL*Module for ADA


注意:

この項の内容は、AIXプラットフォームに適用されます。 


SQL*Module for Adaを使用する場合は、事前に適切なバージョンのコンパイラがインストールされていることを確認してください。

関連項目:

  • 必要なコンパイラのバージョンの詳細は、『Oracle Databaseインストレーション・ガイド』を参照してください。

  • SQL*Module for Adaの詳細は、『Oracle SQL*Module for Ada Programmer's Guide』を参照してください。

 

6.6.1 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の各デモ・プログラムでは、大学のサンプル・データベースがMODTESTスキーマに存在している必要があります。適切なmakeコマンドを使用して、MODTESTスキーマを作成し、大学のサンプル・データベースをロードできます。

SQL*Module for Adaデモ・プログラムを作成して、MODTESTユーザーの作成に必要なSQLスクリプトを実行し、大学のサンプル・データベースを作成するには、次のコマンドを実行します。

$ make -f demo_modada.mk all RUNSQL=run

デモ・プログラム(demohost)を1つのみ作成して、MODTESTユーザーの作成に必要なSQLスクリプトを実行し、大学のサンプル・データベースを作成するには、次のコマンドを実行します。

$ make -f demo_modada.mk makeuser loaddb demohost RUNSQL=run

SQL*Module for Adaデモ・プログラムを作成し、大学のサンプル・データベースを再作成しない場合は、次のコマンドを実行します。

$ make -f demo_modada.mk samples

デモ・プログラム(demohost)を1つのみ作成し、大学のサンプル・データベースを再作成しない場合は、次のコマンドを実行します。

$ make -f demo_modada.mk demohost

プログラムを実行するには、Oracle Netの接続文字列を定義するか、または適切な表が存在しているデータベースに接続できるINST1_ALIASという別名を定義する必要があります。

6.6.2 SQL*Module for Adaのユーザー・プログラム

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

各項目の意味は次のとおりです。

6.7 OCIとOCCI

Oracle Call Interface(OCI)またはOracle C++ Call Interface(OCCI)を使用する前に、適切なバージョンのCまたはC++がインストール済であることを確認してください。

関連項目:

  • サポートされるコンパイラのバージョンの詳細は、『Oracle Databaseインストレーション・ガイド』を参照してください。

  • OCIとOCCIの詳細は、『Oracle Call Interfaceプログラマーズ・ガイド』または『Oracle C++ Call Interfaceプログラマーズ・ガイド』を参照してください。

 

6.7.1 OCIとOCCIのデモ・プログラム

デモ・プログラムは、ソフトウェアで提供されるOCIとOCCIの機能を紹介するために用意されています。デモ・プログラムには、CおよびC++プログラムの2種類があります。デモ・プログラムは、$ORACLE_HOME/rdbms/demoディレクトリにあります。デフォルトでは、すべてのプログラムがクライアント共有ライブラリに動的にリンクされます。

デモ・プログラムを実行するには、$ORACLE_HOME/sqlplus/demo/demobld.sqlスクリプトで作成したデモンストレーション表がSCOTTスキーマにあり、そのパスワードがTIGERであることが必要です。


注意:

デモンストレーションを作成する前に、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

6.7.2 OCIとOCCIのユーザー・プログラム

Makeファイル$ORACLE_HOME/rdbms/demo/demo_rdbms.mkを使用して、ユーザー・プログラムを作成できます。このMakeファイルは、32ビットまたは64ビットのユーザー・プログラムを作成します。Makeファイルdemo_rdbms32.mkを使用して、32ビットのユーザー・プログラムを作成することもできます。次の表に、Pro*FORTRANにより32ビットおよび64ビットのユーザー・プログラムを作成するためのMakeファイルを示します。

プラットフォーム  64ビットMakeファイル  32ビットMakeファイル 

AIX、HP-UX、Solaris SPARC、zSeries LinuxおよびMac OS X 

demo_rdbms.mk 

demo_rdbms32.mk

注意: zSeries Linuxの場合、このMakeファイルは31ビットのユーザー・プログラムを作成します。 

Linux x86およびSolaris x86 

該当なし 

demo_rdbms.mk 

Linux ItaniumおよびTru64 UNIX 

demo_rdbms.mk 

該当なし 

Linux on POWER 

demo_rdbms.mk 

demo_rdbms.mk

注意: export COMPILER_MODE=32 

関連項目:

ユーザー・プログラムの作成方法は、そのMakeファイルを参照してください。 

Makeファイルdemo_rdbms.mkを使用してプログラムを作成する場合は、次のようなコマンドを実行します。

$ make -f demo_rdbms.mk target OBJS="objfile1 objfile2 ..." EXE=exename

この例の各項目の意味は、次のとおりです。

たとえば、Cソース・ファイルmyprog.cからプログラムmyprogを作成する場合は、作成する実行可能ファイルのタイプに応じて、次のいずれかのコマンドを実行します。

たとえば、C++ソース・ファイルmyprog.cppからプログラムmyprogを作成する場合は、作成する実行可能ファイルのタイプに応じて、次のいずれかのコマンドを実行します。

6.8 64ビット・ドライバを使用するOracle JDBC/OCIプログラム


注意:

  • この項の内容は、Mac OS X、AIX、HP-UX、Linux on POWER、Solaris SPARCおよびzSeries Linuxの各プラットフォームに適用されます。

  • この項で説明する指示とMakeファイルを使用して、64ビット・ドライバを使用するJDBC/OCIユーザー・プログラムを作成できます。

 

64ビット・ドライバを使用するJDBC/OCIデモ・プログラムを実行するには、次の手順を実行します。

  1. 次の各ファイルについて、環境変数CLASSPATHの先頭に$ORACLE_HOME/jdbc/lib/ojdbc14.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
    
    
  2. $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
    
    

    Linux on POWER上でJAVA変数とJAVAC変数を変更し、64ビットJDKをインストールしたJDKの位置を次のように指定します。

    JAVA=/opt/IBMJava2-ppc64-142/bin/java
    JAVAC=/opt/IBMJava2-ppc64-142/bin/javac
    
    
  3. jdbc/demo/samples/generic/Makefileファイル内で、JAVAとJAVACが定義されている箇所を除き、JDK14_HOME/bin/javacの出現箇所をすべてJAVACで置き換え、JDK14_HOME/bin/javaの出現箇所をすべてJAVAで置き換えます。

  4. $ORACLE_HOME/libディレクトリを含むように、環境変数LD_LIBRARY_PATH_64を設定します。


    注意:

    AIXでのLIBPATH変数は、LD_LIBRARY_PATH_64変数と同等です。AIXでは、LD_LIBRARY_PATH_64変数ではなく、LIBPATH変数を使用する必要があります。

    Linux on POWERでは、LD_LIBRARY_PATH_64変数ではなくLD_LIBRARY_PATH変数を設定する必要があります。

    Mac OS Xでは、LD_LIBRARY_PATH_64変数ではなくDYLD_LIBRARY_PATH変数を設定する必要があります。 


6.9 カスタムMakeファイル

この章の製品別の項で説明したように、ユーザー・プログラムを作成する場合は、オラクル社がソフトウェアとともに提供するMakeファイルdemo_product.mkを使用してください。このMakeファイルを変更する場合、またはカスタムMakeファイルを使用する場合は、次の制限事項に注意してください。

6.10 未定義シンボルの修正

オラクル社が提供しているsymfindユーティリティを使用すると、シンボルが定義されているライブラリまたはオブジェクト・ファイルの場所を確認する際に役立ちます。プログラムのリンク時に、未定義シンボルは一般的なエラーの1つとみなされ、次のようなエラー・メッセージが生成されます。

$ make -f demo_proc.mk sample1
Undefined                       first referenced
 symbol                             in file
sqlcex                              sample1.o
sqlglm                              sample1.o
ld: fatal: 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/10.2.0/bin/symfind sqlcex
Local Directory: /u01/app/oracle/product/10.2.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

6.11 マルチスレッド・アプリケーション

このリリースで提供されているOracleライブラリは、スレッド・セーフです。このため、マルチスレッド・アプリケーションをサポートできます。

6.12 シグナル・ハンドラの使用

Oracle Databaseでは、2タスク通信にいくつかのシグナルが使用されます。シグナルは、プロセスがデータベースに接続するとユーザー・プロセスにインストールされ、切断すると削除されます。

表6-5に、Oracle Databaseで2タスク通信に使用されるシグナルを示します。

表 6-5    2タスク通信に使用されるシグナル 
シグナル  説明 

SIGCLD 

Oracleプロセスが終了すると、パイプ・ドライバはSIGCLD(SIGCHLDともいいます)を使用します。SIGCLDシグナルは、オペレーティング・システム・カーネルによってユーザー・プロセスに送信されます。シグナル・ハンドラは、wait()ルーチンを使用して、サーバー・プロセスが異常終了しているかどうかを調べます。Oracleプロセスではなく、ユーザー・プロセスがSIGCLDを受け取ります。 

SIGCONT 

パイプ2タスク・ドライバが、バンド外ブレークをユーザー・プロセスからOracleプロセスに送信する場合に、SIGCONTを使用します。 

SIGINT 

2タスク・ドライバが、ユーザーの割込み要求を検出する場合に、SIGINTを使用します。Oracleプロセスではなく、ユーザー・プロセスがSIGINTを受け取ります。 

SIGIO 

Oracle Netプロトコルが、ネットワーク・イベントの着信を示す場合に、SIGIOを使用します。 

SIGPIPE 

パイプ・ドライバが、通信チャネルのファイルの終わりを検出する場合に、SIGPIPEを使用します。パイプへの書き込み時に読取りプロセスが存在していない場合、SIGPIPEシグナルが書込みプロセスに送信されます。Oracleプロセスとユーザー・プロセスの両方が、SIGPIPEを受け取ります。SIGCLDは、SIGPIPEに似ていますが、ユーザー・プロセスのみに適用され、Oracleプロセスには適用されません。 

SIGTERM 

パイプ・ドライバが、ユーザー側からOracleプロセスに割込みシグナルを送る場合に、SIGTERMを使用します。ユーザーが割込みキー([Ctrl]+[C])を押すと、このシグナルが送信されます。ユーザー・プロセスではなく、OracleプロセスがSIGTERMを受け取ります。 

SIGURG 

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. */
                ...
        }
        ...
}

6.13 XA機能

Oracle XAは、X/Open Distributed Transaction Processing(DTP)XAインタフェースのOracle実装です。XA標準には、トランザクション内の共有リソースへのアクセスを制御するリソース・マネージャ間や、トランザクションを監視および解決するトランザクション・サービス間の双方向インタフェースが規定されています。

Oracle Call Interfaceには、XA機能があります。TPモニターXAアプリケーションを作成するときは、TPモニター・ライブラリ(シンボルax_regおよびax_unregを定義するライブラリ)が、リンク・ラインでOracle Client共有ライブラリより前に設定されていることを確認してください。このリンク制限は、XAの動的登録(Oracle XAスイッチxaoswd)を使用する場合に必要です。

Oracle DatabaseのXAコールは、クライアント共有ライブラリ(プラットフォームに応じてlibclntsh.alibclntsh.sllibclntsh.soまたはlibclntsh.dylib)およびクライアント静的ライブラリ(libclntst10.a)の両方で定義されています。これらのライブラリは、$ORACLE_HOME/libディレクトリにあります。


戻る 次へ
Oracle
Copyright © 2006, 2009, Oracle and/or its affiliates.
All Rights Reserved.
目次
目次
索引
索引