Recently started seeing this error on few of the Exadata environments.
ORA–00600: 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;