Dealing with Oracle ARCHIVELOG during huge updates It's required to update columns with metadata globally in all rows of all tables in DB. Let's say every table has a column MY_META and the aim is roughly

update ANOTHER_TABLE set MY_META = 'HELLO'


for each table.

Estimated total rows count is 2e9.

Suppose ARCHIVELOG mode is on, so during those updates a lot of extra space is going to be consumed.

The process of updates is planned to be running in production DB simultaneously with business transactions, which should not be lost.

The simplest thing to start with is temporarily installing plenty of hardware for ARCHIVELOG files.

Is there an elegant way to achieve the same goal programmatically or via tuning "secret options"?
Of course. Do not perform an UPDATE at all. Just add it as new column with the default value of HELLO.

It took 0.12 seconds and generated an insignificant amount of redo in my sandbox:

SQL&gt; select force_logging from v$database;

FORCE_LOGGING
---------------------------------------
YES

SQL&gt; set timing on
SQL&gt; select count(*) from t1;

  COUNT(*)
----------
1000000000

Elapsed: 00:00:14.34

SQL&gt; select sn.name, ss.value from v$statname sn 
     join v$sesstat ss on (sn.statistic# = ss.statistic#)
     where ss.sid = sys_context('userenv', 'sid') and sn.name = 'redo size';

NAME            VALUE
---------- ----------
redo size        5964

Elapsed: 00:00:00.00

SQL&gt; alter table t1 add my_meta varchar2(20 char) default 'HELLO' not null;

Table altered.

Elapsed: 00:00:00.12
SQL&gt; select sn.name, ss.value from v$statname sn 
     join v$sesstat ss on (sn.statistic# = ss.statistic#)
     where ss.sid = sys_context('userenv', 'sid') and sn.name = 'redo size';

NAME            VALUE
---------- ----------
redo size       20408

SQL&gt; select count(*) from t1 where my_meta = 'HELLO';

  COUNT(*)
----------
1000000000

Elapsed: 00:01:00.96