I did a shutdown abort in an Oracle 19c database:
C:\Users\Admin>sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Sun Feb 9 20:52:49 2020
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
SQL> shutdown abort
ORACLE instance shut down.
SQL>
A shutdown abort blocks new connections and kills current sessions whether they are doing anything or not. It does not roll back terminated transactions either. As a result, Oracle has some recovery to do when the instance is restarted to make the database consistent again.
I tried to open the database in read only mode:
SQL> startup mount
ORACLE instance started.
Total System Global Area 7717518448 bytes
Fixed Size 9284720 bytes
Variable Size 1258291200 bytes
Database Buffers 6442450944 bytes
Redo Buffers 7491584 bytes
Database mounted.
SQL> alter database open read only;
alter database open read only
*
ERROR at line 1:
ORA-16005: database requires recovery
SQL>
This would have prevented the recovery from taking place so Oracle returned an ORA-16005.
I recovered the database manually:
SQL> recover database
Media recovery complete.
SQL>
I thought this might allow me to open the database in read only mode but it didn't:
SQL> alter database open read only;
alter database open read only
*
ERROR at line 1:
ORA-16005: database requires recovery
SQL>
To open the database in read only mode, I had to open it normally, close it then reopen it as shown below:
SQL> alter database open;
Database altered.
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.
Total System Global Area 7717518448 bytes
Fixed Size 9284720 bytes
Variable Size 1258291200 bytes
Database Buffers 6442450944 bytes
Redo Buffers 7491584 bytes
Database mounted.
SQL> alter database open read only;
Database altered.
SQL>
No comments:
Post a Comment