首页 > 解决方案 > 尝试生成一些活动来生成归档日志

问题描述

我正在测试一些与 Oracle DB 19c 一起使用的备份实用程序,我在其中尝试生成一些存档日志,以便能够在一定大小后将其删除。

有没有办法通过人为创建负载来快速生成重做日志,以便将它们推送到归档日志?

标签: databaseoracle

解决方案


生成重做的一种方法如下

  • 确保具有带logging模式的表空间或使用该logging选项创建的表。如果创建表空间时未指定任何日志记录模式,则默认模式为日志记录。同样适用于桌子。
  • 为避免存储问题,只需在每个主循环中截断表。
  • 确保您有足够的空间进行至少一次循环迭代,从而不会出现任何错误。

在下面的示例中,我们将表空间置于force loggingmode ,尽管这不是必需的。然后我创建了一个只有三个字段的测试表,但您可以使用任意数量的字段,只要记住您需要存储至少一次迭代。

dbms_random用来生成随机字符串值。

例子

alter tablespace users force logging; -- if the tablespace has nologging 

create table x ( c1 number, c2 varchar2(50), c3 varchar2(50) ) logging tablespace users ; -- table in logging mode 

declare
num_loops pls_integer := 10; -- use as many iterations as you want. 
begin
for r in 1..num_loops
loop
    for h in 1 .. 100000 -- I just define 100k for main loop to avoid undo issues
    loop
        insert into x values ( h , dbms_random.string('X',50), dbms_random.string('X',50) ) ;
    end loop;
    commit;
    execute immediate ' truncate table x reuse storage ' ;
end loop;
end;
/

推荐阅读