少なくとも Oracle 9i 以降、Oracle にはdirectory
オブジェクトがあります。http://docs.oracle.com/cd/B12037_01/server.101/b10759/statements_5007.htmを参照してください。
各システムで同じ名前のディレクトリ オブジェクトを作成し、 への呼び出しでそのディレクトリを名前で参照する必要がありますutl_file
。
たとえば、「dev」の場合:
create directory logging_dir as '/var/log/oracle';
「テスト」について:
create directory logging_dir as 'e:\logging';
「製品」で:
create directory logging_dir as 'g:\logs\logging';
また、PL/SQL コードはすべての環境で同一です。たとえば、次のようになります。
f := utl_file.fopen('LOGGING_DIR', 'filename.log', 'W');
DBA は、ディレクトリ オブジェクトを作成し、それらを使用する必要があるデータベース ユーザーまたはロールに権限を付与する必要があります。
ディレクトリ オブジェクトを作成するシステム権限をデータベース ユーザーだけに付与しないでください。これは、Oracle が OS ユーザー「oracle」としてファイル システム上の任意の場所を読み書きできるようにすることで、セキュリティ ホールが作成されるためです。