Сегодня я следовал инструкциям , чтобы выполнить интеграцию 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;
, я вижу вывод в окне вывода dbms.
Однако, когда я пытаюсь вызвать этот внутри процедуры например:
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: недостаточно привилегий
Я искал в Интернете эту ошибку и не смог получить потенциальных клиентов.
Я пытался написать процедуру с правами invoker
CREATE OR REPLACE PROCEDURE test1 AUTHID CURRENT_USER IS
, и она все еще выдала мне ту же ошибку.
Может кто-нибудь, пожалуйста, пролить свет на это?