top-shop.ru
Japan Gals Маска
Задача решена при создании JOB-а для Export Data Pump, так-как он почему то не может сам удалить целевые файлы (файл дампа и файл лога), если они уже существуют на сервере БД.
  1. Директория, в которой лежит файл-кандидат на удаление должна быть заведена в Oracle, это можно проверить SELECT * FROM dba_directories;   - при удалении указывается имя директории в Oracle, а он уже сам подставляет путь.
  2. Если платформа - UNIX, понятно, что у пользователя, под правами которого работают процессы БД Oracle, должно быть право на удаление файла.
  3. Можно обойтись без EXCEPTION - с помощью проверки на существование файла средствами Oracle:
    
    
        
        -- Удалить файл дампа, если он уже существует
        SELECT DBMS_LOB.FILEEXISTS(BFILENAME ('DATA_PUMP_DIR_1', 'FULL_' || sn ||'.DMP')) INTO f FROM DUAL;
        IF f > 0 THEN 
           sys.dbms_system.ksdwrt(2, to_char(sysdate) || ' BEGIN DELETE ' || 'FULL_' || sn ||'.DMP');
           SYS.UTL_FILE.FREMOVE('DATA_PUMP_DIR_1', 'FULL_' || sn ||'.DMP');
           sys.dbms_system.ksdwrt(2, to_char(sysdate) || ' END DELETE ' || 'FULL_' || sn ||'.DMP');
        END IF;
    
    
    

Пакет UTL_FILE, процедура FREMOVE

SQL> desc utl_file.fremove;
Parameter Type     Mode Default? 
--------- -------- ---- -------- 
LOCATION  VARCHAR2 IN            
FILENAME  VARCHAR2 IN  
SQL> execute utl_file.fremove('TEST_DIR', '1.txt');

PL/SQL procedure successfully completed

SQL> execute utl_file.fremove('TEST_DIR', '1.txt');

begin utl_file.fremove('TEST_DIR', '1.txt'); end;

ORA-29283: invalid file operation
ORA-06512: at "SYS.UTL_FILE", line 243
ORA-06512: at "SYS.UTL_FILE", line 1126
ORA-06512: at line 1

SQL> 

Обратите внимание, что при повторном запуске процедуры с теми же параметрами, она жалобно заругалась - если это произойдет внутри PLSQL блока, вам потребуется секция EXCEPTION. Исключение генерируется, если процедура не нашла файла по указанному пути.

Решение: Как удалить файл из Oracle (Удалить файл на сервере БД из блока PLSQL).
содержание
Блог администратора Oracle.