ORA-02103: PCC: inconsistent cursor cache

I have been hit by one error ORA-02103: PCC: inconsistent cursor cache (out-of-range cuc ref). it occur when user execute thousand of update statement in one go. I have place commit after 50 records. But problem is still there. It shutdown the oracle. I have to again startup oracle database. I’m running query from Toad. Server machine remotely connected with Toad using TNS. Why this error occur or plz guide what is the best way to update records. I have also used parallel Hint. Committing after 50 record reduce error occurrence but problem not solve completely

As per ora description:
Error: SQL 2103
Text: Inconsistent cursor cache (out-of-range CUC ref)
Cause: The precompiler generates a unit cursor entry (UCE) array. An element
in this array corresponds to an entry in the cursor cache (CUC). While
doing a consistency check on the cursor cache, SQLLIB found that the
UCE array contains an ordinal value that is either too large or less
than zero. This happens only if your program runs out of memory.
Action: Allocate more memory to your user session, then rerun the program. If
the error persists, call customer support for assistance.
How user is connected dedicated or shared? How much memory is used during update? Is it enough?
Is parameter open_cursors high enough?
And as You can see from error description - call Oracle support. Raise SR to Oracle - they will investigate and ask dump files and look through them and propose a solution.

Similar Messages

  • Inconsistent cursor cache  error still presisting

    Hey I have asked this question before but no solution has been provided me. I have been facing a very serious problem. I have oracle 11g on windows 2003 on 64 bit machine. With 2 processor 8GB RAM. Sga/pga automatically features turn on and 6GB assign to memory_max_target, memory_target . My problem is when I run update 600 hundred statements in one go and every update statement update record between 1 to 30000 and after 20 records I use commit. But after 20 to 30 record oracle go down (shutdown) when i check alert log It advise to check Trace file and in trace file I got this error ORA-02103: PCC: inconsistent cursor cache (out-of-range cuc ref). I turn on my cache sharing to force but no way. Is there any other fast way to update records??
    cursor_sharing string force
    cursor_space_for_time boolean FALSE
    open_cursors integer 300
    session_cached_cursors integer 50
    my update statement are following
    Update jg_6july_dg0 Set Operator_code= '915724' where Operator_code= '015325';
    Update jg_6july_dg0 Set Operator_code= '915715' where Operator_code= '015323';
    .Update jg_6july_dg0 Set Operator_code= '915712' where Operator_code= '015374';
    Cursor Caching I think is not a problem either it is a oracle bug or I’m doing something wrong. I can’t believe that oracle does not have solution for such little problem. My question is why oracle shutdown?? Waiting for you reply

    sir no such error i got nothing. sir proces of rqasing SR is quite cumbersome. i'm stuck where SR first page ask Type of Problem it is hide how i set its value one more strange thing i have change the setting of SGA or PGA now the error in my alter log has been changed i have pasted here some part of alterlog plz check and told me what should i do now.
    Checkpoint not complete
    Current log# 2 seq# 1844 mem# 0: E:\APP\ADMINISTRATOR\ORADATA\ORCL\ONLINELOG\O1_MF_2_4VH0YMCK_.LOG
    Current log# 2 seq# 1844 mem# 1: E:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\ORCL\ONLINELOG\O1_MF_2_4VH0YMLC_.LOG
    Fri Apr 03 19:15:50 2009
    Errors in file e:\app\administrator\diag\rdbms\orcl\orcl\trace\orcl_lgwr_5088.trc (incident=164082):
    ORA-00494: enqueue [CF] held for too long (more than 900 seconds) by 'inst 1, osid 3604'
    Incident details in: e:\app\administrator\diag\rdbms\orcl\orcl\incident\incdir_164082\orcl_lgwr_5088_i164082.trc
    Killing enqueue blocker (pid=3604) on resource CF-00000000-00000000
    by killing session 545.1
    Killing enqueue blocker (pid=3604) on resource CF-00000000-00000000
    by terminating the process
    LGWR (ospid: 5088): terminating the instance due to error 2103
    Fri Apr 03 19:15:51 2009
    Errors in file e:\app\administrator\diag\rdbms\orcl\orcl\trace\orcl_j000_4256.trc:
    ORA-00604: error occurred at recursive SQL level 1
    ORA-02103: PCC: inconsistent cursor cache (out-of-range cuc ref)
    Fri Apr 03 19:15:52 2009
    Errors in file e:\app\administrator\diag\rdbms\orcl\orcl\trace\orcl_j001_4764.trc:
    ORA-02103: PCC: inconsistent cursor cache (out-of-range cuc ref)
    Instance terminated by LGWR, pid = 5088Fri Apr 03 19:25:08 2009
    Starting ORACLE instance (normal)
    LICENSE_MAX_SESSION = 0
    LICENSE_SESSIONS_WARNING = 0
    Picked latch-free SCN scheme 3
    Using LOG_ARCHIVE_DEST_10 parameter default value as USE_DB_RECOVERY_FILE_DEST
    Autotune of undo retention is turned on.
    IMODE=BR
    ILAT =61
    LICENSE_MAX_USERS = 0
    SYS auditing is disabled
    Starting up ORACLE RDBMS Version: 11.1.0.7.0.
    Using parameter settings in server-side spfile E:\APP\ADMINISTRATOR\PRODUCT\11.1.0\DB_1\DATABASE\SPFILEORCL.ORA
    System parameters with non-default values:
    processes = 500
    sessions = 555
    sga_max_size = 5G
    nls_length_semantics = "BYTE"
    resource_manager_plan = ""
    sga_target = 5G
    memory_target = 0
    memory_max_target = 7360M
    control_files = "E:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROLFILE\O1_MF_4VH0YL9L_.CTL"
    control_files = "E:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\ORCL\CONTROLFILE\O1_MF_4VH0YLF0_.CTL"
    db_block_size = 16384
    compatible = "11.1.0.0.0"
    db_files = 7000
    db_create_file_dest = "E:\app\Administrator\oradata"
    db_recovery_file_dest = "E:\app\Administrator\flash_recovery_area"
    db_recovery_file_dest_size= 2G
    undo_tablespace = "UNDOTBS1"
    undo_retention = 900
    sec_case_sensitive_logon = FALSE
    remote_login_passwordfile= "EXCLUSIVE"
    db_domain = ""
    dispatchers = "(PROTOCOL=TCP) (SERVICE=orclXDB)"
    audit_file_dest = "E:\APP\ADMINISTRATOR\ADMIN\ORCL\ADUMP"
    audit_trail = "DB"
    db_name = "orcl"
    open_cursors = 300
    pga_aggregate_target = 2112M
    enable_ddl_logging = FALSE
    aq_tm_processes = 0
    diagnostic_dest = "E:\APP\ADMINISTRATOR"
    Fri Apr 03 19:25:09 2009
    PMON started with pid=2, OS id=2752
    Fri Apr 03 19:25:09 2009
    VKTM started with pid=3, OS id=1252 at elevated priority
    VKTM running at (20)ms precision
    Fri Apr 03 19:25:09 2009
    DIAG started with pid=4, OS id=2596
    Fri Apr 03 19:25:09 2009
    DBRM started with pid=5, OS id=1436
    Fri Apr 03 19:25:09 2009
    PSP0 started with pid=6, OS id=5104
    Fri Apr 03 19:25:09 2009

  • "SQL-02103: Inconsistent cursor cache." error on a dual processor multi threaded apps

    I have a C++ with Pro*C++ COM object running on a Win2000 OS on
    a dual processor Middleware. The program is being called by a
    service in a multi threaded way. An oracle error like ORA-2103
    and SQL-02103 will be generated after running the program. We've
    tried putting mutex on every SQL statement in Pro*C and it works
    but the systems became very very slow. We concluded that the
    error might be cause by a collision of threads accessing the
    same Table or different tables having foreign constraints. This
    is so because the error keeps coming from a statement accessing
    Table A and following errors comes from a Table B having a
    foreign key on Table A.
    Our only solution now is to put Mutex on Statements accessing
    same tables or tables with foreign constraints but this will
    make our system run very very slow. I dont know if the problem
    is in our Oracle Database because we already upgraded our system
    from 8.1.6 to 8.1.7. The wierd thing on this is that the system
    is running smoothly without oracle errors on a SINGLE PROCESSOR
    Middleware. Hope you can give me any insights on this problem.

    I have a C++ with Pro*C++ COM object running on a Win2000 OS on
    a dual processor Middleware. The program is being called by a
    service in a multi threaded way. An oracle error like ORA-2103
    and SQL-02103 will be generated after running the program. We've
    tried putting mutex on every SQL statement in Pro*C and it works
    but the systems became very very slow. We concluded that the
    error might be cause by a collision of threads accessing the
    same Table or different tables having foreign constraints. This
    is so because the error keeps coming from a statement accessing
    Table A and following errors comes from a Table B having a
    foreign key on Table A.
    Our only solution now is to put Mutex on Statements accessing
    same tables or tables with foreign constraints but this will
    make our system run very very slow. I dont know if the problem
    is in our Oracle Database because we already upgraded our system
    from 8.1.6 to 8.1.7. The wierd thing on this is that the system
    is running smoothly without oracle errors on a SINGLE PROCESSOR
    Middleware. Hope you can give me any insights on this problem.

  • "SQL-02103 Inconsistent cursor cache." error on dual processor multi threaded system

    I have a C++ with Pro*C++ COM object running on a Win2000 OS on
    a dual processor Middleware. The program is being called by a
    service in a multi threaded way. An oracle error like ORA-2103
    and SQL-02103 will be generated after running the program. We've
    tried putting mutex on every SQL statement in Pro*C and it works
    but the systems became very very slow. We concluded that the
    error might be cause by a collision of threads accessing the
    same Table or different tables having foreign constraints. This
    is so because the error keeps coming from a statement accessing
    Table A and following errors comes from a Table B having a
    foreign key on Table A.
    Our only solution now is to put Mutex on Statements accessing
    same tables or tables with foreign constraints but this will
    make our system run very very slow. I dont know if the problem
    is in our Oracle Database because we already upgraded our system
    from 8.1.6 to 8.1.7. The wierd thing on this is that the system
    is running smoothly without oracle errors on a SINGLE PROCESSOR
    Middleware. Hope you can give me any insights on this problem.

    I have a C++ with Pro*C++ COM object running on a Win2000 OS on
    a dual processor Middleware. The program is being called by a
    service in a multi threaded way. An oracle error like ORA-2103
    and SQL-02103 will be generated after running the program. We've
    tried putting mutex on every SQL statement in Pro*C and it works
    but the systems became very very slow. We concluded that the
    error might be cause by a collision of threads accessing the
    same Table or different tables having foreign constraints. This
    is so because the error keeps coming from a statement accessing
    Table A and following errors comes from a Table B having a
    foreign key on Table A.
    Our only solution now is to put Mutex on Statements accessing
    same tables or tables with foreign constraints but this will
    make our system run very very slow. I dont know if the problem
    is in our Oracle Database because we already upgraded our system
    from 8.1.6 to 8.1.7. The wierd thing on this is that the system
    is running smoothly without oracle errors on a SINGLE PROCESSOR
    Middleware. Hope you can give me any insights on this problem.

  • "SQL-02103: Inconsistent cursor cache." error on dual processor multi thread apps

    I have a C++ with Pro*C++ COM object running on a Win2000 OS on
    a dual processor Middleware. The program is being called by a
    service in a multi threaded way. An oracle error like ORA-2103
    and SQL-02103 will be generated after running the program. We've
    tried putting mutex on every SQL statement in Pro*C and it works
    but the systems became very very slow. We concluded that the
    error might be cause by a collision of threads accessing the
    same Table or different tables having foreign constraints. This
    is so because the error keeps coming from a statement accessing
    Table A and following errors comes from a Table B having a
    foreign key on Table A.
    Our only solution now is to put Mutex on Statements accessing
    same tables or tables with foreign constraints but this will
    make our system run very very slow. I dont know if the problem
    is in our Oracle Database because we already upgraded our system
    from 8.1.6 to 8.1.7. The wierd thing on this is that the system
    is running smoothly without oracle errors on a SINGLE PROCESSOR
    Middleware. Hope you can give me any insights on this problem.

    I have a C++ with Pro*C++ COM object running on a Win2000 OS on
    a dual processor Middleware. The program is being called by a
    service in a multi threaded way. An oracle error like ORA-2103
    and SQL-02103 will be generated after running the program. We've
    tried putting mutex on every SQL statement in Pro*C and it works
    but the systems became very very slow. We concluded that the
    error might be cause by a collision of threads accessing the
    same Table or different tables having foreign constraints. This
    is so because the error keeps coming from a statement accessing
    Table A and following errors comes from a Table B having a
    foreign key on Table A.
    Our only solution now is to put Mutex on Statements accessing
    same tables or tables with foreign constraints but this will
    make our system run very very slow. I dont know if the problem
    is in our Oracle Database because we already upgraded our system
    from 8.1.6 to 8.1.7. The wierd thing on this is that the system
    is running smoothly without oracle errors on a SINGLE PROCESSOR
    Middleware. Hope you can give me any insights on this problem.

  • "Inconsistent cursor cache. Out of range cursor" error on dual processor multi thread

    I have a C++ with Pro*C++ COM object running on a Win2000 OS on
    a dual processor Middleware. The program is being called by a
    service in a multi threaded way. An oracle error like ORA-2103
    and SQL-02103 will be generated after running the program. We've
    tried putting mutex on every SQL statement in Pro*C and it works
    but the systems became very very slow. We concluded that the
    error might be cause by a collision of threads accessing the
    same Table or different tables having foreign constraints. This
    is so because the error keeps coming from a statement accessing
    Table A and following errors comes from a Table B having a
    foreign key on Table A.
    Our only solution now is to put Mutex on Statements accessing
    same tables or tables with foreign constraints but this will
    make our system run very very slow. I dont know if the problem
    is in our Oracle Database because we already upgraded our system
    from 8.1.6 to 8.1.7. The wierd thing on this is that the system
    is running smoothly without oracle errors on a SINGLE PROCESSOR
    Middleware. Hope you can give me any insights on this problem.

    I have a C++ with Pro*C++ COM object running on a Win2000 OS on
    a dual processor Middleware. The program is being called by a
    service in a multi threaded way. An oracle error like ORA-2103
    and SQL-02103 will be generated after running the program. We've
    tried putting mutex on every SQL statement in Pro*C and it works
    but the systems became very very slow. We concluded that the
    error might be cause by a collision of threads accessing the
    same Table or different tables having foreign constraints. This
    is so because the error keeps coming from a statement accessing
    Table A and following errors comes from a Table B having a
    foreign key on Table A.
    Our only solution now is to put Mutex on Statements accessing
    same tables or tables with foreign constraints but this will
    make our system run very very slow. I dont know if the problem
    is in our Oracle Database because we already upgraded our system
    from 8.1.6 to 8.1.7. The wierd thing on this is that the system
    is running smoothly without oracle errors on a SINGLE PROCESSOR
    Middleware. Hope you can give me any insights on this problem.

  • ORA-13773: insufficient privileges to select data from the cursor cache

    We are trying to create STS using the below query:
    exec sys.dbms_sqltune.create_sqlset(sqlset_name => 'TEST_STS', -
    sqlset_owner => 'SCOTT');
    The below procedure will load sql starting with 'select /*MY_CRITICAL_SQL*/%' from cursor cache into STS TEST_STS.
    DECLARE
    stscur dbms_sqltune.sqlset_cursor;
    BEGIN
    OPEN stscur FOR
    SELECT VALUE(P)
    FROM TABLE(dbms_sqltune.select_cursor_cache(
    'sql_text like ''select /*MY_CRITICAL_SQL*/%''',
    null, null, null, null, null, null, 'ALL')) P;
    dbms_sqltune.load_sqlset(sqlset_name => 'TEST_STS',
    populate_cursor => stscur,
    sqlset_owner => 'SCOTT');
    END;
    We were getting the following error: ORA-13761: invalid filter
    After granting the below privileges to the user we are getting the below error:
    Err msg:
    ERROR at line 1:
    ORA-13773: insufficient privileges to select data from the cursor cache
    ORA-06512: at "SYS.DBMS_SQLTUNE", line 2957
    ORA-06512: at line 10
    For SQL Tuning Sets:
    GRANT ADMINISTER ANY SQL TUNING SET TO scott;
    For Managing SQL Profiles:
    GRANT CREATE ANY SQL PROFILE TO scott;
    GRANT ALTER ANY SQL PROFILE TO scott;
    GRANT DROP ANY SQL PROFILE TO scott;
    For SQL Tuning Advisor:
    GRANT ADVISOR TO scott;
    Others:
    GRANT SELECT ON V_$SQL TO SCOTT;
    GRANT SELECT ON V_$SQLAREA TO SCOTT;
    GRANT SELECT ON V$SQLAREA_PLAN_HASH TO SCOTT;
    GRANT SELECT ON V_$SQLSTATS TO SCOTT;
    grant select on sys.DBA_HIST_BASELINE to SCOTT;
    grant select on sys.DBA_HIST_SQLTEXT to SCOTT;
    grant select on sys.DBA_HIST_SQLSTAT to SCOTT;
    grant select on sys.DBA_HIST_SQLBIND to SCOTT;
    grant select on sys.DBA_HIST_OPTIMIZER_ENV to SCOTT;
    grant select on sys.DBA_HIST_SNAPSHOT to SCOTT;
    Any info from your end to resolve the issue will be of great help.
    Thanks

    What is the alert log reporting. Are you seeing any other errors than these in the alert log too?

  • Help needed, getting ORA-01000: maximum open cursors exceeded

    CJ or anyone that may have come across this problem in the past, I hope that you may be able to help me
    I am trying to implement a function from the Salesforce PHP tool kit that runs against a class that returns a object of ID's that have been updated in a given time frame.
    This is a lot of code. I am sorry for that:
    <?php
    error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
    //Keep the SOAP cache clean
    ini_set("soap.wsdl_cache_enabled","0");
    $delete_count = 0;
    $oracle_deleted = 0;
    //Setup array for local ID's'
    $opportunity_data = array();
    $deleted_data = array();
    //start setup for PL SQL statement
    $strsql = "begin mapsapp.sforce_opp_insert(";
    $strsql .= ":pm_id,";
    $strsql .= ":pm_accountid,";
    $strsql .= ":pm_name,";
    $strsql .= ":pm_description,";
    $strsql .= ":pm_stagename,";
    $strsql .= ":pm_amount,";
    $strsql .= ":pm_probability,";
    $strsql .= ":pm_expectedrevenue,";
    $strsql .= ":pm_closedate,";
    $strsql .= ":pm_type,";
    $strsql .= ":pm_nextstep,";
    $strsql .= ":pm_leadsource,";
    $strsql .= ":pm_isclosed,";
    $strsql .= ":pm_iswon,";
    $strsql .= ":pm_forecastcategory,";
    $strsql .= ":pm_campaignid,";
    $strsql .= ":pm_hasopportunitylineitem,";
    $strsql .= ":pm_pricebook2id,";
    $strsql .= ":pm_ownerid,";
    $strsql .= ":pm_createddate,";
    $strsql .= ":pm_createdbyid,";
    $strsql .= ":pm_lastmodifieddate,";
    $strsql .= ":pm_lastmodifiedbyid,";
    $strsql .= ":pm_systemmodstamp,";
    $strsql .= ":pm_rsm_project_id_score__c,";
    $strsql .= ":pm_lead_fae__c,";
    $strsql .= ":pm_avg_annual_volume__c,";
    $strsql .= ":pm_priority__c,";
    $strsql .= ":pm_design_start_date__c,";
    $strsql .= ":pm_design_proto_date__c,";
    $strsql .= ":pm_production_years__c,";
    $strsql .= ":pm_production_life_months__c,";
    $strsql .= ":pm_production_months__c,";
    $strsql .= ":pm_design_freeze_date__c,";
    $strsql .= ":pm_production_proto_date__c,";
    $strsql .= ":pm_mass_production_date__c,";
    $strsql .= ":pm_fae_status__c,";
    $strsql .= ":pm_fae_assigned_date__c,";
    $strsql .= ":pm_fae_accepted_date__c,";
    $strsql .= ":pm_potential__c,";
    $strsql .= ":pm_fae_reject_reason__c,";
    $strsql .= ":pm_fae_project_complexity__c,";
    $strsql .= ":pm_design_phase__c,";
    $strsql .= ":pm_maxim_id__c,";
    $strsql .= ":pm_project_number__c,";
    $strsql .= ":pm_active__c,";
    $strsql .= ":pm_pivotal_created_by__c,";
    $strsql .= ":pm_manufactured_by__c,";
    $strsql .= ":pm_isdeleted,";
    $strsql .= ":pm_lastactivitydate";
    $strsql .= "); end;";
    //end setup for PL SQL statement
    //include common files
    require_once ('/users/msimonds/public_html/includes/sfdc.inc');
    include_once ('adodb.inc.php');
    $db = ADONewConnection("oci8");
    //connect to Oracle
    $db->Connect('',"database_user","password","dev2");
    //$db->BeginTrans();
    $db->SetFetchMode(ADODB_FETCH_ASSOC);
    if ($db)
        try
            //Set current time to get records from Salesforce
            $currentTime = mktime();
            // assume that update occured within the last 24 hrs.
            $startTime = $currentTime - (60 * 60 * 36); //(seconds * minutes * hours)
            $endTime = $currentTime;
            echo "***** Get Updated Opportunities from the last 24 hours *****<br />";
            $getUpdateddResponse = $client->getUpdated('Opportunity',$startTime,$endTime);
            //$getUpdateddResponse->ids = "";
            //echo '<pre>'.print_r($getUpdateddResponse,true).'</pre>';
            //exit;
            $opportunity_data = $getUpdateddResponse->ids;
            if (is_array($opportunity_data) || is_object($opportunity_data))
                set_time_limit(0);
                ini_set("memory_limit","512M");
                //copy data from Object to local array
                //count the number of records coming in from Salesforce
                $record_count = count($opportunity_data);
                echo $record_count;
                exit;
                //echo '<pre>'.print_r($opportunity_data,true).'</pre>';
                //exit;
                //loop through the records
                for ($i = 0; $i < $record_count; $i++)
                    $id = $opportunity_data[$i];
                    //SQL query for Salesforce
                    $soql = "Select Id, IsDeleted, AccountId, Name, Description, StageName, Amount, Probability, ExpectedRevenue, CloseDate, Type, NextStep, LeadSource, IsClosed, IsWon, ForecastCategory, CampaignId, HasOpportunityLineItem, Pricebook2Id, OwnerId, CreatedDate, CreatedById, LastModifiedDate, LastModifiedById, SystemModstamp, LastActivityDate, RSM_Original_Project_ID_Score__c, Lead_FAE__c, Avg_Annual_Volume__c, Priority__c, Design_Start_Date__c, Design_Proto_Date__c, Production_Years__c, Production_Life_months__c, Production_Months__c, Design_Freeze_Date__c, Production_Proto_Date__c, Mass_Production_Date__c, FAE_Status__c, FAE_Assigned_Date__c, FAE_Accepted_Date__c, Project_Potential__c, FAE_Reject_Reason__c, FAE_Project_Complexity__c, Design_Phase__c, maxim_id__c, Project_Number__c, Active__c, Project_Comments__c, Pivotal_Created_By__c, Manufactured_By__c FROM Opportunity WHERE Id = '{$id}'";
                    //setup query to local Oracle MAPS database
                    $get_oracle_record = query_db($id,$db);
                    if ($get_oracle_record)
                        $sql = "DELETE FROM sforce_opportunity WHERE ID = '{$id}'";
                        if ($db->Execute($sql)) ;
                            $insert_records = get_records($client,$soql);
                    else
                        $insert_records = get_records($client,$soql);
                    foreach ($insert_records as $r)
                        $pass_this['id'] = $id;
                        $pass_this['accountid'] = (string )$r->fields->AccountId;
                        $pass_this['name'] = (string )$r->fields->Name;
                        $pass_this['description'] = (string )$r->fields->Description;
                        $pass_this['stagename'] = (string )$r->fields->StageName;
                        $pass_this['amount'] = (int)$r->fields->Amount;
                        $pass_this['probability'] = (int)$r->fields->Probability;
                        $pass_this['expectedrevenue'] = (int)$r->fields->ExpectedRevenue;
                        $pass_this['closedate'] = (string )$r->fields->CloseDate;
                        $pass_this['type'] = (string )$r->fields->Type;
                        $pass_this['nextstep'] = (string )$r->fields->NextStep;
                        $pass_this['leadsource'] = (string )$r->fields->LeadSource;
                        $pass_this['isclosed'] = (string )$r->fields->IsClosed;
                        $pass_this['iswon'] = (string )$r->fields->IsWon;
                        $pass_this['forecastcategory'] = (string )$r->fields->ForecastCategory;
                        $pass_this['campaignid'] = (string )$r->fields->CampaignId;
                        $pass_this['hasopportunitylineitem'] = (string )$r->fields->HasOpportunityLineItem;
                        $pass_this['pricebook2id'] = $r->fields->Pricebook2Id;
                        $pass_this['ownerid'] = $r->fields->OwnerId;
                        $pass_this['createddate'] = (string )$r->fields->CreatedDate;
                        $pass_this['createdbyid'] = (string )$r->fields->CreatedById;
                        $pass_this['lastmodifieddate'] = (string )$r->fields->LastModifiedDate;
                        $pass_this['lastmodifiedbyid'] = (string )$r->fields->LastModifiedById;
                        $pass_this['systemmodstamp'] = (string )$r->fields->SystemModstamp;
                        $pass_this['rsm_project_id_score__c'] = (int)$r->fields->RSM_Original_Project_ID_Score__c;
                        $pass_this['lead_fae__c'] = (string )$r->fields->Lead_FAE__c;
                        $pass_this['avg_annual_volume__c'] = (int)$r->fields->Avg_Annual_Volume__c;
                        $pass_this['priority__c'] = (string )$r->fields->Priority__c;
                        $pass_this['design_start_date__c'] = (string )$r->fields->Design_Start_Date__c;
                        $pass_this['design_proto_date__c'] = (string )$r->fields->Design_Proto_Date__c;
                        $pass_this['production_years__c'] = (int)$r->fields->Production_Years__c;
                        $pass_this['production_life_months__c'] = (int)$r->fields->Production_Life_months__c;
                        $pass_this['production_months__c'] = (int)$r->fields->Production_Months__c;
                        $pass_this['design_freeze_date__c'] = (string )$r->fields->Design_Freeze_Date__c;
                        $pass_this['production_proto_date__c'] = (string )$r->fields->Production_Proto_Date__c;
                        $pass_this['mass_production_date__c'] = (string )$r->fields->Mass_Production_Date__c;
                        $pass_this['fae_status__c'] = (string )$r->fields->FAE_Status__c;
                        $pass_this['fae_assigned_date__c'] = (string )$r->fields->FAE_Assigned_Date__c;
                        $pass_this['fae_accepted_date__c'] = (string )$r->fields->FAE_Accepted_Date__c;
                        $pass_this['project_potential__c'] = (int)$r->fields->Project_Potential__c;
                        $pass_this['fae_reject_reason__c'] = (string )$r->fields->FAE_Reject_Reason__c;
                        $pass_this['fae_project_complexity__c'] = (string )$r->fields->FAE_Project_Complexity__c;
                        $pass_this['design_phase__c'] = (string )$r->fields->Design_Phase__c;
                        $pass_this['maxim_id__c'] = (string )$r->fields->maxim_id__c;
                        $pass_this['objective_status_next_qtr__c'] = (string )$r->fields->Objective_Status_Next_Qtr__c;
                        $pass_this['quality_of_relationship__c'] = (string )$r->fields->Quality_of_Relationship__c;
                        $pass_this['targeted_po_date__c'] = (string )$r->fields->Targeted_PO_Date__c;
                        $pass_this['part_no_involved__c'] = (string )$r->fields->Part_No_Involved__c;
                        $pass_this['first_po_number__c'] = (string )$r->fields->First_PO_Number__c;
                        $pass_this['lost_reason__c'] = (string )$r->fields->Lost_Reason__c;
                        $pass_this['fae_estimate_of_business__c'] = (string )$r->fields->FAE_Estimate_of_Business__c;
                        $pass_this['digital_processor__c'] = (string )$r->fields->Digital_Processor__c;
                        $pass_this['project_number__c'] = (string )$r->fields->Project_Number__c;
                        $pass_this['active__c'] = (string )$r->fields->Active__c;
                        $pass_this['pivotal_created_by__c'] = (string )$r->fields->Pivotal_Created_By__c;
                        $pass_this['manufactured_by__c'] = (string )$r->fields->Manufactured_By__c;
                        $pass_this['isdeleted'] = (string )$r->fields->IsDeleted;
                        $pass_this['lastactivitydate'] = (string )$r->fields->LastActivityDate;
                        $pass_this['optocon_id__c'] = (string )$r->fields->OptoCon_ID__c;
                        if (strlen($pass_this['description']) == 0)
                            $pass_this['description'] = "No Description Posted";
                        else
                            $pass_this['description'] = $pass_this['description'];
                    //echo '<pre>'.print_r($pass_this,true).'</pre>';
                    //exit;
                    $record_inserted = insert_record($pass_this,$strsql,$db);
                    if (!$record_inserted)
                        //mail('[email protected]','insert error','There was a proble trying to insert a record into the database');
            else
                echo "Nothing here";
                //exit;
            //add back in once replication is done
            //get deleted records from the Opportunity
            $getDeletedResponse = $client->getDeleted('Opportunity',$startTime,$endTime);
            //echo '<pre>'.print_r($getDeletedResponse,true).'</pre>';
            //exit;
            $deleted_ids = $getDeletedResponse->deletedRecords;
            //echo '<pre>'.print_r($deleted_ids,true).'</pre>';
            if (is_object($deleted_ids))
                $temp_array[] = $deleted_ids;
                unset($deleted_ids);
                $deleted_ids = $temp_array;
            $delete_count = count($deleted_ids);
            //echo $delete_count;
            for ($i = 0; $i < $delete_count; $i++)
                $d_id = $deleted_ids[$i];
                $id = $d_id->id;
                if (query_db($id,$db))
                    $delete_sql = "Delete from sforce_opportunity WHERE ID = '{$id}'";
                    $oracle_deleted++;
                    if ($db->Execute($delete_sql))
                        echo "<font color=\"#0000FF\">".$id." was removed from the Oracle database</font><br />";
                else
                    echo $id." is not in the Oracle database<br />";
            echo $oracle_deleted." records were deleted from Oracle";
        catch (exception $e)
            $error = '<pre>'.print_r($e,true).'</pre>';
            mail('[email protected]','insert error',$error);
    $db->CommitTrans();
    $db->Close();
    exit;
    function insert_record($pass_this,$strsql,&$db)
        //Prepares PL/SQL Statement
        $stmt = $db->Prepare($strsql);
        $db->InParameter($stmt,$pass_this['id'],'pm_id');
        $db->InParameter($stmt,$pass_this['accountid'],'pm_accountid');
        $db->InParameter($stmt,$pass_this['name'],'pm_name');
        $db->InParameter($stmt,$pass_this['description'],'pm_description',-1,OCI_B_CLOB);
        $db->InParameter($stmt,$pass_this['stagename'],'pm_stagename');
        $db->InParameter($stmt,$pass_this['amount'],'pm_amount');
        $db->InParameter($stmt,$pass_this['probability'],'pm_probability');
        $db->InParameter($stmt,$pass_this['expectedrevenue'],'pm_expectedrevenue');
        $db->InParameter($stmt,$pass_this['closedate'],'pm_closedate');
        $db->InParameter($stmt,$pass_this['type'],'pm_type');
        $db->InParameter($stmt,$pass_this['nextstep'],'pm_nextstep');
        $db->InParameter($stmt,$pass_this['leadsource'],'pm_leadsource');
        $db->InParameter($stmt,$pass_this['isclosed'],'pm_isclosed');
        $db->InParameter($stmt,$pass_this['iswon'],'pm_iswon');
        $db->InParameter($stmt,$pass_this['forecastcategory'],'pm_forecastcategory');
        $db->InParameter($stmt,$pass_this['campaignid'],'pm_campaignid');
        $db->InParameter($stmt,$pass_this['hasopportunitylineitem'],'pm_hasopportunitylineitem');
        $db->InParameter($stmt,$pass_this['pricebook2id'],'pm_pricebook2id');
        $db->InParameter($stmt,$pass_this['ownerid'],'pm_ownerid');
        $db->InParameter($stmt,$pass_this['createddate'],'pm_createddate');
        $db->InParameter($stmt,$pass_this['createdbyid'],'pm_createdbyid');
        $db->InParameter($stmt,$pass_this['lastmodifieddate'],'pm_lastmodifieddate');
        $db->InParameter($stmt,$pass_this['lastmodifiedbyid'],'pm_lastmodifiedbyid');
        $db->InParameter($stmt,$pass_this['systemmodstamp'],'pm_systemmodstamp');
        $db->InParameter($stmt,$pass_this['rsm_project_id_score__c'],'pm_rsm_project_id_score__c');
        $db->InParameter($stmt,$pass_this['lead_fae__c'],'pm_lead_fae__c');
        $db->InParameter($stmt,$pass_this['avg_annual_volume__c'],'pm_avg_annual_volume__c');
        $db->InParameter($stmt,$pass_this['priority__c'],'pm_priority__c');
        $db->InParameter($stmt,$pass_this['design_start_date__c'],'pm_design_start_date__c');
        $db->InParameter($stmt,$pass_this['design_proto_date__c'],'pm_design_proto_date__c');
        $db->InParameter($stmt,$pass_this['production_years__c'],'pm_production_years__c');
        $db->InParameter($stmt,$pass_this['production_life_months__c'],'pm_production_life_months__c');
        $db->InParameter($stmt,$pass_this['production_months__c'],'pm_production_months__c');
        $db->InParameter($stmt,$pass_this['design_freeze_date__c'],'pm_design_freeze_date__c');
        $db->InParameter($stmt,$pass_this['production_proto_date__c'],'pm_production_proto_date__c');
        $db->InParameter($stmt,$pass_this['mass_production_date__c'],'pm_mass_production_date__c');
        $db->InParameter($stmt,$pass_this['fae_status__c'],'pm_fae_status__c');
        $db->InParameter($stmt,$pass_this['fae_assigned_date__c'],'pm_fae_assigned_date__c');
        $db->InParameter($stmt,$pass_this['fae_accepted_date__c'],'pm_fae_accepted_date__c');
        $db->InParameter($stmt,$pass_this['project_potential__c'],'pm_potential__c');
        $db->InParameter($stmt,$pass_this['fae_reject_reason__c'],'pm_fae_reject_reason__c');
        $db->InParameter($stmt,$pass_this['fae_project_complexity__c'],'pm_fae_project_complexity__c');
        $db->InParameter($stmt,$pass_this['design_phase__c'],'pm_design_phase__c');
        $db->InParameter($stmt,$pass_this['maxim_id__c'],'pm_maxim_id__c');
        $db->InParameter($stmt,$pass_this['project_number__c'],'pm_project_number__c');
        $db->InParameter($stmt,$pass_this['active__c'],'pm_active__c');
        $db->InParameter($stmt,$pass_this['pivotal_created_by__c'],'pm_pivotal_created_by__c');
        $db->InParameter($stmt,$pass_this['manufactured_by__c'],'pm_manufactured_by__c');
        $db->InParameter($stmt,$pass_this['isdeleted'],'pm_isdeleted');
        $db->InParameter($stmt,$pass_this['lastactivitydate'],'pm_lastactivitydate');
        //executes and loads data coming from salesforce into table
        if ($db->Execute($stmt))
            echo $pass_this['id']." was inserted into the database<br />";
            flush();
            unset($pass_this);
            unset($stmt);
            return true;
        else
            echo $db->ErrorMsg()."<br>";
            mail('[email protected]','database error',$db->ErrorMsg());
            return false;
    //Get the data from Salesforce to populate Oracle
    function get_records(&$connection,&$query)
        $queryOptions = new QueryOptions(2000);
        $response = new QueryResult($connection->query($query));
        // if the size is zero, where done
        if ($response->size > 0)
            $products = $response->records;
            // Cycles through additional responses if the number of records
            // exceeds the batch size
            while (!$response->done)
                set_time_limit(100);
                $response = $connection->queryMore($response->queryLocator);
                $products = array_merge($products,$response->records);
        return $products;
    function query_db($id,&$db)
        global $db;
        $sql = "SELECT *
                FROM sforce_opportunity
                Where id = '{$id}'";
        $rs = $db->Execute($sql);
        if ($rs && $rs->_numOfRows > 0)
            return true;
        else
            return false;
        exit;
    ?>the code runs fine and I do not commit my inserts until after I am done retrieving all the records, but I am getting the oracle error: ORA-01000: maximum open cursors exceeded
    I am not using any cursors in my PL SQL
    CREATE OR REPLACE PROCEDURE MAPSAPP.sforce_opp_insert (
        pm_id                                               IN     VARCHAR2,
        pm_accountid                                        IN     VARCHAR2,
        pm_name                                             IN     VARCHAR2,
        pm_description                                      IN     VARCHAR2,
        pm_stagename                                        IN     VARCHAR2,
        pm_amount                                           IN     NUMBER,
        pm_probability                                      IN     NUMBER,
        pm_expectedrevenue                                  IN     NUMBER,
        pm_closedate                                        IN     VARCHAR2,
        pm_type                                             IN     VARCHAR2,
        pm_nextstep                                         IN     VARCHAR2,
        pm_leadsource                                       IN     VARCHAR2,
        pm_isclosed                                         IN     VARCHAR2,
        pm_iswon                                            IN     VARCHAR2,
        pm_forecastcategory                                 IN     VARCHAR2,
        pm_campaignid                                       IN     VARCHAR2,
        pm_hasopportunitylineitem                           IN     VARCHAR2,
        pm_pricebook2id                                     IN     VARCHAR2,
        pm_ownerid                                          IN     VARCHAR2,
        pm_createddate                                      IN     VARCHAR2,
        pm_createdbyid                                      IN     VARCHAR2,
        pm_lastmodifieddate                                 IN     VARCHAR2,
        pm_lastmodifiedbyid                                 IN     VARCHAR2,
        pm_systemmodstamp                                   IN     VARCHAR2,
        pm_rsm_project_id_score__c                          IN     VARCHAR2,
        pm_lead_fae__c                                      IN     VARCHAR2,
        pm_avg_annual_volume__c                             IN     VARCHAR2,
        pm_priority__c                                      IN     VARCHAR2,
        pm_design_start_date__c                             IN     VARCHAR2,
        pm_design_proto_date__c                             IN     VARCHAR2,
        pm_production_years__c                              IN     NUMBER,
        pm_production_life_months__c                        IN     NUMBER,
        pm_production_months__c                             IN     NUMBER,
        pm_design_freeze_date__c                            IN     VARCHAR2,
        pm_production_proto_date__c                         IN     VARCHAR2,
        pm_mass_production_date__c                          IN     VARCHAR2,
        pm_fae_status__c                                    IN     VARCHAR2,
        pm_fae_assigned_date__c                             IN     VARCHAR2,
        pm_fae_accepted_date__c                             IN     VARCHAR2,
        pm_potential__c                                     IN     NUMBER,
        pm_fae_reject_reason__c                             IN     VARCHAR2,
        pm_fae_project_complexity__c                        IN     VARCHAR2,
        pm_design_phase__c                                  IN     VARCHAR2,
        pm_maxim_id__c                                      IN     VARCHAR2,
        pm_project_number__c                                IN     VARCHAR2,
        pm_active__c                                        IN     VARCHAR2,
        pm_pivotal_created_by__c                            IN     VARCHAR2,
        pm_manufactured_by__c                               IN     VARCHAR2,
        pm_isdeleted                                        IN     VARCHAR2,
        pm_lastactivitydate                                 IN     VARCHAR2
    IS
    BEGIN
       INSERT INTO SFORCE_OPPORTUNITY
                   (id,
                    accountid,
                    name,
                    description,
                    stagename,
                    amount,
                    probability,
                    expectedrevenue,
                    closedate,
                    type,
                    nextstep,
                    leadsource,
                    isclosed,
                    iswon,
                    forecastcategory,
                    campaignid,
                    hasopportunitylineitem,
                    pricebook2id,
                    ownerid,
                    createddate,
                    createdbyid,
                    lastmodifieddate,
                    lastmodifiedbyid,
                    systemmodstamp,
                    rsm_project_id_score__c,
                    lead_fae__c,
                    avg_annual_volume__c,
                    priority__c,
                    design_start_date__c,
                    design_proto_date__c,
                    production_years__c,
                    production_life_months__c,
                    production_months__c,
                    design_freeze_date__c,
                    production_proto_date__c,
                    mass_production_date__c,
                    fae_status__c,
                    fae_assigned_date__c,
                    fae_accepted_date__c,
                    project_potential__c,
                    fae_reject_reason__c,
                    fae_project_complexity__c,
                    design_phase__c,
                    maxim_id__c,
                    project_number__c,
                    active__c,
                    pivotal_created_by__c,
                    manufactured_by__c,
                    isdeleted,
                    lastactivitydate
            VALUES (pm_id,
                    pm_accountid,
                    pm_name,
                    pm_description,
                    pm_stagename,
                    pm_amount,
                    pm_probability,
                    pm_expectedrevenue,
                    TO_DATE (SUBSTR (REPLACE (pm_closedate, 'T', ' '), 1, 19),'YYYY-MM-DD HH24:MI:SS'),
                    pm_type,
                    pm_nextstep,
                    pm_leadsource,
                    pm_isclosed,
                    pm_iswon,
                    pm_forecastcategory,
                    pm_campaignid,
                    pm_hasopportunitylineitem,
                    pm_pricebook2id,
                    pm_ownerid,
                    TO_DATE (SUBSTR (REPLACE (pm_createddate, 'T', ' '), 1, 19),'YYYY-MM-DD HH24:MI:SS'),
                    pm_createdbyid,
                    TO_DATE (SUBSTR (REPLACE (pm_lastmodifieddate, 'T', ' '), 1, 19),'YYYY-MM-DD HH24:MI:SS'),
                    pm_lastmodifiedbyid,
                    TO_DATE (SUBSTR (REPLACE (pm_systemmodstamp, 'T', ' '), 1, 19),'YYYY-MM-DD HH24:MI:SS'),
                    pm_rsm_project_id_score__c,
                    pm_lead_fae__c,
                    pm_avg_annual_volume__c,
                    pm_priority__c,
                    TO_DATE (SUBSTR (REPLACE (pm_design_start_date__c, 'T', ' '), 1, 19),'YYYY-MM-DD HH24:MI:SS'),
                    TO_DATE (SUBSTR (REPLACE (pm_design_proto_date__c, 'T', ' '), 1, 19),'YYYY-MM-DD HH24:MI:SS'),
                    pm_production_years__c,
                    pm_production_life_months__c,
                    pm_production_months__c,
                    TO_DATE (SUBSTR (REPLACE (pm_design_freeze_date__c, 'T', ' '), 1, 19),'YYYY-MM-DD HH24:MI:SS'),
                    TO_DATE (SUBSTR (REPLACE (pm_production_proto_date__c, 'T', ' '), 1, 19),'YYYY-MM-DD HH24:MI:SS'),
                    TO_DATE (SUBSTR (REPLACE (pm_mass_production_date__c, 'T', ' '), 1, 19),'YYYY-MM-DD HH24:MI:SS'),
                    pm_fae_status__c,
                    TO_DATE (SUBSTR (REPLACE (pm_fae_assigned_date__c, 'T', ' '), 1, 19),'YYYY-MM-DD HH24:MI:SS'),
                    TO_DATE (SUBSTR (REPLACE (pm_fae_accepted_date__c, 'T', ' '), 1, 19),'YYYY-MM-DD HH24:MI:SS'),
                    pm_potential__c,
                    pm_fae_reject_reason__c,
                    pm_fae_project_complexity__c,
                    pm_design_phase__c,
                    pm_maxim_id__c,
                    pm_project_number__c,
                    pm_active__c,
                    pm_pivotal_created_by__c,
                    pm_manufactured_by__c,
                    pm_isdeleted,
                    TO_DATE (SUBSTR (REPLACE (pm_lastactivitydate, 'T', ' '), 1, 19),'YYYY-MM-DD HH24:MI:SS')
    END sforce_opp_insert;
    /I was wondering anyone has seen this before
    TIA,
    Mike

    The code below is deleting fine. Check your $id is valid. I wonder if ADOdb has some quirks with binding and variable creation/destruction, similar to #1 in http://www.oracle.com/technology/tech/php/htdocs/php_troubleshooting_faq.html#bindvars
    <?php
    See ADOdb Tutorial for Oracle: http://phplens.com/lens/adodb/docs-oracle.htm
    drop table mytab;
    create table mytab (city varchar2(20), country_id varchar2(20));
    insert into mytab values ('SF', 'US');
    insert into mytab values ('Sydney', 'AU');
    insert into mytab values ('London', 'UK');
    commit;
    require_once("/home/cjones/public_html/php/adodb5/adodb.inc.php");
    $db = ADONewConnection("oci8");
    $db->Connect("//localhost/XE", "hr", "hrpwd");
    echo "Before:\n";
    $rs = $db->Execute("select city from mytab");
    while ($arr = $rs->FetchRow()) {
        echo $arr['CITY'] . "\n";
    $s = $db->Prepare("delete from mytab where country_id = :ci");
    $db->Parameter($s, $ci, 'ci');
    foreach (array('US', 'AU') as $ci) {
         $db->Execute($s);
    echo "After:\n";
    $rs = $db->Execute("select city from mytab");
    while ($arr = $rs->FetchRow()) {
        echo $arr['CITY'] . "\n";
    ?>There's another sample in the ADOdb OCI8 driver:
              Usage:
                   $stmt = $DB->Prepare("insert into table (col0, col1, col2) values (:0, :1, :2)");
                   $DB->Bind($stmt, $p1);
                   $DB->Bind($stmt, $p2);
                   $DB->Bind($stmt, $p3);
                   for ($i = 0; $i < $max; $i++) {     
                        $p1 = ?; $p2 = ?; $p3 = ?;
                        $DB->Execute($stmt);
                   }For queries I know this works. I haven't seen any examples that prepare once.
    $rs = $db->Execute("select city from mytab where country_id = :ci", array('ci' => 'UK'));
    while ($arr = $rs->FetchRow()) {
        echo $arr['CITY'] . "<br>\n";
    }

  • Help!! ORA-01000: maximum open cursors exceeded

    Dear All,
    Here is my software information:
    Platform: WLP7.0sp2
    OS : solaris8
    And I have two connection Pools, their settings are:
    Initial Capacity: 10
    Maximum Capacity: 10
    Capacity Increment: 1
    Login Delay Seconds: 0 seconds
    Refresh Period: 0 minutes
    Shrink Period: 15 minutes
    Prepared Statement Cache Size: 5
    When I start my Weblogic Portal server, it happened the following exceptions:
    java.sql.SQLException: ORA-01000: maximum open cursors exceeded
    ORA-06512: at "SYS.STANDARD", line 1014
    ORA-06512: at "TU_PORTLET_P13N", line 2
    ORA-04088: error during execution of trigger 'TU_PORTLET_P13N'
    at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:169)
    at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:208)
    at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:543)
    at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1405)
    at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteFetch(TTC7Protocol.java:822)
    at oracle.jdbc.driver.OracleStatement.executeNonQuery(OracleStatement.java:1602)
    at oracle.jdbc.driver.OracleStatement.doExecuteOther(OracleStatement.java:1527)
    at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:2045)
    at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:39
    5)
    at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:446)
    at weblogic.jdbc.pool.Statement.execute(Statement.java:274)
    at weblogic.jdbc.rmi.internal.PreparedStatementImpl.execute(PreparedStatementImpl.java:378)
    at weblogic.jdbc.rmi.SerialPreparedStatement.execute(SerialPreparedStatement.java:401)
    at com.bea.portal.manager.internal.persistence.jdbc.JdbcPortalPersistenceHelper.addOrUpdate
    PageP13nPortlets(JdbcPortalPersistenceHelper.java:785)
    at com.bea.portal.manager.internal.persistence.jdbc.JdbcPortalPersistenceHelper.addOrUpdate
    PortalP13nPages(JdbcPortalPersistenceHelper.java:508)
    at com.bea.portal.manager.internal.persistence.jdbc.JdbcPortalPersistenceManager.addOrUpdat
    ePortalPersonalization(JdbcPortalPersistenceManager.java:414)
    at com.bea.portal.manager.internal.persistence.MainPersistenceManager.addOrUpdatePortalPers
    onalization(MainPersistenceManager.java:104)
    at com.bea.portal.manager.internal.PortalPersistenceManager.updatePortalModel(PortalPersist
    enceManager.java:330)
    at com.bea.portal.manager.internal.PortalPersistenceManager.createDataItem(PortalPersistenc
    eManager.java:199)
    at com.bea.p13n.management.data.repository.internal.AbstractDataRepository.handleDataItemMe
    ssage(AbstractDataRepository.java:814)
    at com.bea.p13n.management.data.repository.internal.AbstractDataRepository.onDataSyncMessag
    e(AbstractDataRepository.java:990)
    at com.bea.p13n.management.data.repository.internal.AbstractDataRepository.executeMessage(A
    bstractDataRepository.java:252)
    at com.bea.p13n.management.data.message.internal.JvmCommunicationPipe.sendMessage(JvmCommun
    icationPipe.java:116)
    at com.bea.p13n.management.data.repository.internal.AbstractDataRepository.onSyncRequestRes
    ultMessage(AbstractDataRepository.java:1185)
    at com.bea.p13n.management.data.repository.internal.AbstractDataRepository.executeMessage(A
    bstractDataRepository.java:261)
    at com.bea.p13n.management.data.message.internal.JvmCommunicationPipe.sendMessage(JvmCommun
    icationPipe.java:116)
    at com.bea.p13n.management.data.repository.internal.AbstractDataRepository.onSyncRequestMes
    sage(AbstractDataRepository.java:1086)
    at com.bea.p13n.management.data.repository.internal.AbstractDataRepository.executeMessage(A
    bstractDataRepository.java:257)
    at com.bea.p13n.management.data.message.internal.JvmCommunicationPipe.sendMessage(JvmCommun
    icationPipe.java:116)
    at com.bea.p13n.management.data.repository.internal.AbstractDataRepository.notifyDataReposi
    tory(AbstractDataRepository.java:706)
    at com.bea.p13n.management.data.repository.internal.AbstractDataRepository.onRefreshMessage
    (AbstractDataRepository.java:912)
    at com.bea.p13n.management.data.repository.internal.AbstractDataRepository.executeMessage(A
    bstractDataRepository.java:247)
    at com.bea.p13n.management.data.message.internal.JvmCommunicationPipe.sendMessage(JvmCommun
    icationPipe.java:116)
    at com.bea.p13n.management.data.repository.internal.AbstractDataRepository.sendRefreshMessa
    geToThis(AbstractDataRepository.java:341)
    at com.bea.p13n.management.data.repository.internal.AbstractDataRepository.addNotifiedDataR
    epository(AbstractDataRepository.java:324)
    at com.bea.p13n.management.data.repository.internal.AbstractDataRepository.addNotifiedDataR
    epository(AbstractDataRepository.java:304)
    at com.bea.portal.manager.internal.DeploymentManager.initializePortal(DeploymentManager.jav
    a:142)
    at com.bea.portal.manager.internal.DeploymentManager.initialize(DeploymentManager.java:101)
    at com.bea.portal.manager.internal.PortalManagerDelegateImpl.<init>(PortalManagerDelegateIm
    pl.java:86)
    at com.bea.portal.manager.PortalFactory.createPortalManagerDelegate(PortalFactory.java:248)
    at com.bea.portal.manager.ejb.internal.PortalManagerBean.ejbCreate(PortalManagerBean.java:1
    47)
    Any ideas will be appreciated.
    Robert

    Robert Chao wrote:
    Dear All,
    Here is my software information:
    Platform: WLP7.0sp2
    OS : solaris8
    And I have two connection Pools, their settings are:
    Initial Capacity: 10
    Maximum Capacity: 10
    Capacity Increment: 1
    Login Delay Seconds: 0 seconds
    Refresh Period: 0 minutes
    Shrink Period: 15 minutes
    Prepared Statement Cache Size: 5Hi. You should either configure your DBMS to allow more open cursors per connection,
    or you can try setting the prepared statement cache size to zero.
    Joe
    >
    When I start my Weblogic Portal server, it happened the following exceptions:
    java.sql.SQLException: ORA-01000: maximum open cursors exceeded
    ORA-06512: at "SYS.STANDARD", line 1014
    ORA-06512: at "TU_PORTLET_P13N", line 2
    ORA-04088: error during execution of trigger 'TU_PORTLET_P13N'
    at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:169)
    at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:208)
    at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:543)
    at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1405)
    at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteFetch(TTC7Protocol.java:822)
    at oracle.jdbc.driver.OracleStatement.executeNonQuery(OracleStatement.java:1602)
    at oracle.jdbc.driver.OracleStatement.doExecuteOther(OracleStatement.java:1527)
    at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:2045)
    at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:39
    5)
    at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:446)
    at weblogic.jdbc.pool.Statement.execute(Statement.java:274)
    at weblogic.jdbc.rmi.internal.PreparedStatementImpl.execute(PreparedStatementImpl.java:378)
    at weblogic.jdbc.rmi.SerialPreparedStatement.execute(SerialPreparedStatement.java:401)
    at com.bea.portal.manager.internal.persistence.jdbc.JdbcPortalPersistenceHelper.addOrUpdate
    PageP13nPortlets(JdbcPortalPersistenceHelper.java:785)
    at com.bea.portal.manager.internal.persistence.jdbc.JdbcPortalPersistenceHelper.addOrUpdate
    PortalP13nPages(JdbcPortalPersistenceHelper.java:508)
    at com.bea.portal.manager.internal.persistence.jdbc.JdbcPortalPersistenceManager.addOrUpdat
    ePortalPersonalization(JdbcPortalPersistenceManager.java:414)
    at com.bea.portal.manager.internal.persistence.MainPersistenceManager.addOrUpdatePortalPers
    onalization(MainPersistenceManager.java:104)
    at com.bea.portal.manager.internal.PortalPersistenceManager.updatePortalModel(PortalPersist
    enceManager.java:330)
    at com.bea.portal.manager.internal.PortalPersistenceManager.createDataItem(PortalPersistenc
    eManager.java:199)
    at com.bea.p13n.management.data.repository.internal.AbstractDataRepository.handleDataItemMe
    ssage(AbstractDataRepository.java:814)
    at com.bea.p13n.management.data.repository.internal.AbstractDataRepository.onDataSyncMessag
    e(AbstractDataRepository.java:990)
    at com.bea.p13n.management.data.repository.internal.AbstractDataRepository.executeMessage(A
    bstractDataRepository.java:252)
    at com.bea.p13n.management.data.message.internal.JvmCommunicationPipe.sendMessage(JvmCommun
    icationPipe.java:116)
    at com.bea.p13n.management.data.repository.internal.AbstractDataRepository.onSyncRequestRes
    ultMessage(AbstractDataRepository.java:1185)
    at com.bea.p13n.management.data.repository.internal.AbstractDataRepository.executeMessage(A
    bstractDataRepository.java:261)
    at com.bea.p13n.management.data.message.internal.JvmCommunicationPipe.sendMessage(JvmCommun
    icationPipe.java:116)
    at com.bea.p13n.management.data.repository.internal.AbstractDataRepository.onSyncRequestMes
    sage(AbstractDataRepository.java:1086)
    at com.bea.p13n.management.data.repository.internal.AbstractDataRepository.executeMessage(A
    bstractDataRepository.java:257)
    at com.bea.p13n.management.data.message.internal.JvmCommunicationPipe.sendMessage(JvmCommun
    icationPipe.java:116)
    at com.bea.p13n.management.data.repository.internal.AbstractDataRepository.notifyDataReposi
    tory(AbstractDataRepository.java:706)
    at com.bea.p13n.management.data.repository.internal.AbstractDataRepository.onRefreshMessage
    (AbstractDataRepository.java:912)
    at com.bea.p13n.management.data.repository.internal.AbstractDataRepository.executeMessage(A
    bstractDataRepository.java:247)
    at com.bea.p13n.management.data.message.internal.JvmCommunicationPipe.sendMessage(JvmCommun
    icationPipe.java:116)
    at com.bea.p13n.management.data.repository.internal.AbstractDataRepository.sendRefreshMessa
    geToThis(AbstractDataRepository.java:341)
    at com.bea.p13n.management.data.repository.internal.AbstractDataRepository.addNotifiedDataR
    epository(AbstractDataRepository.java:324)
    at com.bea.p13n.management.data.repository.internal.AbstractDataRepository.addNotifiedDataR
    epository(AbstractDataRepository.java:304)
    at com.bea.portal.manager.internal.DeploymentManager.initializePortal(DeploymentManager.jav
    a:142)
    at com.bea.portal.manager.internal.DeploymentManager.initialize(DeploymentManager.java:101)
    at com.bea.portal.manager.internal.PortalManagerDelegateImpl.<init>(PortalManagerDelegateIm
    pl.java:86)
    at com.bea.portal.manager.PortalFactory.createPortalManagerDelegate(PortalFactory.java:248)
    at com.bea.portal.manager.ejb.internal.PortalManagerBean.ejbCreate(PortalManagerBean.java:1
    47)
    Any ideas will be appreciated.
    Robert

  • Cannot figure out why "ORA-01000 Maximum open cursors" is shown...

    Hello there ...
    I am programming a PL/SQL Code that is throwing 0RA-01000 Maximum Open Cursors Exceeded.
    Having already read quite a lot about ORA-01000 errors, I know I should be closing cursors, and have already tried setting OPEN_CURSORS parameter to a high number (1000).
    I declared a lot of procedures in my pl/sql, each of which uses one cursor since i am working with a non-Oracle table linked by ODBC ... and each procedure sometimes does thousands of inserts -- but all WITHIN the explicit cursors. The explicit cursors are not declared within each loop.
    I already checked the code many times, and made sure all open cursors are closed. In addition, I also verified the numberopen cursors generated by the PL/SQL by running the following SQL after every procedure i run... and outputting it... and it appears the value just keeps on increasing, even though I had explicitly closed all the cursors in all the earlier procedures.
    What is funny is that the most number of cursors reported by the code below only hits 150+ cursors. Nowhere near the 1000 open_cursors limit per session.
    select a.value into strtxt --, b.name        
            from v$mystat a, v$statname b
            where a.statistic# = b.statistic#
            and a.statistic#= 3;When I run the procedures separately though, all the procedures run smoothly (even when I had not yet updated the open_cursors parameter).
    I was thinking of the following, but maybe you have some other ideas?
    Does this have anything to do with my procedures not being stored procedures?
    Or should i be committing records within my procedures instead of out of it?
    I really have run into a wall and would really appreciate any tips or helps on this. Thanks in advance!
    My basic pl/sql code looks like below. I did not give the actual details cause it will be too long (up to 5000 lines).
    DECLARE
    PROCEDURE proc1
    IS
        CURSOR cur_hca
           is
               select ...from..where;
       TYPE cur_hca_fetch
            Is TABLE OF cur_hca%ROWTYPE
                INDEX BY PLS_INTEGER;
        temp_collect cur_hca_fetch;
    BEGIN
       open cur_hca;         --cur_hca is the cursor name.
                                      --i use exactly the same cursor name in the other procedures
          loop
             fetch cur_hca bulk collect into temp_collect LIMIT 1000;
             exit when temp_collect.count=0
             for indx in 1 .. temp_collect.count
                loop
                  ...run some sql
                end loop;
          end loop;
      close cur_hca;
    END proc1;
    PROCEDURE proc2   --almost the same as above the only changes are the query for the
                                 -- cursor and the sql that happens for each record
    IS
    BEGIN
       open cur_hca;         --cur_hca is my cursor name
          loop
          end loop;
      close cur_hca;
    END proc2;
    ... up to 40 other very similar procedures
    BEGIN
       proc1;
       commit;
       select a.value into strtxt
            from v$mystat a, v$statname b
            where a.statistic# = b.statistic#
            and a.statistic#= 3;
      DBMS_OUTPUT.PUT_LINE('Number of Cursors After STATUSproc1: ' || strtxt); 
       proc2;
       commit;
       select a.value into strtxt
            from v$mystat a, v$statname b
            where a.statistic# = b.statistic#
            and a.statistic#= 3;
       DBMS_OUTPUT.PUT_LINE('Number of Cursors After STATUSproc2: ' || strtxt); 
       ... 40 other procedures
    END;Edited by: user4872285 on May 6, 2013 6:49 PM
    Edited by: user4872285 on May 6, 2013 7:01 PM
    Edited by: user4872285 on May 6, 2013 8:02 PM
    Edited by: user4872285 on May 6, 2013 8:03 PM

    PL/SQL code usually leaks reference cursors and DBMS_SQL cursors - as the ref cursor/DBMS_SQL interface used has a global (session static) scope.
    PL/SQL has an intelligent garbage collector that will close local implicit and explicit cursors, when the cursor variable goes out of scope.
    If you define an explicit cursor globally (package interface), then it can only be opened once. The 2nd attempt results in a ORA-06511: PL/SQL: cursor already open exception. So code cannot leak explicit cursors as code cannot reopen an existing opened explicit cursor.
    I have never seen Oracle leaking cursors internally. So I would be hesitant to call what you are seeing, a bug. If your code is using explicit cursors (even static/global ones), your code cannot leak these cursors, even if your code does not close them. Worse case - the cursor remains open, however new copies cannot be created while it is open.
    So I think your are looking at the wrong thing - explicit cursors. These are not the cursors that are leaking in my view (simply because code cannot reuse and open an already opened explicit cursor). Here is an example:
    SQL> show parameter cursors
    NAME                                 TYPE        VALUE
    open_cursors                         integer     300
    session_cached_cursors               integer     50
    // procedure that seems to "leak" an explicit cursor handle
    // as it does not explicitly closes the handle
    SQL> create or replace procedure CursorUse is
      2          cursor c is select e.* from emp e;
      3          empRow  emp%RowType;
      4  begin
      5          open c;
      6          fetch c into empRow;
      7          --// not closing explicit cursor handle
      8          --// and going out-of-scope
      9  end;
    10  /
    Procedure created.
    // current session stats
    SQL> select b.name, a.value from v$mystat a, v$statname b where a.statistic# = b.statistic# and b.name like '%open%cursor%';
    NAME                                  VALUE
    opened cursors cumulative                91
    opened cursors current                    2
    // execute proc that "leaks" a cursor, 10000 times
    SQL> begin
      2          for i in 1..10000 loop
      3                  CursorUse;
      4          end loop;
      5  end;
      6  /
    PL/SQL procedure successfully completed.
    // no errors due to cursor leakage
    // session stats: no cursor leakage occurred as
    // PL/SQL's garbage collector cleaned (and closed)
    // cursor handles when these became out-of-scope
    SQL> select b.name, a.value from v$mystat a, v$statname b where a.statistic# = b.statistic# and b.name like '%open%cursor%';
    NAME                                  VALUE
    opened cursors cumulative            10,095
    opened cursors current                    2
    SQL> So the cursor leakage you are seeing is caused by something else... so what else is part of the code, or the session, that you have not yet mentioned?

  • ORA-01000: maximum open cursors exceeded

    I ran into this Too many Open Cursors Issue
    My environment is
    WebLogic 6.1 SP2
    Oracle 8.1.7.3.0
    JDBC Thin Driver
    WebLogic Connection Pools
    Tried all the solutions given in the news group for issues, none seemed to work,
    so deviced a work around.
    just wanted to know if there is a better solution that works.
    or else we will go ahead with the workaround...
    Explanation follows...
    When we work with the weblogic connection pool
    Using the WebLogic Pool Driver, we ask for a connection from Weblogic connection
    pool.
    WebLogic connection pool uses the Oracle Driver to connect to the Oracle Database.
    creates a connection and provides it to us.
    as we work with this connection, we create prepared statements, execute them etc.
    etc. and this will create cursors in the oracle database.
    now when we close the connection from our program, what gets closed is the connection
    created between our program and the WebLogic Connection Pool
    but the connection between the WebLogic Connection Pool and the Oracle database still
    remains open, well, there is nothing wrong in that after all that is how connection
    pool has to work.
    but the issue here is the open cursors that are cached in oracle when we created
    statements are not closed even after we close the statements and the connections,
    since according to oracle, the connection is still active becuase WebLogic connection
    pool is still maintaining the connection. and oracle will clear that only when the
    connection is closed with it.
    WebLogic pool driver is supposed to clear up the open cursor cache. but i guess it
    is not doing it.
    I did some R&D and tried out the following solutions and they dont seem to solve
    the issue. (Most of them were picked up from the News groups)
    1. Include the latest Oracle type 4 driver in class path before the other classes
    2. Put a Connection.rollback before closing connection
    3. Use the Oracle Driver directly bypassing the Connection Pool. (This works... but
    we cant do that becuase we are using connection pools to handle connection.)
    So I came up with the following work around.
    Whenever a connection is created from oracle, internally the driver creates a session
    with oracle.
    when weblogic pool driver creates a session it uses an ORACLE session parameter SESSION_CACHED_CURSORS
    I guess WebLogic sets it to a high number. But there has to be a parameter which
    we can configure to control this when we create out connection pool. the closest
    parameter was found to be "Prepared Statement Cache Size" but even after making it
    0 it doesnt seem to improve the situation.
    so, to override the SESSION_CACHED_CURSORS in our connection. every time we get a
    connection we have to execute a query to alter the session paramater SESSION_CACHED_CURSORS
    as follows
    woConn = java.sql.DriverManager.getConnection(DCConstants.DC_JDBC_URL);
    try
    Statement woTmpStmt = woConn.createStatement();
    woTmpStmt.execute("ALTER SESSION SET SESSION_CACHED_CURSORS = 0");
    woTmpStmt.close();
    catch(SQLException woSQLEx)
    DCDebug.logInfo("DCDataFactory","Unable to alter session");
    regards
    Gulam

    Hi. If you'e turned off our statement cache (by setting it's size to zero),
    then it's a DBMS-side issue only. When you return a connection to the
    pool (by closing it), we will close any statements and result sets you
    had created but not closed, so we do all we can. In fact if you left
    the connection in an autoCommit(false) mode, we do the rollback for you
    too. Besides setting that DBMS-side option you do with SQL, the only
    other option I see is to configure your DBMS/session info for Oracle,
    to allow more open cursors per connection than you currently allow.
    Joe Weinstein at B.E.A.
    Gulam Dasthagir wrote:
    I ran into this Too many Open Cursors Issue
    My environment is
    WebLogic 6.1 SP2
    Oracle 8.1.7.3.0
    JDBC Thin Driver
    WebLogic Connection Pools
    Tried all the solutions given in the news group for issues, none seemed to work,
    so deviced a work around.
    just wanted to know if there is a better solution that works.
    or else we will go ahead with the workaround...
    Explanation follows...
    When we work with the weblogic connection pool
    Using the WebLogic Pool Driver, we ask for a connection from Weblogic connection
    pool.
    WebLogic connection pool uses the Oracle Driver to connect to the Oracle Database.
    creates a connection and provides it to us.
    as we work with this connection, we create prepared statements, execute them etc.
    etc. and this will create cursors in the oracle database.
    now when we close the connection from our program, what gets closed is the connection
    created between our program and the WebLogic Connection Pool
    but the connection between the WebLogic Connection Pool and the Oracle database still
    remains open, well, there is nothing wrong in that after all that is how connection
    pool has to work.
    but the issue here is the open cursors that are cached in oracle when we created
    statements are not closed even after we close the statements and the connections,
    since according to oracle, the connection is still active becuase WebLogic connection
    pool is still maintaining the connection. and oracle will clear that only when the
    connection is closed with it.
    WebLogic pool driver is supposed to clear up the open cursor cache. but i guess it
    is not doing it.
    I did some R&D and tried out the following solutions and they dont seem to solve
    the issue. (Most of them were picked up from the News groups)
    1. Include the latest Oracle type 4 driver in class path before the other classes
    2. Put a Connection.rollback before closing connection
    3. Use the Oracle Driver directly bypassing the Connection Pool. (This works... but
    we cant do that becuase we are using connection pools to handle connection.)
    So I came up with the following work around.
    Whenever a connection is created from oracle, internally the driver creates a session
    with oracle.
    when weblogic pool driver creates a session it uses an ORACLE session parameter SESSION_CACHED_CURSORS
    I guess WebLogic sets it to a high number. But there has to be a parameter which
    we can configure to control this when we create out connection pool. the closest
    parameter was found to be "Prepared Statement Cache Size" but even after making it
    0 it doesnt seem to improve the situation.
    so, to override the SESSION_CACHED_CURSORS in our connection. every time we get a
    connection we have to execute a query to alter the session paramater SESSION_CACHED_CURSORS
    as follows
    woConn = java.sql.DriverManager.getConnection(DCConstants.DC_JDBC_URL);
    try
    Statement woTmpStmt = woConn.createStatement();
    woTmpStmt.execute("ALTER SESSION SET SESSION_CACHED_CURSORS = 0");
    woTmpStmt.close();
    catch(SQLException woSQLEx)
    DCDebug.logInfo("DCDataFactory","Unable to alter session");
    regards
    Gulam

  • Error while executing Procedure - ORA-06511: PL/SQL: cursor already open

    I have successfully compiled the following procedure but when I execute it, following error occurs, please adv.
    Thanks and Regards,
    Luqman
    create or replace
    procedure TESTKIBOR
    (contno in varchar)
    AS
    BEGIN
    DECLARE cursor c1 is
    SELECT * FROM KIBOR_SCHEDULE
    WHERE CN=contno;
    begin
    OPEN C1;
    FOR line IN c1 LOOP
    update kibor_schedule
    set lincome=line.Lincome,
    expo=line.eXPO,
    pport=line.pPORT
    where cn=line.cn
    and rno=line.rno;
    END LOOP;
    COMMIT;
    close c1;
    END;
    END TESTKIBOR;
    ERROR at line 1:
    ORA-06511: PL/SQL: cursor already open
    ORA-06512: at "MKTG.TESTKIBOR", line 6
    ORA-06512: at "MKTG.TESTKIBOR", line 10
    ORA-06512: at line 1

    Hi,
    CREATE OR REPLACE PROCEDURE Testkibor
         (contno  IN VARCHAR)
    AS
    BEGIN
      DECLARE
        CURSOR c1 IS
          SELECT *
          FROM   kibor_schedule
          WHERE  cn = contno;
      BEGIN
    --//    OPEN c1; --no need to open if using for loop
        FOR line IN c1 LOOP
          UPDATE kibor_schedule
          SET    lincome = line.lincome,
                 expo = line.expo,
                 pport = line.pport
          WHERE  cn = line.cn
                 AND rno = line.rno;
        END LOOP;
        COMMIT;
    --//     CLOSE c1; -- no need for loop  does it for you
      END;
    END testkibor;SS

  • In java/jsp got Error,ORA-01000: maximum open cursors exceeded,

    Dear ALL,
    We are facing a problem of in java/jsp. ORA-01000: maximum open cursors exceeded,We are using referance Cursor for returing the Record in java file.
    The Code is given below.
    import java.sql.*;
    import javax.sql.*;
    import com.india.trade.dbConnection.*;
    import oracle.jdbc.driver.*;
    import java.util.Vector ;
    public class IntRmsActivity
         private static JDBCConnection instance = null;
    private static Connection con = null;
         private static CallableStatement stmt_admin_getadmins = null;
         private static String str_admin_getadmins = "{ call Admin_conf.RMS_ADMIN_GETALLADMINS(?,?) }";
         static
              try
                   instance = new JDBCConnection();
                   con = instance.getConnection();
                   stmt_admin_getadmins = con.prepareCall(str_admin_getadmins);
    }catch(Exception se){se.printStackTrace();}
         public static Vector admin_getAdmins() throws Exception
              checkconnection();
              String message = null;
              Vector v_admins = new Vector();
              ResultSet rs_admins = null;
              stmt_admin_getadmins.registerOutParameter(1 , OracleTypes.CURSOR);
              stmt_admin_getadmins.registerOutParameter(2 , Types.VARCHAR);
              stmt_admin_getadmins.execute();
              message = stmt_admin_getadmins.getString(2);
              System.out.println("message " + message);
              rs_admins = ((OracleCallableStatement)stmt_admin_getadmins).getCursor(1);
              while (rs_admins.next())
                        v_admins.addElement(rs_admins.getString("adminid"));
              rs_admins.close();
              return v_admins;
    CREATE OR REPLACE PACKAGE Admin_conf IS
    TYPE REF_CRSR IS REF CURSOR; /* OUTPUT CURSOR VARIABLE TYPE */
    PROCEDURE RMS_ADMIN_GETALLADMINS(RESULTS OUT REF_CRSR,
                                            OUT_MESSAGE OUT VARCHAR2);
    END Admin_conf;
    CREATE OR REPLACE PACKAGE BODY Admin_conf
    IS
    PROCEDURE RMS_ADMIN_GETALLADMINS(RESULTS OUT REF_CRSR,
                                            OUT_MESSAGE OUT VARCHAR2)
    IS
    l_ref_out_crsr REF_CRSR;
    BEGIN
         OPEN l_ref_out_crsr FOR
         SELECT EXECUTIVE_ID adminid
         FROM MASTER_EXECUTIVE_ID
         ORDER BY EXECUTIVE_ID;
         OUT_MESSAGE := 'ADMIN IDS FETCHED SUCCESSFULLY';
         RESULTS := l_ref_out_crsr;     
    EXCEPTION WHEN OTHERS THEN
              OUT_MESSAGE := 'ERROR ' || SUBSTR(SQLERRM, 1, 60);
    END RMS_ADMIN_GETALLADMINS;
    END Admin_conf;
    Regards
    Ajay Singh Rathod

    Are you actually closing the connections, resultsets in all cases?
    From what you've posted you call
    rs_admins.close();but in that method, you propagate any exceptions that occur out to the caller method, which in turn just prints a stack trace.
    So if an exception occurs before you call the rs_admin.close() the result set will never be closed as the statement won't be reached.
    I'd add a speific exception handling routine to the admin_getAdmins() method and include a finally clause to close the result set in all cases. You can still onthrow the exception if you want.
    cheers
    -steve-

  • ORA-01000 maximum open cursors exceeded with XA driver

    We are getting ORA-01000 maximum open cursors exceeded error from Oracle database
    agian and again.We are usimg XA driver.
    What is the weblogic's work around to handle this error?How we can handle this?We
    tried doing "grant select on DBA_PENDING_TRANSACTIONS to public ;" ,this also
    works for some time only.Again the same error starts coming.
    Help please.
    Thanx in advance.

    Thanks for your reply.
    I have increased my cursor size to 2000(default 300).We are using weblogic6.1
    and Oracle9i.Yes I was little aware about this bug so I tried doing "grant select
    on DBA_PENDING_TRANSACTIONS to public " from sys and no of open cursors reduced
    drastically but aftter some time increased again.We are using combination of thin,XA,non
    XA and oci drivers.
    We are using weblogic security framework also in our application and I think that
    consumes maximum no. of cursors.
    Kindly advice.
    Thanx a lot.
    Pinky
    Mitesh Patel <[email protected]> wrote:
    What is the size of cusror set in your oracle init.ora file?
    What version of oracle thin driver and weblogic are you using?
    Please read the following note:
    There is a bug with Oracle 817 driver's XAResource.recover implementation:
    it
    ignores the flag and always return all in-doubt Xids. After initially
    calling a resource's recover with TMSTARTRSCAN, TM subsequently calls
    the
    resource's recover with TMNOFLAGS until no more Xid is returned. Thus,
    Oracle driver's XAResource.recover is called infinitely until eventually
    it
    returns XAER_RMERR. Subsequent XAResource.start then returns ORA-01000
    exception (looks like all their XAResource methods internally uses prepared
    statements to execute some stored procedure.)
    Is this the case wth you?
    Mitesh
    Pinky Arora wrote:
    We are getting ORA-01000 maximum open cursors exceeded error from Oracledatabase
    agian and again.We are usimg XA driver.
    What is the weblogic's work around to handle this error?How we canhandle this?We
    tried doing "grant select on DBA_PENDING_TRANSACTIONS to public ;",this also
    works for some time only.Again the same error starts coming.
    Help please.
    Thanx in advance.

  • ORA-01000: maximum open cursors exceeded ORA-06512

    Hi,
    An exception error ccurred as below while trying to map a column.
    Exception oracle.apps.bne.exception.BneSQLException: SQL Exception in BneFlex.validateSegs: java.sql.SQLException: ORA-01000: maximum open cursors exceeded ORA-06512: at "APPS.FND_MESSAGE", line 525 ORA-06512: at "APPS.FND_MESSAGE", line 565 ORA-06512: at "APPS.FND_MESSAGE", line 654 ORA-06512: at "APPS.FND_MESSAGE", line 766 ORA-06512: at "APPS.FND_MESSAGE", line 741 ORA-06512: at "APPS.FND_FLEX_KEYVAL", line 324 ORA-06512: at line 1 occurred trying to map column: Expense Account.
    In alert log file:
    Errors in file /vol01/oracle/SIT/db/tech_st/10.2.0/admin/SIT_sit/udump/sit_ora_7
    04744.trc:
    ORA-07445: exception encountered: core dump [] [] [] [] [] []
    ORA-00604: error occurred at recursive SQL level 1
    ORA-01000: maximum open cursors exceeded
    ORA-01000: maximum open cursors exceeded
    Thanks
    Edited by: userpat on Aug 15, 2010 5:32 AM

    Hi,
    The issue is different this time after restarting application and database find below.
    An exception occured trying to map a column
    Exception java.lang.ArrayIndexOutOfBoundsException:Array index out of range:1
    occured trying to map column:Category
    in bne.log
    8/18/10 12:08 PM AJPRequestHandler-ApplicationServerThread-2 ERROR BneP
    arentMenuResolver.getMenuItem() MENU 101:BUDGET_NOTE - Menu item excluded becaus
    e IntegratorAppId and Code does not match that of the Top-Most Menu Item or curr
    ent Integrator: 140:FA_MASS_ADDITIONSThe same error is reported in Note: 954462.1 (which is referenced above).
    And also let me clear one doubt. v$open_cursors view is used for what?. The total number of count v$open_cursors is 60,000 whereas the parameter is defined only 2000 in the Instance.Cursors Remain Open (in V$OPEN_CURSOR View) after being Closed [ID 1020427.102]
    Monitoring Open Cursors & Troubleshooting ORA-1000 Errors [ID 76684.1]
    V$OPEN_CURSOR
    http://download.oracle.com/docs/cd/B19306_01/server.102/b14237/dynviews_2008.htm#REFRN30166
    Thanks,
    Hussein

Maybe you are looking for