Troubleshooting
Problem
There is a performance trade-off with the number of open cursors which are allowed on the DB
There is an Oracle DB limit
OPEN_CURSORSand if this limit is reached, the Oracle DB connection will fail withORA-01000: maximum open cursors exceeded.Every pipeline’s JDBC connection is isolated, each stage instance will get it’s own cursor.
For Multi-threaded Pipelines, the number of open cursors per JDBC stage will be equal to the number of pipeline threads.
Each JDBC stage thread will keep its cursor open during the entire duration of the pipeline.
Once the pipeline stops, all of the JDBC stages’s cursors will be closed.
Symptom
A pipeline which connects to Oracle DB throws Stage Errors that the “Maximum open cursors exceeded”.
An Oracle DBA sees that there is a large number of open cursors for the DB user which is configured in StreamSets pipelines.
Resolving The Problem
If
ORA-01000errors are occurring in your Oracle pipelines, the following steps can be followed to determine what applications are maxing out the OPEN_CURSOR limit and whether you need to increase yourOPEN_CURSORSlimit to run your SDC pipelines:Find out the session that is causing the error by using the following SQL statement:
select a.value, s.username, s.sid, s.serial# from v$sesstat a, v$statname b, v$session s where a.statistic# = b.statistic# and s.sid=a.sid and b.name = 'opened cursors current' and s.username is not null;
The output displays the details of all sessions. You can see the maxed out session IDs and compare how many are from your SDC pipeline user and how many are from other applications.
If needed, you can increase your
OPEN_CURSORlimit with the query:alter system set open_cursors = 1000.
Document Location
Worldwide
Was this topic helpful?
Document Information
Modified date:
15 March 2025
UID
ibm17186188