Работа с объектом Directory в Oracle
Рекомендовано для:
|
|
В этой статье речь пойдет об объекте directory. Использование
Объект Directory является логической ссылкой в базе данных на каталог файловой системы сервера, где установлена БД Oracle. Владельцем всех объектов Directory в базе данных является пользователь SYS, даже если объект Directory создан другим пользователем. Имена объектов Directory уникальны внутри всей БД. Все объекты Directory хранятся в табличном пространстве SYS. Поскольку файлы и каталоги в действительности располагаются ВНЕ базы данных, процессы СУБД Oracle должны иметь необходимые права доступа к указанным каталогам файловой системы. СинтаксисСоздание объекта Directory: CREATE [OR REPLACE] DIRECTORY dir_name AS 'path'; где: path — физический путь на файловой системе сервера БД; опция OR REPLACE — используется для того, чтобы создать объект Directory с именем, которое уже существует в базе данных (пересоздать объект Directory). ВНИМАНИЕ: в качестве пути path может быть использовано имя несуществующего каталога операционной системы. СУБД Oracle не проверяет наличие указанного каталога. В этом случае создание объекта Directory завершится успешно, но при дальнейшем его использовании, например, с утилитой expdp, будет выдана ошибка (см. Связанные ошибки). Пример: Windows: CREATE DIRECTORY MyDir as 'e:\oracle\export\myexp'; *NIX: CREATE DIRECTORY MyDir as '/u01/expimp/ImportDir'; Удаление объекта DirectoryDROP DIRECTORY dir_name; Пример: DROP DIRECTORY MyDir; БезопасностьДля того чтобы иметь возможность создавать/удалять объекты Directory, пользователь должен иметь системные привилегии CREATE ANY DIRECTORY/ DROP ANY DIRECTORY. Для того чтобы иметь возможность читать/записывать файлы в объекты Directory, пользователь должен иметь объектные привилегии READ/WRITE (ON DIRECTORY). Объектные привилегии распространяются на весь объект DIRECTORY и все файлы в нем, невозможно указать отдельные привилегии READ/WRITE на отдельный файл в объекте DIRECTORY. Увидеть все созданные объекты Directory базы данных можно с помощью запроса: SELECT * FROM DBA_DIRECTORIES; Связанные ошибки
|