我正在測驗一些使用 Oracle DB 19c 的備份實用程式,其中我試圖生成一些存檔日志,以便能夠在達到一定大小后將其洗掉。
有沒有辦法通過人為創建負載來快速生成重做日志,以便將它們推送到歸檔日志?
uj5u.com熱心網友回復:
生成重做的一種方法是以下
- 確保使用
loggingmode 的表空間或使用該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;
/
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/330513.html
