Sunday, November 8, 2009

SQL*Net break/reset to dblink and SQL*Net break/reset to client

We faced a strange situation where one of our concurrent programs was sitting "idle" doing nothing, although the status of the session showed active. The program connects to a remote database over db link, runs a select query and the output of select query is inserted into a table. However, in this situation, the session on the remote database was inactive and the wait event was "SQL*Net break/reset to client". In the concurrent program session, the wait event was "SQL*Net break/reset to dblink".

After some troubleshooting effort that revealed nothing, we decided to create a dummy table with the same structure and run the select/insert statement manually. This gave out the cause of the issue:

ORA-12899: value too large for column string (actual: string, maximum: string)

Actually, the data fetched from the remote database was not being populated in the table because of the above error.

I strongly believe that this is the result of poor design as the concurrent program should have taken care of the exception handling.

Nevertheless, since this is a data issue, there is nothing much DBA can do and hence we transferred the issue to our dev team to take care of this.

PS: Thought of posting this as there are not many articles out there about the aforesaid wait events, which are not related to bugs! Almost every hit on the above wait event will lead you to bug description or a tar to which one will not have access. In our case, the workaround was helpful to trap the error.
- Aravind Kamath Posral

1 comment:

Anonymous said...

good job.... :)