1、背景:
通过BBED修改了system01.dbf中的block 128内容,这是undo使用到的,因为操作错误,导致各种奇怪的问题。
z
2、解决流程
(1)通过rman进行恢复
RMAN>restore database ;
RMAN>recover database; 或 SQL> recover database until time '2022-08-24 08:00:00'; ORA-00283: recovery session canceled due to errors ORA-16433: The database or pluggable database must be opened in read/write mode.
无论怎么操作都出现这个问题。
(2)最后考虑是控制文件混乱问题
mounted状态下,把控制文件导出,还是报这个错。 SQL> alter database backup controlfile to trace as '/oracle/control10.trace'; alter database backup controlfile to trace as '/oracle/control10.trace' * ERROR at line 1: ORA-16433: The database or pluggable database must be opened in read/write mode.
3、解决方案
最后利用之前trace出的控制文件,或者根据strings controlfile的内容,定位到数据文件信息。进行控制文件重建。
(1)重建控制文件
SQL> shutdown abort ORACLE instance shut down. SQL> STARTUP NOMOUNT CREATE CONTROLFILE REUSE DATABASE "MESORCL" RESETLOGS ARCHIVELOG MAXLOGFILES 16 MAXLOGMEMBERS 3 MAXDATAFILES 100 MAXINSTANCES 8 MAXLOGHISTORY 292 LOGFILE GROUP 1 '/oracle/app/oracle/oradata/mesorcl/redo01.log' SIZE 200M BLOCKSIZE 512, GROUP 2 '/oracle/app/oracle/oradata/mesorcl/redo02.log' SIZE 200M BLOCKSIZE 512, GROUP 3 '/oracle/app/oracle/oradata/mesorcl/redo03.log' SIZE 200M BLOCKSIZE 512 -- STANDBY LOGFILE DATAFILE '/oracle/app/oracle/oradata/mesorcl/system01.dbf', '/oracle/app/oracle/oradata/mesorcl/sysaux01.dbf', '/oracle/app/oracle/oradata/mesorcl/undotbs01.dbf', '/oracle/app/oracle/oradata/mesorcl/test01.dbf', '/oracle/app/oracle/oradata/mesorcl/users01.dbf' CHARACTER SET AL32UTF8 ; ORACLE instance started. Total System Global Area 3992977408 bytes Fixed Size 8628064 bytes Variable Size 1056966816 bytes Database Buffers 2919235584 bytes Redo Buffers 8146944 bytes SQL> 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Control file created.
(3)resetlogs方式打开数据库,解决
SQL> alter database open resetlogs; Database altered.