/*
 importta alınan hata:

Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
 Total estimation using BLOCKS method: 113.3 GB
 Processing object type SCHEMA_EXPORT/TABLE/TABLE
 ORA-39014: One or more workers have prematurely exited.
 ORA-39029: worker 1 with process name "DW00" prematurely terminated
 ORA-31671: Worker process DW00 had an unhandled exception.
 ORA-00600: internal error code, arguments: [qesrcRO_Dol2RO], [0x000000000], [0x000000000], [0x000000000], [], [], [], [], [], [], [], []
 ORA-00955: name is already used by an existing object
 ORA-06512: at "SYS.KUPW$WORKER", line 1838
 ORA-06512: at line 2

12737666 ORA-600 [qesrcro_dol2ro] / result cache corruption

*/

Result cache corruption hatası alırsanız düzeltmek için disable/enable etmek gerekiyor;

 select * from GV$RESULT_CACHE_DEPENDENCY;

select * from GV$RESULT_CACHE_MEMORY;

select * from GV$RESULT_CACHE_OBJECTS;

select * from GV$RESULT_CACHE_STATISTICS;

Node1:

SQL> select instance_name from v$instance;

INSTANCE_NAME 
 ---------------- 
 TSTDB1

SQL> SELECT dbms_result_cache.status() FROM dual; 
 DBMS_RESULT_CACHE.STATUS()
 --------------------------------------------------------------------------------
 CORRUPT
 SQL>

SQL> SET SERVEROUTPUT ON 
 SQL> EXECUTE DBMS_RESULT_CACHE.MEMORY_REPORT 
 R e s u l t C a c h e M e m o r y R e p o r t 
 Cache is corrupt.

PL/SQL procedure successfully completed.

Node2:

SQL> select instance_name from v$instance;

INSTANCE_NAME 
 ---------------- 
 TSTDB2
 SQL> SELECT dbms_result_cache.status() FROM dual;

DBMS_RESULT_CACHE.STATUS()
 --------------------------------------------------------------------------------
 ENABLED

SQL>

SQL> SET SERVEROUTPUT ON 
 SQL> EXECUTE DBMS_RESULT_CACHE.MEMORY_REPORT 
 R e s u l t C a c h e M e m o r y R e p o r t 
 [Parameters] 
 Block Size = 1K bytes 
 Maximum Cache Size = 125856K bytes (125856 blocks) 
 Maximum Result Size = 6292K bytes (6292 blocks) 
 [Memory] 
 Total Memory = 6258808 bytes [0.124% of the Shared Pool] 
 ... Fixed Memory = 185400 bytes [0.004% of the Shared Pool] 
 ... Dynamic Memory = 6073408 bytes [0.121% of the Shared Pool] 
 ....... Overhead = 142400 bytes 
 ....... Cache Memory = 5792K bytes (5792 blocks) 
 ........... Unused Memory = 16 blocks 
 ........... Used Memory = 5776 blocks 
 ............... Dependencies = 4 blocks (4 count) 
 ............... Results = 5772 blocks 
 ................... SQL = 5770 blocks (5770 count) 
 ................... PLSQL = 2 blocks (2 count)

PL/SQL procedure successfully completed.

— Disable the result cache

 alter system set RESULT_CACHE_MAX_SIZE=0;

— Check status: should return “BYPASS”

 SELECT dbms_result_cache.status() FROM dual;

— Re-enable the result cache

 alter system set RESULT_CACHE_MAX_SIZE=;

— Check status: should return “ENABLED”

 SELECT dbms_result_cache.status() FROM dual;

— Generate a report

 execute dbms_result_cache.memory_report

Eğer halen result chache hata alırsa db instance ı yeniden başlatmamız gerekir.

 alter system set RESULT_CACHE_MAX_SIZE=0; 
 alter system set RESULT_CACHE_MAX_SIZE=125856K

Bizdeki mevcut durumda şöyle; elimizde dursun;

show parameters result

client_result_cache_lag integer 3000
 client_result_cache_size integer 0
 result_cache_max_result integer 5
 result_cache_max_size integer 128876544
 result_cache_mode string MANUAL
 result_cache_remote_expiration integer 0