sql >> データベース >  >> RDS >> Oracle

ORA-29280の解決方法:無効なディレクトリパス

    ORA-29280:無効なディレクトリ・パスは、Oracleデータベースでファイル処理操作を行う際の一般的なエラーです

    エラーの理由と解決策

    (1)これは、指定されたディレクトリがutl_file_dirinit.oraパラメータに存在しない場合に発生します

    sqlplus / as sysdba
    
    show parameter utl_file_dir
    
    /tmp, /usr/tmp/
    
    SQL> declare
    F_LOG utl_file.file_type;
    begin
    F_LOG := utl_file.fopen('/u500','j', 'w');
    end;
    / 2 3 4 5 6
    declare
    *
    ERROR at line 1:
    ORA-29280: invalid directory path
    ORA-06512: at "SYS.UTL_FILE", line 41
    ORA-06512: at "SYS.UTL_FILE", line 478
    ORA-06512: at line 4
    

    解決策

    a。 UTL_FILE_DIRで定義されているディレクトリを変更します

    b。ディレクトリを変更できず、同じコードを使用する必要がある場合は、UTL_FILE_DIr

    にディレクトリを追加する必要があります。

    手順は、spfileの最初の変更であり、次にOracleデータベースをリサイクルしてからチェックします

    sqlplus / as sysdba
    
    alter system set utl_file_dir='/tmp/','/usr/tmp','/u500'  scope =spfile;
    
    shutdown immediate
    
    startup
    
    SQL> declare
    F_LOG utl_file.file_type;
    begin
    F_LOG := utl_file.fopen('/u500','y', 'w');
    end;
    /
    2 3 4 5 6
    PL/SQL procedure successfully completed.
    

    c。コードを変更できれば、oracleディレクトリの使用を開始できます。その場合、utl_file_dirを指定する必要はありません

    SQL> create directory TESTDIR as '/u500';
     
    SQL> grant read,write on directory TESTDIR to public;
    
    SQL> declare
    F_LOG  utl_file.file_type;
    begin
    F_LOG := utl_file.fopen('TESTDIR','y', 'w');
    end;
    /
      
    PL/SQL procedure successfully completed.
    

    2.間違ったOracleディレクトリ名を指定しました

    SQL> declare
    F_LOG utl_file.file_type;
    begin 2
    F_LOG := utl_file.fopen('TESTDIR','y', 'w');
    end;
    3 4 5 6 /
    declare
    *
    ERROR at line 1:
    ORA-29280: invalid directory path
    ORA-06512: at "SYS.UTL_FILE", line 41
    ORA-06512: at "SYS.UTL_FILE", line 478
    ORA-06512: at line 4
    
    SQL> select * from dba_directories where DIRECTORY_NAME='TESTDIR';
    
    no rows selected
    
    >

    解決策

    正しいディレクトリ名を指定するか、新しいディレクトリ名を作成してください

    SQL> create directory TESTDIR as '/u500';
     
    SQL> grant read,write on directory TESTDIR to public;
    
    SQL> declare
    F_LOG  utl_file.file_type;
    begin
    F_LOG := utl_file.fopen('TESTDIR','y', 'w');
    end;
    /
      2    3    4    5    6
    PL/SQL procedure successfully completed.
    

    ORA-29280エラーの詳細な説明を気に入っていただければ幸いです。いいねしてフィードバックを提供してください

    関連記事

    ORA-29283:無効なファイル操作:ORA-29283:無効なファイル操作を解決する方法については、この投稿を確認してください。チェックする必要のある権限
    ORA-29285:ファイル書き込みエラー:ORA-29285:ファイル書き込みエラーは、ファイル処理操作を実行する際の一般的なエラーです。さまざまな理由と解決方法について、この投稿を確認してください
    ORA-01652:一時セグメントを拡張できません:ORA-01652エラー:通常、Oracleデータベースの永続テーブルスペースと一時テーブルスペースに空き領域がない場合
    ORA-00936式がありません:トラブルシューティングを学ぶORA-00936 Oracle SQLに式がありません。さまざまな解決策、それを回避する方法、このエラーに対するOracleのバグ
    ORA-00257:アーカイバエラー。解放されるまで、内部のみを接続します。 :ORA-00257アーカイバエラーのトラブルシューティング方法を学びます。内部のみのエラーを接続します。さまざまな解決策と例が段階的に提供されます。
    ORA-00904:ORA-00904の説明と考えられる解決策に関するこの投稿:無効な識別子。トラブルシューティングのヒントも提供されます
    FND_FILEオラクルアプリで
    https://docs.oracle.com/database/121/ARPLS/u_file.htm


    1. EntityFrameworkでのMySQLの使用

    2. 高度なSQL:パラメーター化されたテーブル値関数の出力をSQLテーブルに挿入します

    3. SQLとアプリケーションで計算を実行することの長所と短所は何ですか

    4. MySQLの別のテーブルに存在しない行を表示する方法