Oracle サーバーに関する質問(FireDAC)
FAQ(FireDAC) への移動
このトピックでは、Oracle Server に関係する質問と回答の一覧を扱います。
Q1: 既に Oracle クライアントが動作している PC にアプリケーションを配置することを考えているので、レジストリ キーを使用したくありません。 自分のアプリケーション専用のパスと TNS_ADMIN 変数を作成したいと思います。
A: Oracle Instant Client のフォルダに tnsnames.ora ファイルをただ格納するだけです。 TNS_ADMIN や TNS_NAMES を指定するなど、それ以外のことは一切不要です。 TNS エイリアスを使用する必要がない場合は、空の tnsnames.ora ファイルを格納します。
Q2: D2009 アプリケーションで "Cannot initialize OCI environment"(OCI 環境を初期化できません)というエラーが発生します。 どこが間違っているのでしょうか。
A: FireDAC では、D2009 に必要な Unicode モードでは OCI を初期化できません。 おそらく、Oracle クライアントのバージョンが古いことが原因ではないかと思われます。 次のいずれかを行うことをお勧めします。
- Oracle クライアント ソフトウェアをバージョン 9.0 以上にアップグレードする。
- 非 Unicode 版の Delphi(D2007 以前)を引き続き使用する。
Q3: Oracle 8.0.5 サーバーに接続する必要があります。 それは可能ですか。
A: 以下の "ロードマップ" に従って、Oracle クライアントと Delphi の適切なバージョンを選択できます。
- Delphi 2009 以降で FireDAC を使用するには、Oracle 8.1.5 以上のクライアントが必要です。Oracle 8.1.5 からはクライアントが Unicode で正常に動作するからです。
- Delphi 2007 またはそれ以前で FireDAC を使用するには、Oracle 8.0.3 以上のクライアントが必要です。
Q4: Oracle でテーブルをロックするには、どうすればよいでしょうか。
A: そのような場合の一般的なスケルトンは次のようになります。
FDConnection1.StartTransaction;
try
FDConnection1.ExecSQL('LOCK TABLE ...');
.........
FDConnection1.Commit;
except
FDConnection1.Rollback;
raise;
end;
Q5: FireDAC のログイン ダイアログのように、Oracle サーバーのリストを取得するには、どうすればよいでしょうか。
A: 以下のものを使用します。
- TFDPhysOracleDriverLink.GetOracleHomes –- 既知の Oracle ホームのリストを取得する場合
- TFDPhysOracleDriverLink.GetTNSServices -– 主要な Oracle ホームから TNS エイリアスのリストを取得する場合
Q6: Oracle オブジェクト拡張機能はサポートされていますか。
A: 現時点では、サポートされていません。 回避策としては、PL/SQL をラップする手続きや関数を作成できます。 このアプローチを用いれば、Oracle Advanced Queuing を扱うことができます。