Oracle サーバーへの接続(FireDAC)

提供: Appmethod Topics
移動先: 案内検索

データベース接続(FireDAC) への移動


このトピックでは、Oracle サーバーへの接続方法を説明します。

サポート対象バージョン

FireDAC ネイティブ ドライバでは、Oracle の Enterprise、Standard(以前の Workgroup)、および Express(以前の Personal)サーバー エディションのバージョン 8.0.3 以降をサポートしています。Object Pascal アプリケーション用に FireDAC で Oracle を使用する方法の詳細は、「FireDAC での Oracle の使用」のトピックを参照してください。

Windows 版クライアント ソフトウェア

FireDAC を使用するには、以下のいずれかの種類の Oracle x86 または x64 クライアント ソフトウェアがワークステーションにインストールされている必要があります。

  • "ファット" Oracle クライアント(詳細情報) -- 標準のインストール手順を実施する必要があります。明示的に指定されていなければ、ドライバではプライマリ Oracle ホームにインストールされているクライアントを使用します。
  • "シン" Oracle Instant Client(詳細情報) -- 明示的に指定されていなければ、ドライバでは PATH 内のフォルダまたはアプリケーションの EXE フォルダにコピーされたクライアントを使用します。この後の「Instant Client の使用」のセクションを参照してください。

Oracle クライアント ソフトウェアが正常にインストールされていない場合は、接続しようとすると、以下のような例外が発生します。

 
 [FireDAC][Phys][Ora]-1309. OCI is not properly installed on this machine (NOE1/INIT)
 

Instant Client の使用

Instant Client をインストールするには、Oracle Instant x86 または x64 クライアント アーカイブをダウンロードし、解凍します。以下のファイルを使用します。

  • oci.dll
  • oraocci11.dll
  • oraociei11.dll
  • orasql11.dll

これらのファイルをアプリケーションの EXE フォルダまたは PATH に含まれるフォルダにコピーします。

TNS 名を使用している場合には、tnsnames.ora ファイルを同じフォルダに置くか、TFDPhysOracleDriverLink.TNSAdmin プロパティの値を tnsnames.ora のフォルダ パスに設定するか、TNSAdmin ドライバ構成パラメータを指定します。

TFDPhysOracleDriverLink.NLSLang を必要な値に設定するか、NLSLang ドライバ構成パラメータを指定します。

Linux 版クライアント ソフトウェア

FireDAC を使用するには、以下が必要です。

  • x86 または x64 クライアント ライブラリ libclntsh.so

Linux へのインストール方法は、この記事を参照してください。

Mac OS X 版クライアント ソフトウェア

FireDAC を使用するには、以下が必要です。

  • x86 クライアント ライブラリ libclntsh.dylib

これは、Instant Client for Mac OS X をダウンロードすると含まれています(ここからダウンロードできます)(詳細情報)。その後、次のコマンドを使用して、内容を解凍し、/usr/local/lib フォルダにコピーします。

 
 sudo cp * /usr/local/lib
 sudo ln -s /usr/local/lib/libclntsh.dylib.10.1 /usr/local/lib/libclntsh.dylib
 

次のコマンドを使用して、tnsnames.ora および sqlnet.ora を /etc フォルダに格納することができます。

 
 sudo cp *.ora /etc
 

ドライバのリンク

ドライバをリンクするには、以下のいずれかを行います。

接続定義パラメータ

ほとんどのアプリケーションの場合、Oracle DBMS に接続するには、DriverIDDatabaseUser_NamePassword を指定する必要があります。

DriverID=Ora

パラメータ 説明 値の例
Database 値には次のいずれかを指定します。
  • TNS エイリアス名 -- どのデータベースに接続するかを指定します。
  • TNS 接続記述子 -- TNSNames.ora の場合と同じです。
  • Oracle 接続文字列 -- SQL*Plus の場合と同じです。
  • Oracle Easy Connect 文字列 -- こちらの説明のとおりです。
  • OraSrv
  • (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = OraSrv)(PORT = 1521)))(CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = orcl)))
  • scott/tiger@OraSrv
  • system/manager@OraSrv as sysdba
  • OraSrv:1521/orcl
OSAuthent OS 認証を使用する場合には Yes、DBMS 認証を使用する場合には No を指定します。 No
User_Name Oracle ユーザー名(OSAuthent=No の場合)。 Scott
Password Oracle ユーザー パスワード(OSAuthent=No の場合)。 tiger
AuthMode Oracle 認証モードを以下のいずれかに指定します。
  • Normal -- 標準ユーザー。これがデフォルト値です。
  • SysDBA -- データベース管理者権限を持つユーザー。
  • SysOper -- データベース オペレータ権限を持つユーザー。
Normal
CharacterSet 接続で使用する文字セット。指定しない場合は、NLS_LANG 変数の値が使われます。
  • UTF8
  • cl8mswin1251
BooleanFormat 論理値を表す方式を以下のいずれかとして定義します。
  • Integer -- 論理値を整数値として表現します。False は 0、True は 1 になります。これがデフォルト モードです。
  • String -- 論理値を文字列値として表現します。False は 'F'、True は 'T' になります。
String
ApplicationName アプリケーションの名前。これを指定すると、値は V$SESSION の MODULE 列に格納されます。 AllBooks
OracleAdvanced Oracle セッション オプションを追加で指定します。詳細は、「ALTER SESSION」の「Initialization Parameters and ALTER SESSION」(初期化パラメータと ALTER SESSION)の段落を参照。値の形式は、<オプション>=<値>[;...] です。
NewPassword 新しい Oracle ユーザー パスワードを指定します。FireDAC は、古いパスワードを使って DB に接続し、その直後にパスワードを新しいものに変更します。 tiger2
MetaDefSchema アプリケーションのデフォルト スキーマを指定します。スキーマ名が MetaDefSchema と同じ場合、設計時コードではオブジェクト名からスキーマ名が省略されます。 SCOTT

使用例

  • 定義済みの TNS 名(tnsnames.ora に格納されたもの)を使用してデータベースに接続する場合:
 
 DriverID=Ora
 Database=ORA_920_APP
 User_Name=ADDemo
 Password=a
 
  • ホスト、ポート、およびインスタンス名の情報を使ってデータベースに接続する場合:
 
 DriverID=Ora
 Database=(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = OraSrv)(PORT = 1521)))
 (CONNECT_DATA = (SERVER =    DEDICATED)(SERVICE_NAME = orcl)))
 User_Name=ADDemo
 Password=a
 
  • ローカル データベースに sysdba として接続する場合:
 
 DriverID=Ora
 User_Name=sys
 AuthMode=sysdba
 
  • TNS 名を使用してデータベースに接続し、パスワードを変更する場合:
 
 DriverID=Ora
 Database=ORA_920_APP
 User_Name=ADDemo
 Password=a
 NewPassword=b
 
  • Easy Connect 文字列を使用してデータベースに接続する場合:
 
 DriverID=Ora
 Database=OraSrv:1521/orcl
 User_Name=ADDemo
 Password=a
 

関連項目