Проверка прав на каталог в Oracle

#oracle #oracle10g #oracle11g

#Oracle #oracle10g #oracle11g

Вопрос:

Как я могу узнать, есть ли у меня права на каталог, используя запрос в Oracle??

Ответ №1:

Если вы говорите об объекте каталога Oracle ( CREATE DIRECTORY ... ),

 SELECT grantee, table_name directory_name, privilege
  FROM dba_tab_privs
 WHERE table_name = <<directory name>>
  

Обратите внимание, что если у вас нет доступа к DBA_* таблицам, вместо этого вы можете использовать ALL_TAB_PRIVS или USER_TAB_PRIVS .

Если вы говорите о каталоге операционной системы, вам потребуется создать объект Oracle directory, соответствующий каталогу операционной системы. Затем вы могли бы использовать метод FOPEN пакета UTL_FILE, чтобы попытаться открыть файл в каталоге. Если это удается, у вас есть разрешение на каталог. В противном случае вы поймаете исключение.

Комментарии:

1. На самом деле в моей системе установлен клиент Oracle, и я хотел бы создать каталог в моей локальной системе, откуда я могу записывать / читать файлы. Возможно ли это в oracle. Чтобы быть более конкретным, я использую SQL Navigator для подключения к серверу Oracle (10 g)

2. @SouraM — Нет. PL / SQL, запущенный в базе данных, обычно не может выполнять запись в файл на клиентском компьютере — это было бы огромной дырой в безопасности. Если бы вам нужно было смонтировать каталог на вашем клиентском компьютере с сервера, это можно было бы заставить работать, но это исключительно необычная настройка. Гораздо разумнее было бы записать файл на сервере базы данных и перенести его на ваш клиентский компьютер или запустить на вашем клиентском компьютере приложение, которое запрашивает базу данных и записывает файл.

Ответ №2:

выберите * из dba_tab_privs, где имя_таблицы = ‘your_directory’