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

提供: RAD Studio
移動先: 案内検索

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

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

サポート対象バージョン

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

メモ: Delphi で作成されたアプリケーションは、64 ビット インスタント クライアントを使用するのに 64 ビットでなければなりませんが、IDE は 32 ビットであるため、IDE は 64 ビット インスタント クライアントが利用可能かどうかエラー("OCI が適切にインストールされていません...")を表示します。この場合、パラメータは接続エディタの外で指定される必要があり、コードでまたは、TFDConnection コンポーネント内で直接プロパティを設定します。

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

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

FireDAC を使用するには、次の Oracle x86 または x64 クライアント ソフトウェア タイプのいずれか 1 つが、ワークステーションにインストールされている必要があります:

  • "ファット" Oracle Client(詳細) -- 標準インストール手順が必要となります。ドライバは、明示的に指定されていなければ、プライマリ Oracle Home にインストールされているクライアントを使用します。
  • "シン" 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
  • oraons.dll

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

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

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

macOS クライアント ソフトウェア

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

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

これを、Instant Client for macOS としてダウンロードできます(ここ

Linux にインストールするには、次の記事を参照してください:

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

Linux クライアント ライブラリをインストールするには:

  1. libaio ライブラリをインストールします:
    • Ubuntu Server 16.04 LTS では、次を実行します:
      sudo apt-get install libaio1
    • Red Hat Enterprise Linux 7 では、次を実行します:
      sudo yum install libaio
  2. 以下の記事のいずれかで説明されているように、Instant Client for Linux をインストールします:

ドライバのリンク

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

接続定義パラメータ

Oracle DBMS に接続するには、ほとんどのアプリケーションで、DriverIDDatabaseUser_NamePassword を指定する必要があります(詳細については「接続の定義(FireDAC)」参照)。

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 を指定します。 いいえ
User_Name Oracle ユーザー名(OSAuthent=No の場合) Scott
Password Oracle ユーザー パスワード(OSAuthent=No の場合) tiger
AuthMode

Oracle 認証モード:

  • Normal -- 標準ユーザー。デフォルト値。
  • SysDBA -- データベース管理者権限を持つユーザー
  • SysOper -- データベース オペレータ権限を持つユーザー
  • SysASM -- Oracle の自動ストレージ管理インスタンスのデータベース管理者権限を持つユーザー
  • SysBackup -- バックアップと復元オペレーションのデータベース管理者権限を持つユーザー
  • SysDG -- Oracle のデータ ガード オペレーションのデータベース管理者権限を持つユーザー
  • SysKM -- 透過データ暗号化のキーストア オペレーションのデータベース管理者権限を持つユーザー
メモ: さらなる情報については、『Oracle データベース管理者ガイド』参照。
通常
ReadTimeout オペレーションを受信または読み込む際の、タイムアウト値をミリ秒で指定。

0 を指定すると、タイムアウトなし、ということになります。

メモ: クライアントが時折(意図的にまたは例外的に)シャットダウンする環境で、このパラメータは使用します。そうでなければ、データベース サーバーは、シャットダウンや障害を起こしているクライアントからのデータを待ち続ける可能性があります。
WriteTimeout データベース サーバーが、クライアントへの送信オペレーションを完了するまでのタイムアウト値を指定します。

0 を指定すると、タイムアウトなし、ということになります。

メモ: クライアントが時折(意図的にまたは例外的に)シャットダウンする環境で、このパラメータは使用します。そうでなければ、データベース サーバーは、稼働していないクライアントに対して、レスポンスを送り続ける可能性があります。
CharacterSet この接続で使用する文字セット。指定されていない場合、NLS_LANG 変数値が使用されます。
  • UTF8
  • cl8mswin1251
BooleanFormat

Boolean 値を表す方式を以下のいずれかとして定義します:

  • Choose -- Boolean 型を使用して、PL/SQL の Boolean パラメータを表します。これがデフォルト モードです。
    メモ: これは、Oracle 12c 以降で有効です。Oracle の旧バージョンについては、Choose を選択する際、Integer 型が使用されます。
  • Integer -- Integer 型を使用して、PL/SQL の Boolean パラメータを表します。このとき、False = 0 および True = 1 です。
  • String -- String 型を使用して、PL/SQL の Boolean パラメータを表します。このとき、False = 'F' および True = 'T' です。
選択
ApplicationName アプリケーションの名前。指定されている場合、この値は、V$SESSION 列 MODULE に格納されます。 AllBooks
OracleAdvanced Oracle セッションの追加オプション。詳細については、「ALTER SESSION SET」の章の「Initialization Parameters and 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
  • 簡単な接続文字列を使用してデータベースに接続します:


DriverID=Ora
Database=OraSrv:1521/orcl
User_Name=ADDemo
Password=a

関連項目