ORA-29283, macOS Sierra, Oracle SQL Разработчик, недопустимая операция с файлом - PullRequest
0 голосов
/ 15 января 2020

У меня Oracle SQL Developer Version 18.1.0.095 моя ОС macOS Sierra 10.12.6

Запуск SELECT * FROM v$version;

BANNER                                                                               CON_ID
-------------------------------------------------------------------------------- ----------
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production              0
PL/SQL Release 12.2.0.1.0 - Production                                                    0
CORE    12.2.0.1.0  Production                                                                0
TNS for Linux: Version 12.2.0.1.0 - Production                                            0
NLSRTL Version 12.2.0.1.0 - Production                                                    0

Когда я запускаю

SET SERVEROUTPUT ON;

CREATE OR REPLACE DIRECTORY user_dir AS '/Users/joseluisbz/Documentos/TestSQL';

GRANT READ, WRITE ON DIRECTORY user_dir TO PUBLIC;

Я получил:

Directory USER_DIR created.


Grant succeeded.

Проверка привилегий в macOS

MacBook-Air:~ joseluisbz$ ls -al /Users/joseluisbz/Documentos/TestSQL
total 8
drwxrwxrwx    3 joseluisbz  staff   102 Jan 15 12:09 .
drwxr-xr-x@ 114 joseluisbz  staff  3876 Jan 15 12:08 ..
-rw-rw-rw-@   1 joseluisbz  staff   161 Jan 15 11:47 untitled.html
MacBook-Air:~ joseluisbz$ 

Когда я запускаю

DECLARE
    content_file   CLOB;
    file_handler   UTL_FILE.FILE_TYPE;
BEGIN
    dbms_output.put_line('before open');
    file_handler := UTL_FILE.FOPEN('USER_DIR','untitled.html','R');
    dbms_output.put_line('after open');
    /*
    BEGIN
        UTL_FILE.GET_RAW(file_handler, content_file);
        dbms_output.put_line(content_file);
    EXCEPTION
        WHEN no_data_found THEN
            EXIT;
    END;
    */
/*
    IF UTL_FILE.IS_OPEN(file_handler) THEN
        dbms_output.put_line('File is Open');
    END IF;
    */
    --UTL_FILE.FCLOSE(file_handler);

END;

Я получил:

before open


Error starting at line : 9 in command -
DECLARE
    content_file   CLOB;
    file_handler   UTL_FILE.FILE_TYPE;
BEGIN
    dbms_output.put_line('before open');
    file_handler := UTL_FILE.FOPEN('USER_DIR','untitled.html','R');
    dbms_output.put_line('after open');
    /*
    BEGIN
        UTL_FILE.GET_RAW(file_handler, content_file);
        dbms_output.put_line(content_file);
    EXCEPTION
        WHEN no_data_found THEN
            EXIT;
    END;
    */
/*
    IF UTL_FILE.IS_OPEN(file_handler) THEN
        dbms_output.put_line('File is Open');
    END IF;
    */
    --UTL_FILE.FCLOSE(file_handler);

END;
Error report -
ORA-29283: invalid file operation
ORA-06512: at "SYS.UTL_FILE", line 536
ORA-29283: invalid file operation
ORA-06512: at "SYS.UTL_FILE", line 41
ORA-06512: at "SYS.UTL_FILE", line 478
ORA-06512: at line 6
29283. 00000 -  "invalid file operation"
*Cause:    An attempt was made to read from a file or directory that does
           not exist, or file or directory access was denied by the
           operating system.
*Action:   Verify file and directory access privileges on the file system,
           and if reading, verify that the file exists.

Как решить эту проблему

1 Ответ

0 голосов
/ 16 января 2020

Каталоги в Oracle должны указывать на фактические каталоги на сервере базы данных, а не на ваш P C. UTL_FILE не может работать с файлами на вашем P C

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...