我正在从 PL/SQL 执行清理操作,这往往会填满我的重做日志,导致数据库在“无法分配新日志”条件下冻结。
将工作分成更小的块并不能解决问题,因为重做日志文件停留在 status=ACTIVE 和 ARCHIVED=YES 的时间过长。只有在“alter system checkpoint”之后,脏日志才会被写入磁盘并再次可供下一个块使用。
现在,我怎样才能从 PL/SQL 中做到这一点。我试过
create procedure cp as begin execute immediate 'alter system checkpoint'; end;
但它给了我ORA-01031: insufficient privileges
我有 DBA 角色,但这在 PL/SQL 过程中无效。我需要授予什么特权?
我知道有控制检查点的参数,但我不想更改这些。我只想在清理过程中手动检查点。