Работа с объектом Directory в Oracle

Работа с объектом Directory в Oracle

Источник: all-oracle

 

 

Рекомендовано для:

  • Oracle Database 8i
  • Oracle Database 9i R1
  • Oracle Database 9i R2
  • Oracle Database 10g R1
  • Oracle Database 10g R2
  • Oracle Database 11g R1

В этой статье речь пойдет об объекте directory.

Использование
  • Экспорт/импорт объектов базы данных с помощью утилит DataPump (expdp/impdp)
  • Работа с типом данных BFILE (внешний большой объект, файл операционной системы)
  • Использование с пакетом UTL_FILE в PL/SQL-коде

Объект Directory является логической ссылкой в базе данных на каталог файловой системы сервера, где установлена БД Oracle. Владельцем всех объектов Directory в базе данных является пользователь SYS, даже если объект Directory создан другим пользователем. Имена объектов Directory уникальны внутри всей БД. Все объекты Directory хранятся в табличном пространстве SYS.

Поскольку файлы и каталоги в действительности располагаются ВНЕ базы данных, процессы СУБД Oracle должны иметь необходимые права доступа к указанным каталогам файловой системы.

Синтаксис

Создание объекта Directory:

CREATE [OR REPLACE] DIRECTORY dir_name AS 'path';

где:
dir_name – имя создаваемого объекта Directory;

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';
Удаление объекта Directory
DROP 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;
Связанные ошибки
  • ORA-01031: привилегий недостаточно. Пользователь не обладает необходимыми привилегиями для создания/манипулирования объектами Directory.
  • ORA-29283: недопустимая операция с файлом. Возможно, объект Directory ссылается на несуществующий каталог, либо недостаточно прав в операционной системе на чтение/запись в указанный каталог.
  • ORA-31640: невозможно открыть файл дампа “…” для чтения.  Указан несуществующий файл.
Вы можете оставить комментарий, или ссылку на Ваш сайт.

Оставить комментарий

Яндекс.Метрика Рейтинг@Mail.ru Resurs.kz: сайты Казахстана и раскрутка сайта

Thanks: Studenthelp78