Я реализую триггер, который должен вручную запускать подключаемые базы данных в резервном контейнере. Это мой фактический код:
CREATE OR REPLACE TRIGGER managed_startup_pdbs
AFTER STARTUP ON DATABASE
DECLARE
pdb_role VARCHAR(40);
pdb_name VARCHAR(50);
BEGIN
SELECT open_mode INTO pdb_role FROM v$database;
IF pdb_role = 'READ ONLY WITH APPLY' THEN
FOR i IN (SELECT con_name INTO pdb_name FROM dba_pdb_saved_states)
LOOP
EXECUTE IMMEDIATE 'ALTER PLUGGABLE DATABASE ''|| pdb_name ||'' OPEN READ ONLY;';
END LOOP;
END IF;
END;
/
Но он не запускает никакой pdb. Триггер компилируется без ошибок, я думаю, что может быть какая-то проблема в синтаксической ошибке оператора execute или, возможно, в цикле for.