Мар 042011
 

Объект базы данных DIRECTORY - это ссылка на каталог сервера, на котором работает инстанс Oracle. Он нужен для пакета UTL_FILE, работы утилит impdp/expdp, при использовании полей типа BFILE в таблицах, а также при создании внешних таблиц (external tables).
Вот что можно делать с объектом DIRECTORY:

-- Создадим директорию
CREATE DIRECTORY cube_dir AS '/usr/oracle/cube_dir';
 
-- Удалим её
DROP DIRECOTRY cube_dir;
 
-- Дадим доступ пользователю cube
GRANT READ, WRITE ON DIRECTORY cube_dir TO cube;
 
-- Отнимем право записи в директорию у пользователя
REVOKE WRITE ON DIRECTORY cube_dir FROM cube;
 
-- Разрешим пользователю создавать и удалять директории
GRANT CREATE ANY DIRECTORY TO cube;
GRANT DROP ANY DIRECTORY TO cube;
 
-- Посмотрим, какие директории у нас есть
SELECT * FROM dba_directories;

Пара замечаний:

  • При создании директории ORACLE не проверяет её наличие и доступность, поэтому о создании каталога на диске и предоставлении прав на него пользователю-владельцу инстанса надо позаботиться заранее. Если этого не сделать, то при попытке обращения получим ошибку.
  • При удалении директории всё её содержимое остаётся в файловой системе.
  • Надо с осторожностью раздавать пользователям привилегию CREATE ANY DIRECTORY, так как у них появится возможность изменять любые файлы ОС, к которым есть доступ у пользователя-владельца инстанса

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre lang="" line="" escaped="" cssfile="">

(обязательно)

(обязательно)