Wednesday, December 17, 2014

ORA-01122: database file 22 failed verification check

Today when I tried to restart my test database I got strange but known error.

SQL> startup ORA-32004: obsolete and/or deprecated parameter(s) specified ORACLE instance started. Total System Global Area 5344731136 bytes Fixed Size 2163168 bytes Variable Size 2298482208 bytes Database Buffers 3036676096 bytes Redo Buffers 7409664 bytes Database mounted. ORA-01122: database file 22 failed verification check ORA-01110: data file 22: '/u01/app/oracle/oradata/???/archive_tbs01.dbf' ORA-01200: actual file size of 65536 is smaller than correct size of 402176 


After researching it means inconsistency of controlfile. So, we need recreate or restore it from backup.

Do one of the following:

SQL > alter database backup controlfile to trace; Database altered.

or

 SQL> ALTER DATABASE BACKUP CONTROLFILE TO '/u01/app/oracle/admin/PROD/bdump/controlfile.bkp'; Database altered. 

or

SQL> ALTER DATABASE BACKUP CONTROLFILE TO TRACE AS '/u01/app/oracle/admin/PROD/bdump/controlfile.trc'; Database altered. 

shutdown database and start it on nomount state:

SQL> shut immediate ORA-01109: database not open Database dismounted. ORACLE instance shut down.

 SQL> startup nomount ORA-32004: obsolete and/or deprecated parameter(s) specified ORACLE instance started. Total System Global Area 5344731136 bytes Fixed Size 2163168 bytes Variable Size 2298482208 bytes Database Buffers 3036676096 bytes Redo Buffers 7409664 bytes SQL>


edit your trace file and try to create  --I created createnewcontrolfile.sql file


 SQL > @createnewcontrolfile.sql CREATE CONTROLFILE REUSE DATABASE "???" RESETLOGS ARCHIVELOG MAXLOGFILES 16 MAXLOGMEMBERS 3 MAXDATAFILES 100 MAXINSTANCES 8 MAXLOGHISTORY 2921 LOGFILE GROUP 1 '/u01/app/oracle/oradata/???/redo1.log' SIZE 400M, GROUP 2 '/u01/app/oracle/oradata/???/redo2.log' SIZE 400M, GROUP 3 '/u01/app/oracle/oradata/???/redo3.log' SIZE 400M, GROUP 4 '/u01/app/oracle/oradata/???/redo4.log' SIZE 400M, GROUP 5 '/u01/app/oracle/oradata/???/redo5.log' SIZE 400M, GROUP 6 '/u01/app/oracle/oradata/???/redo6.log' SIZE 400M -- STANDBY LOGFILE DATAFILE '/u01/app/oracle/oradata/???/system01.dbf', ... '/u01/app/oracle/oradata/???/FCJ_DATA_TS_13.dbf' CHARACTER SET AL32UTF8; 


At the end recover database using new controlfile

 SQL> recover database using backup controlfile

Now open the database and enjoy

 SQL> alter database open; 

No comments:

Post a Comment

Cannot access dba_directories inside procedure

 Recently I faced one of familiar Oracle error ORA -00942 : table or view does not exist   I got it in while compiling procedure, becaus...