A user reported an application error ORA-01013. The error message was: “User requested cancel of current operation”. The user retried it several times, but had the same result.
The application uses Oracle database and there were no changes to the database since the last time when user was able to run this process.
The user was able to run the process in the test environment without any issues as well. I ran the same query from DBA query tool and the query completed successfully.
So, my first thought was that there was something wrong with application server itself.
After 10 minutes of checking similar issues (ORA-01013 error) online and on Oracle support site I found no explanation of why would this happen.
I started analyzing the query’s execution for both – for DBA’s execution and for the application.
So, when the query was running from the application it was running just for 15 seconds and then it was just cancelled (with error ORA-01013). It was cancelled every time after exact 15 seconds. When I ran the query myself it was running for about 2 minutes. The interesting thing was that SQL IDs for these two executions were different.
My next step was to find the query in cash plan:
select address, hash_value from v$sqlarea
where sql_text like ‘SELECT COUNT(*)%HERE IS THE PROBLEM SQL…%’ and sql_id<>’6munh028ah2bm’;
Where “6munh028ah2bm” was SQL ID of my execution.
Then I removed the “bad” plan from the cash:
We have not tried to test it right after this, so I am not sure if this is enough to fix the problem. The next steps were to gather statistics for the tables related to the query.
This fixed the problem.
I thought I need to share this as I was not able to find anything helpful on the web during my troubleshooting. Hopefully next time it will safe time to somebody.