Не удается добавить новый каталог в all_directories на oracle? - PullRequest
0 голосов
/ 05 февраля 2019

Я пытаюсь добавить новый каталог в all_directories.Эта первая часть прошла хорошо, я думаю, но когда я пытаюсь создать файл в этом каталоге, я получаю:

ORA-29283: недопустимая операция с файлом

Это мой код:

DECLARE
  fHandle  UTL_FILE.FILE_TYPE;
BEGIN
  fHandle := UTL_FILE.FOPEN('TEMPKBU', 'test.txt', 'w');
  UTL_FILE.FCLOSE(fHandle);
END;

Здесь создается СПРАВОЧНИК:

SELECT * FROM all_directories WHERE  directory_name = 'TEMPKBU'

OWNER   DIRECTORY_NAME  DIRECTORY_PATH                          ORIGIN_CON_ID
SYS     TEMPKBU         \\kcdkfile03\UserData\Bruger\KBU\temp   0

И у пользователя есть права на запись:

SELECT * FROM all_tab_privs WHERE  table_name  = 'TEMPKBU'

GRANTOR GRANTEE TABLE_SCHEMA TABLE_NAME PRIVILEGE GRANTABLE HIERARCHY   COMMON  TYPE
SYS     KC_PROD SYS          TEMPKBU    EXECUTE   YES       NO          NO      DIRECTORY
SYS     KC_PROD SYS          TEMPKBU    READ      YES       NO          NO      DIRECTORY
SYS     KC_PROD SYS          TEMPKBU    WRITE     YES       NO          NO      DIRECTORY
KC_PROD PUBLIC  SYS          TEMPKBU    READ      NO        NO          NO      DIRECTORY
KC_PROD PUBLIC  SYS          TEMPKBU    WRITE     NO        NO          NO      DIRECTORY

Так почему же это не работает?А как мне получить более подробное сообщение об ошибке?

BR Kresten

1 Ответ

0 голосов
/ 05 февраля 2019

Эта ошибка обычно возникает, если вы пытаетесь: 1. Записать в каталог, который не существует, или 2. Записать в каталог, где не были предоставлены достаточные права.

Пока вы предоставили права на запись через базу данных, как насчет пользователя ОС Oracle?Пользователю ОС также потребуется иметь права доступа к каталогу на уровне операционной системы, иначе он не сможет создавать файлы и приведет к этой ошибке.Для проверки подключитесь к серверу базы данных, так как пользователь Oracle (или какой-либо другой пользователь, использовавший для создания базы данных), перейдет в этот каталог \\kcdkfile03\UserData\Bruger\KBU\temp и попытается создать файл.

Вот соответствующая статья AskTom, которая может быть полезна: https://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:9538408200346950265

...