#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’