oracle_11g_force_open

This is an old revision of the document!


Overview

Apparently in Oracle, you can FORCE the database to open even if it isn't consistent following this procedure:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
PHASE 1:
 
1. Apply patch 21307096 then:
 
2. The fix needs to be enabled with Event 21307096 at level SCN delta.
The SCN delta in million units is with the range of values from 1 to 4095 which increases the scn by:
 
lowest_scn + event level * 1000000
 
Example: if the lowest datafile checkpoint scn in the database is 990396
and the highest is 992660 then SCN delta is 1; given by (992660 - 990396) / 1000000
 
event="21307096 trace name context forever, level 1"
 
or use this query:
 
select decode(ceil((max(CHECKPOINT_CHANGE#) - min(CHECKPOINT_CHANGE#))/1000000),0,'Event 21307096 is not needed'
, 'event="21307096 trace name context forever, level '
||ceil((max(CHECKPOINT_CHANGE#) - min(CHECKPOINT_CHANGE#))/1000000)
||'"') "EVENT TO SET in init.ora:"
from v$datafile_header
where status != 'OFFLINE';
 
Note that the event is needed to activate this fix so please add it in the init.ora file.
 
 
PHASE 2:
 
1) Backup the database while the database is closed.
 
THE INSTRUCTIONS HERE ARE DESTRUCTIVE. YOU ARE STRONGLY ADVISED TO BACKUP THE
DATABASE BEFORE PROCEEDING. IF YOU DO NOT DO THIS YOU MAY LOSE THE CHANCE TO
TRY OTHER OPTIONS.
 
2) Disable this database from EM if running. We also need to disable RAC to avoid Auto restart.
 
3) If your datafiles are from different points in time, it is best to try to
use system tablespace datafiles at a similar timestamp to the OLDEST files
you have online in the database. This reduces the chance that you will get
problems during the bootstrap phase of opening the database.
 
4) Edit your init.ora file to change undo_management and add two parameters.
 
* Change UNDO_MANAGEMENT=AUTO to
 
UNDO_MANAGEMENT=MANUAL
 
* Remove or comment out UNDO_TABLESPACE and UNDO_RETENTION.
 
* Add
 
CLUSTER_DATABASE=FALSE
JOB_QUEUE_PROCESSES=0
_ALLOW_RESETLOGS_CORRUPTION = TRUE
 
* If you only have a spfile available, you can from the closed, nomount or the
mount stage create an init.ora file as follows:
 
SQL> CREATE PFILE FROM SPFILE;
 
Do NOT edit the SPFILE.
 
5) Invoke SQL*Plus, startup mount, check that correct init.ora was used and
all datafiles are in the status of online or system.
 
$ sqlplus "/as sysdba"
 
SQL> startup mount pfile = (full path / file name ato init.ora)
Confirm that the hidden parameters from step 3 were used:
 
SQL> show parameters corrupt
 
You should see both hidden parameters listed. If not, the wrong init.ora
may have been modified. Do not continue until "show parameters corrupt" shows
both hidden parameters.
 
SQL> show parameters undo
 
You should see undo management set to manual. If not, the wrong init.ora
may have been modified. Do not continue until "show parameters undo" shows
undo management as manual.
 
Check that all files you want to open with are listed as ONLINE or as SYSTEM.
 
SQL> select name, file#, status from v$datafile where status not in
('SYSTEM', 'ONLINE');
 
If any rows are returned from the query above, bring the file(s) online with:
 
SQL> ALTER DATABASE DATAFILE file# ONLINE;
 
and repeat until there are no files in an OFFLINE status. If any file remains or
changes into "recover" status after you try to online the file proceed to step 6.
 
6) Perform a fake incomplete recovery then open the database with resetlogs.
 
SQL> recover database using backup controlfile until cancel;
 
WHEN PROMPTED FOR AN ARCHIVELOG FILE TYPE cancel THEN PRESS ENTER.
 
SQL> ALTER DATABASE OPEN RESETLOGS;
 
7) If the database opens try selecting from a table. For example:
 
SQL> SELECT SYSDATE FROM DUAL;
 
If you get a row back the database is open and "functional". If you wish, you
may try to select from a other tables to make sure the database is functional
enough for the required export.
 
With the database open and functional you should attempt to export the database
IMMEDIATELY. Since database is unstable, don't try another shutdown/startup unless needed.
Once you have an export the database MUST be recreated from scratch.
This means dropping and deleting ALL datafiles and creating a new database from
scratch.
 
A database which has been opened in this way but not rebuilt will not be
supported by Oracle. Any delay in exporting the contents or any attempt to
use the system may cause irreparable damage.
 
NOTE: BE SURE TO REVERSE / REMOVE THE INIT.ORA PARAMETERS ADDED IN STEP 3
OTHERWISE YOU MAY ACCIDENTALLY CORRUPT ANY NEW DATABASE CREATED USING THE SAME
INIT.ORA FILE.
 
8) If the instance crashed in the open phase of step 5, check for trace files
in the background dump destination. If you find a trace file, check to see if
the trace file has an ORA-00600 [2662] or ORA-00600 [4000] error in it.
Either of these errors may also be seen in the alert.log file.
 
If you see the ORA-00600 [2662] or ORA-00600 [4000] error, provide Oracle Support
Services the full error message. Oracle Support Services will provide steps to advance
the SCN using a hidden parameter.
 
 
NOTE: BE SURE TO REVERSE / REMOVE THE INIT.ORA PARAMETERS ADDED IN STEP 3
OTHERWISE YOU MAY ACCIDENTALLY CORRUPT ANY NEW DATABASE CREATED USING THE SAME
INIT.ORA FILE.
 
*************************************************************************
* *
* CAUTION: Once the database is open, it is imperative that you export, *
* rebuild the database, and import. *
* *
* By forcing open the database in this fashion, there is a strong *
* likelihood of logical corruption, possibly affecting the data *
* dictionary. Oracle does not guarantee that all of the data will be *
* accessible nor will it support a database that has been opened by *
* this method and that the database users will be allowed to continue *
* work. All this does is provide a way to get at the contents of the *
* database for extraction, usually by export. It is up to you to *
* determine the amount of lost data and to correct any logical *
* corruption issues. *
* *
*************************************************************************

  • oracle_11g_force_open.1576856511.txt.gz
  • Last modified: 2019/12/20 23:41
  • (external edit)