ORA-16433: The database or pluggable database must be opened in read/write
ORA-16433 is an error returned when a database cannot be opened. This can be a result of multiple conditions including,
- The inconsistency of the database
- Physical corruption
- Loss of dependent files or access issues etc..
More often than not the solution is to recover from available backups, but there can be situations where backups are not available, specially on UAT or Test setups. Although not the ideal scenario, in this type of situation you might want to open the databases even with inconsistency.
In Comes --> _ALLOW_RESETLOGS_CORRUPTION
First, if you are in a position to use _ALLOW_RESETLOGS_CORRUPTION=TRUE, that means it has to be a critical moment, and when you come across more ora- errors while you are trying to reopen the databsae, that can be annoying.
Note - _ALLOW_RESETLOGS_CORRUPTION=TRUE must only be used
after Oracle support confirmation as a last resort. Also make sure to take cold
backup before proceeding.
Basic steps to be followed to resolve ORA 16433 after the
loss of Online redo logs using _ALLOW_RESETLOGS_CORRUPTION are listed below (if using PDBs refer Note below),
1. Create pfile from spfile, If RAC stop all nodes except
one.
2. Add or change parameters as below,
Set UNDO_MANAGEMENT=MANUAL and remove UNDO_TABLESPACE and
UNDO_RETENTION.
Set CLUSTER_DATABASE=FALSE, JOB_QUEUE_PROCESSES=0.
Include
_ALLOW_RESETLOGS_CORRUPTION=TRUE
3. Recreate the controlfile with resetlogs option.
4. If any of the datafiles are in offline status, try to alter
the datafile online as below,
select file#, name, status from v$datafile where status not in ('SYSTEM', 'ONLINE');
alter database datafile <file#> online;
If the status changes to RECOVER perform an incomplete recovery
as below, (This is to update the status, not actual recovery)
recover database using backup controlfile until cancel; -- type cancel in prompt
5. Open database with reset logs,
alter database open resetlogs;
Additional point to consider is that, a database opened with _ALLOW_RESETLOGS_CORRUPTION=TRUE Is not supported by Oracle, hence make sure to take logical backup (i.e export/import) and recreate the database.
Comments
Post a Comment