database - 尝试生成一些活动来生成归档日志
问题描述
我正在测试一些与 Oracle DB 19c 一起使用的备份实用程序,我在其中尝试生成一些存档日志,以便能够在一定大小后将其删除。
有没有办法通过人为创建负载来快速生成重做日志,以便将它们推送到归档日志?
解决方案
生成重做的一种方法如下
- 确保具有带
logging
模式的表空间或使用该logging
选项创建的表。如果创建表空间时未指定任何日志记录模式,则默认模式为日志记录。同样适用于桌子。 - 为避免存储问题,只需在每个主循环中截断表。
- 确保您有足够的空间进行至少一次循环迭代,从而不会出现任何错误。
在下面的示例中,我们将表空间置于force logging
mode ,尽管这不是必需的。然后我创建了一个只有三个字段的测试表,但您可以使用任意数量的字段,只要记住您需要存储至少一次迭代。
我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;
/
推荐阅读
- sql - 报表生成器中的 URL 连接
- typescript - 不和谐嵌入加入消息
- php - 如何在php的同一张表中插入同名数据?
- swift - 如何使用 if 语句更改 UIButton 图像
- javascript - 将所有innerText从页面拉到json的最佳方法?
- matlab - 评估样条的基函数是什么意思?
- swift - GeoFirestore GeoFire 依赖项不允许我更新 Firebase
- terminal - 我需要重置终端写入头,不清除字符
- tsql - 有什么方法可以使计算列有 2 个参数作为范围?
- debugging - 当我每次通过 vscode 调试器运行纱线测试时,vscode 关于“--inspect-brk”的错误