#oracle #amazon-web-services #amazon-s3
#Oracle #amazon-веб-сервисы #amazon-s3
Вопрос:
Сегодня я следовал приведенным инструкциям для выполнения интеграции Oracle RDS с S3 для импорта файлов из корзины S3 в каталог базы данных.
Я смог хорошо выполнить все шаги и смог увидеть файлы, импортированные из моей корзины S3 в DATA_PUMP_DIR
каталоге экземпляра RDS.
Когда я запускаю запрос
SELECT filename FROM table(rdsadmin.rds_file_util.listdir('DATA_PUMP_DIR')) order by mtime;
Я получаю вывод со списком файлов, которые я импортировал.
Теперь я планирую получить эти файлы в блоке PLSQL, и здесь возникает проблема. Когда я запускаю что-то вроде этого:
DECLARE
BEGIN
FOR fn in (SELECT * FROM table(RDSADMIN.RDS_FILE_UTIL.LISTDIR('DATA_PUMP_DIR')) order by mtime)
LOOP
dbms_output.put_line('File name is ' || fn.filename);
END LOOP;
END;
Я вижу результат в окне вывода СУБД.
Однако, когда я пытаюсь вызвать это внутри процедуры следующим образом:
CREATE OR REPLACE PROCEDURE test1 IS
BEGIN
FOR fn in (SELECT * FROM table(RDSADMIN.RDS_FILE_UTIL.LISTDIR('DATA_PUMP_DIR')) order by mtime)
LOOP
dbms_output.put_line('File name is ' || fn.filename);
END LOOP;
END test1;
Я получаю сообщение об ошибке:
3/14 PL / SQL: игнорируется инструкция SQL
3/43 PL / SQL: ORA-01031: недостаточные привилегии
Я искал эту ошибку в Интернете и не смог получить никаких результатов.
Я попытался написать процедуру с правами вызывающего
CREATE OR REPLACE PROCEDURE test1 AUTHID CURRENT_USER IS
и это все еще выдавало мне ту же ошибку.
Может кто-нибудь, пожалуйста, пролить свет на это?
Комментарии:
1. Можете ли вы проверить, является ли это проблемой с привилегиями роли, выполнив
set role none
и посмотрев, не ошибка ли вашего прямого запроса и анонимного блокирования now?2. Привет, Алекс, я тоже так делал… И это ошибка: ORA-01031: недостаточные привилегии 01031. 00000 — «недостаточные привилегии» * Причина: была предпринята попытка выполнить операцию с базой данных без необходимых привилегий. * Действие: Попросите вашего администратора базы данных или назначенного администратора безопасности предоставить вам необходимые привилегии
3. Верно, что подтверждает проблему с привилегиями, предоставленными через роль; но тогда странно, что
authid current_user
ее не решили. Интересно. Можете ли вы получить необходимые привилегии, предоставленные непосредственно владельцу процедуры? (Это могут быть привилегии каталога, а не привилегии пакета.)4. Алекс, есть какой-нибудь запрос, который может перечислить привилегии в каталоге? Я не уверен, правильно ли я понял ваше предложение..
Ответ №1:
Вам понадобятся следующие разрешения владельцу процедуры. Вероятно, из вашего администратора базы данных.
Предоставьте выполнение для rdsadmin.RDSADMIN_S3_TASKS <procedure_Owner>;