Робота з об’єктом Directory в 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:oracleexportmyexp”;

*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: неможливо відкрити файл дампа “…” для читання. Вказано неіснуючий файл.

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*