Tuesday, December 27, 2005

Deprecate Oracle Control Files

The Oracle control file is an operating system file that Oracle relies upon for startup and recovery. The file is essential for Oracle operation, and it is not managed as a tablespace is managed - no transaction consistency or redo log on the changes to the file.

The pfile or spfile (commonly called initSID.ora) specifies the location of the control file. The instance uses the control file specified in the pfile/spfile to open the database.

Having an external file that is not managed like a typical oracle datafile (a datafile that backs a tablespace) adds complexity during backup and recovery. There are specific procedures for backing up and recovering a control file.

Database information in the control file is also contained in the SYSTEM tablespace. Oracle documentation suggests checking the error log for indications of inconsistency between the SYSTEM tablespace and control file. This implies they contain the same information.

It would be possible to have the pfile/spfile point to the datafile that backs the SYSTEM tablespace and start the database by opening the SYSTEM tablespace. Removing control files from the Oracle architecture seems to be straight-forward and would reduce complexity. DB2, Sybase, and MS-SQL don't have anything like the control file, so it is not a technical requirement.

One kink is that Oracle writes RMAN information to the control file. This information could stay in the control file or be moved to a new file (named rman history file?).
The control file has been around for so many years that Oracle likely sees no marketing advantage in removing it to clean up the architecture.

No comments:

Post a Comment