Recently started seeing this error on few of the Exadata environments.

ORA00600: internal error code, arguments:[qosdExpStatRead: expcnt mismatch]

Cause 

This is due to sys.exp_obj$. EXP_CNT mismatch rows of sys.exp_stat$

Following SQL is used to check issue data of some objects. if there are some rows return, that means data issue.
With b as (
select count(*) cnt,objn,snapshot_id from sys.exp_stat$ es group by objn,snapshot_id)
select * from sys.exp_obj$ a, b where a.objn=b.objn and a.snapshot_id=b.snapshot_id
and a.EXP_CNT<>b.CNT;

Solution 

1. Ensure that you have taken a backup of your system before applying the recommended solution.

2. fix issue data.
sqlplus / as sysdba
alter session set container=<container_name>;
update sys.exp_obj$ a set exp_cnt=(select count(*) from sys.exp_stat$ b where
a.objn=b.objn and a.snapshot_id=b.snapshot_id ) where a.objn=<objn>;

commit;

3. Once the scripts complete, confirm that the data is corrected. (no issue data return)
You can use the same SQL to confirm:
With b as (
select count(*) cnt,objn,snapshot_id from sys.exp_stat$ es group by objn,snapshot_id)
select * from sys.exp_obj$ a, b where a.objn=b.objn and a.snapshot_id=b.snapshot_id
and a.EXP_CNT<>b.CNT;

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.