If you cannot recover data by yourself, ask Parnassusdata, the professional ORACLE database recovery team for help.
Parnassusdata Software Database Recovery Team
Hi! Our Oracle Database often crashed. I looked into the alert log and found that it suffered an error as the title. And I searched the error in the community and got a step-by-step way to fix it. At the 5th step, the status is not 'OFFLINE','PARTLY AVAILABLE' or 'NEEDS RECOVERY', but 'ONLINE'. Please help! Thank you!
SYMPTOMS
The following error is occurring in the alert.log right before the database crashes.
ORA-00600: internal error code, arguments: [4194], [#], [#], [], [], [], [], []
This error indicates that a mismatch has been detected between redo records and rollback (undo) records.
ARGUMENTS:
Arg [a] - Maximum Undo record number in Undo block
Arg [b] - Undo record number from Redo block
Since we are adding a new undo record to our undo block, we would expect that the new record number is equal to the maximum record number in the undo block plus one. Before Oracle can add a new undo record to the undo block it validates that this is correct. If this validation fails, then an ORA-600 [4194] will be triggered.
CHANGES
This issue generally occurs when there is a power outage or hardware failure that initially crashes the database. On startup, the database does the normal roll forward (redo) and then rollback (undo), this is where the error is generated on the rollback.
CAUSE
This also can be cause by the following defect
Bug 8240762 Abstract: Undo corruptions with ORA-600 [4193]/ORA-600 [4194] or ORA-600 [4137] after SHRINK
Details:
Undo corruption may be caused after a shrink and the same undo block may be used
for two different transactions causing several internal errors like:
ORA-600
SQL> select tablespace_name, status, segment_name from dba_rollback_segs where status != 'OFFLINE';
TABLESPACE_NAME STATUS SEGMENT_NAME
-------------------- ------------------------------------------------ --------------------
SYSTEM ONLINE SYSTEM
Please donot use any Underscore parameter or unsupported parameters.(Ensure you remove them if you have used them)
Please upload me the steps you have followed.
The Best option to resolve Ora-00600[4194] is listed in document
Basic Steps to be Followed While Solving ORA-00600 [4194]/[4193] Errors Without Using Unsupported parameter ( Doc ID 281429.1 )
This is the content of the pfile. We need the parameters with underscore.
orcl.__db_cache_size=171966464
orcl.__java_pool_size=4194304
orcl.__large_pool_size=4194304
orcl.__oracle_base='/u01/ora11203'#ORACLE_BASE set from environment
orcl.__pga_aggregate_target=159383552
orcl.__sga_target=269098752
orcl.__shared_io_pool_size=0
orcl.__shared_pool_size=180355072
orcl.__streams_pool_size=0
*._row_cr=FALSE
*.audit_file_dest='/u02/orcl/oradata/adump'
*.audit_trail='db'
*.compatible='11.2.0.0.0'
*.control_files='/u02/orcl/oradata/orcl/control01.ctl','/u02/orcl/oradata/orcl/control02.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_name='orcl'
*.diagnostic_dest='/u01/ora11203'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
*.open_cursors=300
*.pga_aggregate_target=157286400
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_max_size=367001600
*.sga_target=367001600
*.undo_tablespace='UNDOTBS1'
undo_management = manual
event = '10513 trace name context forever, level 2'
I have done the flowing step.
1. Shutdown the instance
2. set the following parameters in the pfile
undo_management = manual
event = '10513 trace name context forever, level 2'
3. >startup restrict pfile=<initsid.ora>
4. >select tablespace_name, status, segment_name from dba_rollback_segs where status != 'OFFLINE';
The underscore parameter you have set are fine(_row_cr) .
Please comment out event 10513 not required for ora-00600[4194]
Regarding your query
SQL> select tablespace_name, status, segment_name from dba_rollback_segs where status != 'OFFLINE';
TABLESPACE_NAME STATUS SEGMENT_NAME
-------------------- ------------------------------------------------ --------------------
SYSTEM ONLINE SYSTEM
This is fine because you have set undo management to Manual so the only rollback segment available is in SYSTEM tablespace.
You can follow the document I have given.
Also run
SQL>Select * from v$recover_file ;
Ensure you open your database using alter database open (Donot use resetlogs)