Можете ли вы помочь мне в Oracle для записи содержимого таблицы в файл с использованием функций UTL - PullRequest
0 голосов
/ 22 июня 2009

При написании процедуры SQL для создания файла CSV из содержимого таблицы, Я застрял в ошибке ниже:

ERROR at line 1:
ORA-29283: invalid file operation
ORA-06512: at "SYS.UTL_FILE", line 488
ORA-29283: invalid file operation
ORA-06512: at "DSI_DPIPE.BUSSHOURS", line 28
ORA-06512: at "DSI_DPIPE.BUSSHOURS", line 55
ORA-06512: at line 1

Первая строка:

file_http UTL_FILE.file_type;

Появляется та же ошибка, даже если я использую оператор:

file_http sys.UTL_FILE.file_type;

Спасибо за ваше ценное решение заранее.

Ответы [ 3 ]

2 голосов
/ 22 июня 2009

Используйте функцию CREATE DIRECTORY вместо UTL_FILE_DIR для проверки доступа к каталогу.

UTL_FILE_DIR = * опасно, поскольку позволяет пользователям базы данных, имеющим доступ к пакету utl_file, читать / записывать файлы на сервере базы данных с разрешениями пользователя oracle (файлы данных, init.ora, listener.ora и т. Д.).

У вас есть права на запись / чтение в каталог. Пользователю oracle на сервере необходимо разрешение на чтение / запись.

2 голосов
/ 22 июня 2009

Имеет ли пользователь oracle права доступа для записи в каталог, в который вы хотите поместить файл?

РЕДАКТИРОВАТЬ: Если вы находитесь в среде Unix, вы должны вручную войти в систему как пользователь оракула, перейдите по пути, по которому вы пытаетесь создать файл, и используйте команду «touch» для создать файл. Если вы не можете создать файл таким способом, вы знаете, что проблема связана с «правами доступа» в операционной системе, иначе проблема в ORACLE. (уменьшит поиск на 50%; D)

РЕДАКТИРОВАТЬ 2:
Если UTL_FILE_DIR = *, то разрешения базы данных отключены, и все файлы и каталоги доступны для всех пользователей. Но я думаю, что это применимо только на уровне базы данных, поэтому операционной системе также есть, что сказать. Если пользователь oracle не имеет доступа на запись в какой-либо каталог, то пользователи базы данных не могут получить это право независимо от того, что говорит UTL_FILE_DIR.

0 голосов
/ 22 июня 2009

Убедитесь, что путь к каталогу указан правильно, и у вас установлены правильные права доступа (т. Е. Oracle разрешает операционной системе выполнять запись в эту папку).

...