If there are FUZZY BITS in the datafile header then that means there
may have been writes on the datafile after the last checkpoint.
So, whenever a datafile is opened it is checked for fuzzy bits.
If it is fuzzy then the database checks the checkpoint_change$
column to search the SCN from which the redo logs are to be applied.
ILLUSTRATION:
The following query shows the status and checkpoint information
of my datafiles.
SQL> select file#,status,checkpoint_count,checkpoint_change#
from v$datafile_header;
FILE# STATUS CHECKPOINT_COUNT CHECKPOINT_CHANGE#
---------- ------- ---------------- ------------------
1 ONLINE 102 814577
2 ONLINE 102 814577
3 ONLINE 30 814577
4 ONLINE 101 814577
5 ONLINE 26 814577
SQL> select file_name from dba_data_files;
FILE_NAME
-----------------------------------------
/u01/app/oracle/oradata/orcl/users01.dbf
/u01/app/oracle/oradata/orcl/undotbs01.dbf
/u01/app/oracle/oradata/orcl/sysaux01.dbf
/u01/app/oracle/oradata/orcl/system01.dbf
/u01/app/oracle/oradata/orcl/example01.dbf
Now i will take my EXAMPLE tablespace datafile offline.
SQL> alter database datafile '/u01/app/oracle/oradata/
orcl/example01.dbf' offline;
Database altered.
SQL> select file#,status,checkpoint_count,checkpoint_change#
from v$datafile_header;
FILE# STATUS CHECKPOINT_COUNT CHECKPOINT_CHANGE#
---------- ------- ---------------- ------------------
1 ONLINE 103 818410
2 ONLINE 103 818410
3 ONLINE 31 818410
4 ONLINE 102 818410
5 OFFLINE 27 818410
Now i will do a checkpoint.
SQL> alter system checkpoint;
System altered.
SQL> select file#,status,checkpoint_count,checkpoint_change#
from v$datafile_header;
FILE# STATUS CHECKPOINT_COUNT CHECKPOINT_CHANGE#
---------- ------- ---------------- ------------------
1 ONLINE 104 818477
2 ONLINE 104 818477
3 ONLINE 32 818477
4 ONLINE 103 818477
5 OFFLINE 27 818410
Now after checkpoint the checkpoint count on all the database
has increased except for the EXAMPLE TABLESPACE DATAFILE, if
i try to bring my datafile online now it will require
datafile recovery. Beacuse it has a fuzzy bit on it.
SQL> alter database datafile '/u01/app/oracle/oradata
/orcl/example01.dbf' online;
alter database datafile '/u01/app/oracle/oradata
/orcl/example01.dbf' online
*
ERROR at line 1:
ORA-01113: file 5 needs media recovery
ORA-01110: data file 5: '/u01/app/oracle/oradata
/orcl/example01.dbf'
SQL> recover datafile 5;
Media recovery complete.
SQL> alter database datafile '/u01/app/oracle/oradata
/orcl/example01.dbf' online;
Database altered.
SQL> select file#,status,checkpoint_count,checkpoint_change#
from v$datafile_header;
FILE# STATUS CHECKPOINT_COUNT CHECKPOINT_CHANGE#
---------- ------- ---------------- ------------------
1 ONLINE 104 818477
2 ONLINE 104 818477
3 ONLINE 32 818477
4 ONLINE 103 818477
5 ONLINE 29 818559
0 comments:
Post a Comment