setting one of standby databases I have faced quite interesting error message:
ORA-38870: cannot backup a control file that may have incorrect data file structure
It appeared when I was doing some controlfile maintenance using RMAN, like deleting references to old/unavailable backups and archive logs and CONTROLFILE AUTOBACKUP was ON.
Looking at this message someone may decide that there are some VERY SERIOUS PROBLEMS with CONTROLFILE, but there is quite interesting explanation from official error messages:
ORA-38870: cannot backup a control file that may have incorrect data file structure.
Cause: This control file was created or converted based on a control file from a time different from the time of the database.
Action: Open database read-only to synchronize the control file with the database dictionary to fix the control file.
I really don’t know what means “a time different from the time of the database“, but I have tried proposed solutions and it worked like a magic.
It worth to note that controlfile of this database was converted to standby controlefile, like described in this post Quick solution for ORA-01665: control file is not a standby control file, so it may be the root cause of the problem…
from the Oracle Documentation it’s expected behavior:
Step 4 Open the database as read-only.
Issue the following command:
SQL> ALTER DATABASE OPEN READ ONLY;
The goal of this step is to synchronize the control file with the database by using a dictionary check. After this command, check the alert log for any actions suggested by the dictionary check. Typically, no user action is needed if the old primary was not in the middle of adding or dropping datafiles during the failover.