The Oracle feature allowing the DBA to put a database in "BACKUP" mode is useful for environments where non-RMAN methods / storage snapshots etc are used to make database backups.
However, there seems to be misconception that datafiles are not updated when the database is in BACKUP mode.
Here is a quick demonstration to disprove it. I first place the database in BACKUP mode and then, from other sessions, start-off transactions and checkpoints and switch logfiles. I then check if the datafile headers are updated and whether the datafiles themselves are updated.
17:55:28 SQL> select current_scn from v$database;
CURRENT_SCN
-----------
1240322
17:55:34 SQL> alter system checkpoint;
System altered.
17:55:42 SQL> @get_dbf_chk_scns
FILE# NAME CHECKPOINT_CHANGE# CHECKPOINT_TIME
---------- -------------------------------------------------------- ------------------ ------------------
1 /opt/oracle/oradata/HEMANT/system.dbf 1240326 15-OCT-23 17:55:42
2 /opt/oracle/oradata/HEMANT/sysaux.dbf 1240326 15-OCT-23 17:55:42
3 /opt/oracle/oradata/HEMANT/undotbs.dbf 1240326 15-OCT-23 17:55:42
4 /opt/oracle/oradata/HEMANT/TDE_TARGET_TBS_encrypted.dbf 1240326 15-OCT-23 17:55:42
5 /opt/oracle/oradata/HEMANT/indx01.dbf 1240326 15-OCT-23 17:55:42
6 /opt/oracle/oradata/HEMANT/HR_DATA.dbf 1240326 15-OCT-23 17:55:42
10 /opt/oracle/oradata/HEMANT/indx02.dbf 1240326 15-OCT-23 17:55:42
11 /opt/oracle/oradata/HEMANT/indx03.dbf 1240326 15-OCT-23 17:55:42
8 rows selected.
17:56:01 SQL> alter database begin backup;
Database altered.
17:56:10 SQL> @get_dbf_chk_scns
FILE# NAME CHECKPOINT_CHANGE# CHECKPOINT_TIME
---------- -------------------------------------------------------- ------------------ ------------------
1 /opt/oracle/oradata/HEMANT/system.dbf 1240339 15-OCT-23 17:56:10
2 /opt/oracle/oradata/HEMANT/sysaux.dbf 1240339 15-OCT-23 17:56:10
3 /opt/oracle/oradata/HEMANT/undotbs.dbf 1240339 15-OCT-23 17:56:10
4 /opt/oracle/oradata/HEMANT/TDE_TARGET_TBS_encrypted.dbf 1240339 15-OCT-23 17:56:10
5 /opt/oracle/oradata/HEMANT/indx01.dbf 1240339 15-OCT-23 17:56:10
6 /opt/oracle/oradata/HEMANT/HR_DATA.dbf 1240339 15-OCT-23 17:56:10
10 /opt/oracle/oradata/HEMANT/indx02.dbf 1240339 15-OCT-23 17:56:10
11 /opt/oracle/oradata/HEMANT/indx03.dbf 1240339 15-OCT-23 17:56:10
8 rows selected.
17:56:18 SQL>
The BEGIN BACKUP causes a Checkpoint. Now I start off transactions and log file switches and checkpoints from other sessions and monitor the state here.
17:59:15 SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /opt/oracle/archivelog/HEMANT
Oldest online log sequence 118
Next log sequence to archive 120
Current log sequence 120
17:59:18 SQL> @get_dbf_chk_scns
FILE# NAME CHECKPOINT_CHANGE# CHECKPOINT_TIME
---------- -------------------------------------------------------- ------------------ ------------------
1 /opt/oracle/oradata/HEMANT/system.dbf 1240339 15-OCT-23 17:56:10
2 /opt/oracle/oradata/HEMANT/sysaux.dbf 1240339 15-OCT-23 17:56:10
3 /opt/oracle/oradata/HEMANT/undotbs.dbf 1240339 15-OCT-23 17:56:10
4 /opt/oracle/oradata/HEMANT/TDE_TARGET_TBS_encrypted.dbf 1240339 15-OCT-23 17:56:10
5 /opt/oracle/oradata/HEMANT/indx01.dbf 1240339 15-OCT-23 17:56:10
6 /opt/oracle/oradata/HEMANT/HR_DATA.dbf 1240339 15-OCT-23 17:56:10
10 /opt/oracle/oradata/HEMANT/indx02.dbf 1240339 15-OCT-23 17:56:10
11 /opt/oracle/oradata/HEMANT/indx03.dbf 1240339 15-OCT-23 17:56:10
8 rows selected.
17:59:25 SQL> !ls -l /opt/oracle/oradata/HEMANT/*dbf
-rw-r-----. 1 oracle oinstall 5251072 Oct 15 17:56 /opt/oracle/oradata/HEMANT/HR_DATA.dbf
-rw-r-----. 1 oracle oinstall 10493952 Oct 15 17:56 /opt/oracle/oradata/HEMANT/indx01.dbf
-rw-r-----. 1 oracle oinstall 10493952 Oct 15 17:56 /opt/oracle/oradata/HEMANT/indx02.dbf
-rw-r-----. 1 oracle oinstall 10493952 Oct 15 17:56 /opt/oracle/oradata/HEMANT/indx03.dbf
-rw-r-----. 1 oracle oinstall 10486272 Oct 15 17:52 /opt/oracle/oradata/HEMANT/redo01.dbf
-rw-r-----. 1 oracle oinstall 10486272 Oct 15 17:58 /opt/oracle/oradata/HEMANT/redo02.dbf
-rw-r-----. 1 oracle oinstall 10486272 Oct 15 17:58 /opt/oracle/oradata/HEMANT/redo03.dbf
-rw-r-----. 1 oracle oinstall 419438592 Oct 15 17:56 /opt/oracle/oradata/HEMANT/sysaux.dbf
-rw-r-----. 1 oracle oinstall 566239232 Oct 15 17:56 /opt/oracle/oradata/HEMANT/system.dbf
-rw-r-----. 1 oracle oinstall 104865792 Oct 15 17:56 /opt/oracle/oradata/HEMANT/TDE_TARGET_TBS_encrypted.dbf
-rw-r-----. 1 oracle oinstall 209723392 Oct 15 17:56 /opt/oracle/oradata/HEMANT/undotbs.dbf
17:59:38 SQL>
18:01:04 SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /opt/oracle/archivelog/HEMANT
Oldest online log sequence 119
Next log sequence to archive 121
Current log sequence 121
18:01:17 SQL> @get_dbf_chk_scns
FILE# NAME CHECKPOINT_CHANGE# CHECKPOINT_TIME
---------- -------------------------------------------------------- ------------------ ------------------
1 /opt/oracle/oradata/HEMANT/system.dbf 1240339 15-OCT-23 17:56:10
2 /opt/oracle/oradata/HEMANT/sysaux.dbf 1240339 15-OCT-23 17:56:10
3 /opt/oracle/oradata/HEMANT/undotbs.dbf 1240339 15-OCT-23 17:56:10
4 /opt/oracle/oradata/HEMANT/TDE_TARGET_TBS_encrypted.dbf 1240339 15-OCT-23 17:56:10
5 /opt/oracle/oradata/HEMANT/indx01.dbf 1240339 15-OCT-23 17:56:10
6 /opt/oracle/oradata/HEMANT/HR_DATA.dbf 1240339 15-OCT-23 17:56:10
10 /opt/oracle/oradata/HEMANT/indx02.dbf 1240339 15-OCT-23 17:56:10
11 /opt/oracle/oradata/HEMANT/indx03.dbf 1240339 15-OCT-23 17:56:10
8 rows selected.
18:01:25 SQL> !ls -l /opt/oracle/oradata/HEMANT/*dbf
-rw-r-----. 1 oracle oinstall 5251072 Oct 15 17:56 /opt/oracle/oradata/HEMANT/HR_DATA.dbf
-rw-r-----. 1 oracle oinstall 10493952 Oct 15 17:56 /opt/oracle/oradata/HEMANT/indx01.dbf
-rw-r-----. 1 oracle oinstall 10493952 Oct 15 17:56 /opt/oracle/oradata/HEMANT/indx02.dbf
-rw-r-----. 1 oracle oinstall 10493952 Oct 15 17:56 /opt/oracle/oradata/HEMANT/indx03.dbf
-rw-r-----. 1 oracle oinstall 10486272 Oct 15 18:01 /opt/oracle/oradata/HEMANT/redo01.dbf
-rw-r-----. 1 oracle oinstall 10486272 Oct 15 17:58 /opt/oracle/oradata/HEMANT/redo02.dbf
-rw-r-----. 1 oracle oinstall 10486272 Oct 15 18:00 /opt/oracle/oradata/HEMANT/redo03.dbf
-rw-r-----. 1 oracle oinstall 419438592 Oct 15 17:56 /opt/oracle/oradata/HEMANT/sysaux.dbf
-rw-r-----. 1 oracle oinstall 566239232 Oct 15 18:00 /opt/oracle/oradata/HEMANT/system.dbf
-rw-r-----. 1 oracle oinstall 104865792 Oct 15 17:56 /opt/oracle/oradata/HEMANT/TDE_TARGET_TBS_encrypted.dbf
-rw-r-----. 1 oracle oinstall 209723392 Oct 15 18:01 /opt/oracle/oradata/HEMANT/undotbs.dbf
18:01:34 SQL> select current_scn from v$database;
CURRENT_SCN
-----------
1240837
18:01:44 SQL>
18:01:44 SQL> !sleep 120
18:04:00 SQL>
18:04:04 SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /opt/oracle/archivelog/HEMANT
Oldest online log sequence 122
Next log sequence to archive 124
Current log sequence 124
18:04:10 SQL> @get_dbf_chk_scns
FILE# NAME CHECKPOINT_CHANGE# CHECKPOINT_TIME
---------- -------------------------------------------------------- ------------------ ------------------
1 /opt/oracle/oradata/HEMANT/system.dbf 1240339 15-OCT-23 17:56:10
2 /opt/oracle/oradata/HEMANT/sysaux.dbf 1240339 15-OCT-23 17:56:10
3 /opt/oracle/oradata/HEMANT/undotbs.dbf 1240339 15-OCT-23 17:56:10
4 /opt/oracle/oradata/HEMANT/TDE_TARGET_TBS_encrypted.dbf 1240339 15-OCT-23 17:56:10
5 /opt/oracle/oradata/HEMANT/indx01.dbf 1240339 15-OCT-23 17:56:10
6 /opt/oracle/oradata/HEMANT/HR_DATA.dbf 1240339 15-OCT-23 17:56:10
10 /opt/oracle/oradata/HEMANT/indx02.dbf 1240339 15-OCT-23 17:56:10
11 /opt/oracle/oradata/HEMANT/indx03.dbf 1240339 15-OCT-23 17:56:10
8 rows selected.
18:04:16 SQL> !ls -l /opt/oracle/oradata/HEMANT/*dbf
-rw-r-----. 1 oracle oinstall 5251072 Oct 15 18:03 /opt/oracle/oradata/HEMANT/HR_DATA.dbf
-rw-r-----. 1 oracle oinstall 10493952 Oct 15 18:03 /opt/oracle/oradata/HEMANT/indx01.dbf
-rw-r-----. 1 oracle oinstall 10493952 Oct 15 18:03 /opt/oracle/oradata/HEMANT/indx02.dbf
-rw-r-----. 1 oracle oinstall 10493952 Oct 15 18:03 /opt/oracle/oradata/HEMANT/indx03.dbf
-rw-r-----. 1 oracle oinstall 10486272 Oct 15 18:03 /opt/oracle/oradata/HEMANT/redo01.dbf
-rw-r-----. 1 oracle oinstall 10486272 Oct 15 18:03 /opt/oracle/oradata/HEMANT/redo02.dbf
-rw-r-----. 1 oracle oinstall 10486272 Oct 15 18:03 /opt/oracle/oradata/HEMANT/redo03.dbf
-rw-r-----. 1 oracle oinstall 419438592 Oct 15 18:03 /opt/oracle/oradata/HEMANT/sysaux.dbf
-rw-r-----. 1 oracle oinstall 566239232 Oct 15 18:03 /opt/oracle/oradata/HEMANT/system.dbf
-rw-r-----. 1 oracle oinstall 104865792 Oct 15 18:03 /opt/oracle/oradata/HEMANT/TDE_TARGET_TBS_encrypted.dbf
-rw-r-----. 1 oracle oinstall 209723392 Oct 15 18:03 /opt/oracle/oradata/HEMANT/undotbs.dbf
18:04:24 SQL> select current_scn from v$database;
CURRENT_SCN
-----------
1242436
18:04:34 SQL>
18:05:13 SQL> !sleep 120
18:07:15 SQL>
18:07:17 SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /opt/oracle/archivelog/HEMANT
Oldest online log sequence 124
Next log sequence to archive 126
Current log sequence 126
18:07:20 SQL> alter system archive log current;
System altered.
18:07:30 SQL> @get_dbf_chk_scns
FILE# NAME CHECKPOINT_CHANGE# CHECKPOINT_TIME
---------- -------------------------------------------------------- ------------------ ------------------
1 /opt/oracle/oradata/HEMANT/system.dbf 1240339 15-OCT-23 17:56:10
2 /opt/oracle/oradata/HEMANT/sysaux.dbf 1240339 15-OCT-23 17:56:10
3 /opt/oracle/oradata/HEMANT/undotbs.dbf 1240339 15-OCT-23 17:56:10
4 /opt/oracle/oradata/HEMANT/TDE_TARGET_TBS_encrypted.dbf 1240339 15-OCT-23 17:56:10
5 /opt/oracle/oradata/HEMANT/indx01.dbf 1240339 15-OCT-23 17:56:10
6 /opt/oracle/oradata/HEMANT/HR_DATA.dbf 1240339 15-OCT-23 17:56:10
10 /opt/oracle/oradata/HEMANT/indx02.dbf 1240339 15-OCT-23 17:56:10
11 /opt/oracle/oradata/HEMANT/indx03.dbf 1240339 15-OCT-23 17:56:10
8 rows selected.
18:07:36 SQL> !ls -l /opt/oracle/oradata/HEMANT/*dbf
-rw-r-----. 1 oracle oinstall 5251072 Oct 15 18:07 /opt/oracle/oradata/HEMANT/HR_DATA.dbf
-rw-r-----. 1 oracle oinstall 10493952 Oct 15 18:07 /opt/oracle/oradata/HEMANT/indx01.dbf
-rw-r-----. 1 oracle oinstall 10493952 Oct 15 18:07 /opt/oracle/oradata/HEMANT/indx02.dbf
-rw-r-----. 1 oracle oinstall 10493952 Oct 15 18:07 /opt/oracle/oradata/HEMANT/indx03.dbf
-rw-r-----. 1 oracle oinstall 10486272 Oct 15 18:07 /opt/oracle/oradata/HEMANT/redo01.dbf
-rw-r-----. 1 oracle oinstall 10486272 Oct 15 18:06 /opt/oracle/oradata/HEMANT/redo02.dbf
-rw-r-----. 1 oracle oinstall 10486272 Oct 15 18:07 /opt/oracle/oradata/HEMANT/redo03.dbf
-rw-r-----. 1 oracle oinstall 419438592 Oct 15 18:07 /opt/oracle/oradata/HEMANT/sysaux.dbf
-rw-r-----. 1 oracle oinstall 566239232 Oct 15 18:07 /opt/oracle/oradata/HEMANT/system.dbf
-rw-r-----. 1 oracle oinstall 104865792 Oct 15 18:07 /opt/oracle/oradata/HEMANT/TDE_TARGET_TBS_encrypted.dbf
-rw-r-----. 1 oracle oinstall 209723392 Oct 15 18:07 /opt/oracle/oradata/HEMANT/undotbs.dbf
18:07:43 SQL> select current_scn from v$database;
CURRENT_SCN
-----------
1242872
18:07:50 SQL>
18:07:50 SQL> alter system checkpoint;
System altered.
18:08:23 SQL> select current_scn from v$database;
CURRENT_SCN
-----------
1243044
18:08:29 SQL> @get_dbf_chk_scns
FILE# NAME CHECKPOINT_CHANGE# CHECKPOINT_TIME
---------- -------------------------------------------------------- ------------------ ------------------
1 /opt/oracle/oradata/HEMANT/system.dbf 1240339 15-OCT-23 17:56:10
2 /opt/oracle/oradata/HEMANT/sysaux.dbf 1240339 15-OCT-23 17:56:10
3 /opt/oracle/oradata/HEMANT/undotbs.dbf 1240339 15-OCT-23 17:56:10
4 /opt/oracle/oradata/HEMANT/TDE_TARGET_TBS_encrypted.dbf 1240339 15-OCT-23 17:56:10
5 /opt/oracle/oradata/HEMANT/indx01.dbf 1240339 15-OCT-23 17:56:10
6 /opt/oracle/oradata/HEMANT/HR_DATA.dbf 1240339 15-OCT-23 17:56:10
10 /opt/oracle/oradata/HEMANT/indx02.dbf 1240339 15-OCT-23 17:56:10
11 /opt/oracle/oradata/HEMANT/indx03.dbf 1240339 15-OCT-23 17:56:10
8 rows selected.
18:08:35 SQL> !ls -l /opt/oracle/oradata/HEMANT/*dbf
-rw-r-----. 1 oracle oinstall 5251072 Oct 15 18:08 /opt/oracle/oradata/HEMANT/HR_DATA.dbf
-rw-r-----. 1 oracle oinstall 10493952 Oct 15 18:08 /opt/oracle/oradata/HEMANT/indx01.dbf
-rw-r-----. 1 oracle oinstall 10493952 Oct 15 18:08 /opt/oracle/oradata/HEMANT/indx02.dbf
-rw-r-----. 1 oracle oinstall 10493952 Oct 15 18:08 /opt/oracle/oradata/HEMANT/indx03.dbf
-rw-r-----. 1 oracle oinstall 10486272 Oct 15 18:08 /opt/oracle/oradata/HEMANT/redo01.dbf
-rw-r-----. 1 oracle oinstall 10486272 Oct 15 18:08 /opt/oracle/oradata/HEMANT/redo02.dbf
-rw-r-----. 1 oracle oinstall 10486272 Oct 15 18:07 /opt/oracle/oradata/HEMANT/redo03.dbf
-rw-r-----. 1 oracle oinstall 419438592 Oct 15 18:08 /opt/oracle/oradata/HEMANT/sysaux.dbf
-rw-r-----. 1 oracle oinstall 566239232 Oct 15 18:08 /opt/oracle/oradata/HEMANT/system.dbf
-rw-r-----. 1 oracle oinstall 104865792 Oct 15 18:08 /opt/oracle/oradata/HEMANT/TDE_TARGET_TBS_encrypted.dbf
-rw-r-----. 1 oracle oinstall 209723392 Oct 15 18:08 /opt/oracle/oradata/HEMANT/undotbs.dbf
18:08:41 SQL>
I now, finally, issue an END BACKUP and check the status.
18:09:45 SQL> alter database end backup;
Database altered.
18:09:51 SQL> select current_scn from v$database;
CURRENT_SCN
-----------
1244942
18:09:58 SQL> @get_dbf_chk_scns
FILE# NAME CHECKPOINT_CHANGE# CHECKPOINT_TIME
---------- -------------------------------------------------------- ------------------ ------------------
1 /opt/oracle/oradata/HEMANT/system.dbf 1243041 15-OCT-23 18:08:23
2 /opt/oracle/oradata/HEMANT/sysaux.dbf 1243041 15-OCT-23 18:08:23
3 /opt/oracle/oradata/HEMANT/undotbs.dbf 1243041 15-OCT-23 18:08:23
4 /opt/oracle/oradata/HEMANT/TDE_TARGET_TBS_encrypted.dbf 1243041 15-OCT-23 18:08:23
5 /opt/oracle/oradata/HEMANT/indx01.dbf 1243041 15-OCT-23 18:08:23
6 /opt/oracle/oradata/HEMANT/HR_DATA.dbf 1243041 15-OCT-23 18:08:23
10 /opt/oracle/oradata/HEMANT/indx02.dbf 1243041 15-OCT-23 18:08:23
11 /opt/oracle/oradata/HEMANT/indx03.dbf 1243041 15-OCT-23 18:08:23
8 rows selected.
18:10:05 SQL> !ls -l /opt/oracle/oradata/HEMANT/*dbf
-rw-r-----. 1 oracle oinstall 5251072 Oct 15 18:09 /opt/oracle/oradata/HEMANT/HR_DATA.dbf
-rw-r-----. 1 oracle oinstall 10493952 Oct 15 18:09 /opt/oracle/oradata/HEMANT/indx01.dbf
-rw-r-----. 1 oracle oinstall 10493952 Oct 15 18:09 /opt/oracle/oradata/HEMANT/indx02.dbf
-rw-r-----. 1 oracle oinstall 10493952 Oct 15 18:09 /opt/oracle/oradata/HEMANT/indx03.dbf
-rw-r-----. 1 oracle oinstall 10486272 Oct 15 18:08 /opt/oracle/oradata/HEMANT/redo01.dbf
-rw-r-----. 1 oracle oinstall 10486272 Oct 15 18:09 /opt/oracle/oradata/HEMANT/redo02.dbf
-rw-r-----. 1 oracle oinstall 10486272 Oct 15 18:09 /opt/oracle/oradata/HEMANT/redo03.dbf
-rw-r-----. 1 oracle oinstall 419438592 Oct 15 18:09 /opt/oracle/oradata/HEMANT/sysaux.dbf
-rw-r-----. 1 oracle oinstall 566239232 Oct 15 18:09 /opt/oracle/oradata/HEMANT/system.dbf
-rw-r-----. 1 oracle oinstall 104865792 Oct 15 18:09 /opt/oracle/oradata/HEMANT/TDE_TARGET_TBS_encrypted.dbf
-rw-r-----. 1 oracle oinstall 209723392 Oct 15 18:09 /opt/oracle/oradata/HEMANT/undotbs.dbf
18:10:10 SQL>
So, while the database was in BACKUP mode (from 17:56:10 to 18:09:45) the datafiles were being updated continuously, Log Switches were happening and ArchiveLogs were being generated. I also had ALTER SYSTEM CHECKPOINT commands being issued.