Bug in UpdatableResultSet causes ORA-01747

Hi,
when calling select, it is necessary to put column names colliding with reserved words in double-quotes.
In that case, select works fine, but when the corresponding colum is updated, the latest thin JDBC driver throws an exception in updateRow():
java.lang.RuntimeException: java.sql.SQLException: ORA-01747: invalid user.table.column, table.column, or column specification.
Allways adding the quotes in prepare_updateRow_statement(int _numColsChanged) seems to fix the problem (see below), but it may introduce a new problem with case (in)sensitivity (?) 
original code (guess based on the bytecode):
if(j > 0)
updateSql.append(", ");
updateSql.append(
getInternalMetadata()
.getColumnName(m_idxColsChanged[j] + 1));
updateSql.append(" = ? ");
fixed:
if(j > 0)
updateSql.append(", ");
updateSql.append('"');
updateSql.append(
getInternalMetadata()
.getColumnName(m_idxColsChanged[j] + 1));
updateSql.append("\" = ? ");
I must admit that I am not very happy with the quality and compatibility of the drivers. Yesterday I had to spend a lot of time to figure out that Oracle had taken the freedom to rename the SQL92 standard scalar function "position" to "instr". Of course this would have been a lot easier if the exception would not have said something useful instead of "right parenthesis missing" or "colum not found" (keeping the actual name of the "column" a secret).
Today I had to learn that when calling 'select("*")', it is not possible to move to the insert row. Again, the error message did not say "sorry, we took the freedom not implement moveToInsertRow() for select *" (which at least would have made the workaround obvious), but "table is read only".
Perhaps forcing developers to install two different open source alternatives to distinguish between own bugs, incompatibilities and Oracle issues is not the best idea to keep them loyal.
Best regards
Stefan Haustein

Hi,
when calling select, it is necessary to put column names colliding with reserved words in double-quotes.
In that case, select works fine, but when the corresponding colum is updated, the latest thin JDBC driver throws an exception in updateRow():
java.lang.RuntimeException: java.sql.SQLException: ORA-01747: invalid user.table.column, table.column, or column specification.
Allways adding the quotes in prepare_updateRow_statement(int _numColsChanged) seems to fix the problem (see below), but it may introduce a new problem with case (in)sensitivity (?) 
original code (guess based on the bytecode):
if(j > 0)
updateSql.append(", ");
updateSql.append(
getInternalMetadata()
.getColumnName(m_idxColsChanged[j] + 1));
updateSql.append(" = ? ");
fixed:
if(j > 0)
updateSql.append(", ");
updateSql.append('"');
updateSql.append(
getInternalMetadata()
.getColumnName(m_idxColsChanged[j] + 1));
updateSql.append("\" = ? ");
I must admit that I am not very happy with the quality and compatibility of the drivers. Yesterday I had to spend a lot of time to figure out that Oracle had taken the freedom to rename the SQL92 standard scalar function "position" to "instr". Of course this would have been a lot easier if the exception would not have said something useful instead of "right parenthesis missing" or "colum not found" (keeping the actual name of the "column" a secret).
Today I had to learn that when calling 'select("*")', it is not possible to move to the insert row. Again, the error message did not say "sorry, we took the freedom not implement moveToInsertRow() for select *" (which at least would have made the workaround obvious), but "table is read only".
Perhaps forcing developers to install two different open source alternatives to distinguish between own bugs, incompatibilities and Oracle issues is not the best idea to keep them loyal.
Best regards
Stefan Haustein

Similar Messages

  • Errors ORA-01747 / ORA-00933 ???

    I'm running Oracle 8i on win98.
    When I try to update numbers in a NUMBER(7,3) column with values like 18,48 I get this errormessage:
    ORA-01747: invalid user.table.column-, table.column- or columnspecification
    If I enter numbers without decimals in the same column, I get this error-message:
    ORA-00933: SQL-command incorrectly terminated.
    (both messages are translated from danish)
    What is wrong ?
    Jesper

    all that means..is
    ora-01747
    A column name was specified improperly in the current SQL statement
    ORA-00933: SQL command not properly ended
    Cause: The SQL statement ends with an inappropriate clause. For example, an ORDER BY clause may have been included in a CREATE VIEW or INSERT statement.
    ORDER BY cannot be used to create an ordered view or to insert in a certain order. Also, an improper SQL ending occurs if IN clause is used with only one argument (IN(X),
    for example). An IN clause must have two or more arguments.
    Action: Correct the syntax by removing the inappropriate clauses. It may be possible to duplicate the removed clause with another SQL statement. For example, to order the
    rows of a view, do so when querying the view and not when creating it. This error can also occur in SQL*Forms applications if a continuation line is indented. Check for
    indented lines and delete these spaces.
    these are pretty typicall errors...
    hope this helps
    [email protected]

  • ORA-01747 Error in jsp page

    Hi,
    I am getting Internal Servlet Error:
    javax.servlet.ServletException: SQL error: ORA-01747: invalid
    user.table.column, table.column, or column specification
    <%@ page language="java" %>
    <%@ page import="com.ora.jsp.sql.*" %>
    <%@ page import="com.ora.jsp.util.*" %>
    <%@ page import="sx_gr.beans.*" %>
    <%@ include file="../include/timeoutCheck.jsp" %>
    <%@ taglib uri="/orataglib" prefix="ora" %>
    <%@ include file="../include/dataSource.jsp" %>
    <%      String AX=request.getParameter("AXMonth") + "-" +
                      request.getParameter("AXDay") + "-" +
                      request.getParameter("AXYear");
        String pFlag = "T";
        if (request.getParameter("pFlag") == null)
            pFlag = "T";
    %>
    <ora:sqlTransaction dataSource="senddetail" >
    <ora:sqlUpdate >
            UPDATE Sender  SET   send_Id= ?,Send_Status= ?,AX= ?,
                WHERE   s_id= ?
            <ora:sqlStringValue param="send_Id"/>
            <ora:sqlStringValue param="Send_Status"/>
            <ora:sqlDateValue   stringValue="<%= AX %>" pattern="MON-dd-yyyy" />
    </ora:sqlUpdate>
    <%-- Close the transaction --%>
    </ora:sqlTransaction>Can anyone help me out.?
    I have the privilleges to update too.
    Thanks,
    Aarthy

    Take the last comma out:
    UPDATE Sender SET send_Id= ?,Send_Status= ?,AX= ?,
    should be
    UPDATE Sender SET send_Id= ?,Send_Status= ?,AX= ?
    be sure there's a space between the bind parameter and the WHERE.
    Why use an Oracle tag library when there's JSTL?
    Why have database stuff in a JSP at all? Better to put it in an object and let the JSP be pure view, as it should be.

  • ORA-01747:

    select b.emp_category_id,max(a.basic_salary)
    from m_pis_employee a,m_pis_emp_category b
    where a.emp_category_id=b.emp_category_id
    group by b.emp_category_id;
    this one run successfully...but when i want to group by on all column present in table b then what the syntax. i am written below one but its return a error.there is total 15 column in table b
    select b.*,max(a.basic_salary)
    from m_pis_employee a,m_pis_emp_category b
    where a.emp_category_id=b.emp_category_id
    group by b.*
    ORA-01747: invalid user.table.column, table.column, or column specification.
    plz help me...

    Hi,
    You will have to put all the column names from table m_pis_emp_category in the GROUP BY clause. You cannot use * in thesame.
    Regards
    Ameya

  • ORA-01747 when updating a remote table

    Hi,
    Here is my table :
    SQL> desc infolig2.pylone_type
    Nom NULL ? Type
    PYL_CODE_PYLONE NOT NULL VARCHAR2(32)
    OPY_CODE NOT NULL VARCHAR2(32)
    NPY_CODE NOT NULL VARCHAR2(32)
    PYL_TENS_CONS VARCHAR2(32)
    PYL_NB_TERNE FLOAT(126)
    PYL_HAUT_TOTAL FLOAT(126)
    PYL_HAUT_SS_CONS FLOAT(126)
    PYL_POIDS FLOAT(126)
    PYL_SURFACE_SOL FLOAT(126)
    PYL_SURFACE_PEINTE FLOAT(126)
    PYL_DATE_CREAT NOT NULL DATE
    PYL_DATE_MODIF DATE
    PYL_TYPE_MODIF VARCHAR2(1)
    PYL_CODE_UTIL VARCHAR2(20)
    PYL_DESIGNATION VARCHAR2(50)
    PYL_ETAT VARCHAR2(15)
    PYL_INDICE_REV VARCHAR2(3)
    I need to update it from a remote database.
    So, I run the following procedure :
    set serveroutput on
    declare
    GET_DESIGNATION VARCHAR2(10) := 'AUVERGNE';
    OIP_PYL_CODE_PYLONE VARCHAR2(32) := 'TEST1';
    OIP_OPY_CODE VARCHAR2(32) := 'ORIG3';
    OIP_NPY_CODE VARCHAR2(32) := 'NATPYL2';
    OIP_PYL_TENS_CONS VARCHAR2(32) := null;
    OIP_PYL_NB_TERNE FLOAT := 1;
    OIP_PYL_HAUT_TOTAL FLOAT := null;
    OIP_PYL_HAUT_SS_CONS FLOAT := null;
    OIP_PYL_POIDS FLOAT := null;
    OIP_PYL_SURFACE_SOL FLOAT := null;
    OIP_PYL_SURFACE_PEINTE FLOAT := null;
    OIP_PYL_DATE_CREAT DATE := SYSDATE;
    OIP_PYL_DATE_MODIF DATE := SYSDATE;
    OIP_PYL_TYPE_MODIF VARCHAR2(1) := 'M';
    OIP_PYL_CODE_UTIL VARCHAR2(20) := 'RTE REFERENCE';
    OIP_PYL_DESIGNATION VARCHAR2(50) := 'TEST 1';
    OIP_PYL_ETAT VARCHAR2(15) := 'interdit';
    OIP_PYL_INDICE_REV VARCHAR2(3) := '23';
    OIP_PYL_CODE_PYLONE_SUBST VARCHAR2(32) := 'CODEPYL5';
    begin
    execute immediate 'UPDATE infolig2.PYLONE_TYPE@'||GET_DESIGNATION||' SET
    PYL_CODE_PYLONE = :1,
    OPY_CODE = :2,
    NPY_CODE = :3,
    PYL_TENS_CONS = :4,
    PYL_NB_TERNE = :5,
    PYL_HAUT_TOTAL = :6,
    PYL_HAUT_SS_CONS = :7,
    PYL_POIDS = :8,
    PYL_SURFACE_SOL = :9,
    PYL_SURFACE_PEINTE = :10,
    PYL_DATE_CREAT = :11,
    PYL_DATE_MODIF = :12,
    PYL_TYPE_MODIF = :13,
    PYL_CODE_UTIL = :14,
    PYL_DESIGNATION = :15,
    PYL_ETAT = :16,
    PYL_INDICE_REV = :17,
    WHERE PYL_CODE_PYLONE = :18'
    USING OIP_PYL_CODE_PYLONE,OIP_OPY_CODE,OIP_NPY_CODE,OIP_PYL_TENS_CONS,OIP_PYL_NB_TERNE,OIP_PYL_HAUT_TOTAL,OIP_PYL_HAUT_SS_CONS,OIP_PYL_POIDS,OIP_PYL_SURFACE_SOL,OIP_PYL_SURFACE_PEINTE,OIP_PYL_DATE_CREAT,OIP_PYL_DATE_MODIF,OIP_PYL_TYPE_MODIF,OIP_PYL_CODE_UTIL,OIP_PYL_DESIGNATION,
    upper(translate(OIP_PYL_ETAT,'éè','ee')),OIP_PYL_INDICE_REV, OIP_PYL_CODE_PYLONE_SUBST;
    exception
    when others then
    dbms_output.put_line('ERREUR ORACLE DETECTEE ***');
    dbms_output.put_line('Message Erreur : '||SUBSTR(SQLERRM,1,245));
    end;
    I receive the error :
    ORA-01747: invalid user.table.column, table.column, or columns specification
    What is the problem ?
    Regards,
    Rachel

    This reply was very useful for me. I have written insert scripts in the package where I had put comma after last_updated_date in the insert statement, I got the error -
    ORA-01747: invalid user.table.column, table.column, or column specification . After removing the comma and adding right parenthesis it worked fine
    INSERT INTO CPT_ACTIVITY_SALES (
    WS_DATE,
    ACTIVITY,
    WS_ITEM_HEAD,
    WS_FLAG,
    CREATED_BY,
    CREATED_DATE,
    LAST_UPDATED_BY,
    LAST_UPDATED_DATE,
    (SELECT a.ws_date,
    b.activity,
    C.WS_ITEM_HEAD,
    'N',
    cUser ,
    SYSDATE,
    cUser,
    SYSDATE
    FROM CPT_SALES_LINES a,cpm_category b,CPM_ACTIVITY C
    WHERE a.COMPANY=nCompany
    AND a.SITE=ln_site
    AND a.WS_DATE=ld_ws_date
    AND a.SALES_HEADER_KEY=ln_Sales_header_key
    and B.company=A.company
    and b.category_id=a.category_id
    AND C.COMPANY=A.COMPANY
    AND C.ACTIVITY=B.ACTIVITY)

  • Query to find SQL_ID of statement which causes ORA-1555

    Could you please sent a query to find which SQL_ID/sql stament causes ORA-1555 error.
    Hari

    Look in an AWR report spanning the time frame when it occurred. Number of executions may be blank but the elapsed time will be high.
    You can also find part of the statement and then trace it back.
    http://asktom.oracle.com/pls/asktom/f?p=100:11:1480055079538858::::P11_QUESTION_ID:40115659055475

  • Query to find which past ses caused ORA-1652: unable to extend temp segment

    Hi,
    I m trying to get information on the sessions/sql query that have cause ORA-1652: unable to extend temp segment from past 2 days. Basically need to know which all sessions in past 2 days have caused ORA-1652: unable to extend temp segment.
    I have generated the AWR report but not able to figure it out which sessions caused this error.
    Thanks in advance

    913410 wrote:
    Hi,
    I m trying to get information on the sessions/sql query that have cause ORA-1652: unable to extend temp segment from past 2 days. Basically need to know which all sessions in past 2 days have caused ORA-1652: unable to extend temp segment.
    I have generated the AWR report but not able to figure it out which sessions caused this error.
    Thanks in advance
    01652, 00000, "unable to extend temp segment by %s in tablespace %s"
    // *Cause:  Failed to allocate an extent of the required number of blocks for
    //          a temporary segment in the tablespace indicated.
    // *Action: Use ALTER TABLESPACE ADD DATAFILE statement to add one or more
    //          files to the tablespace indicated.

  • Does RULE hint cause ORA-01555 errors ?

    DB Version:9.2.0.5.0
    OS:SunOS 5.9
    Our DBA is saying that the RULE hint in the below SQL might be causing ORA-01555 error. Is it true? Does RULE hint cause ORA-01555 errors
    SELECT /*+ RULE */  COUNT(*)
      FROM ( SELECT /*+ RULE */  DISTINCT CAR_HDR.CAR_NBR AS A1, CAR_HDR.PLT_ID AS A29,
      CAR_HDR.PKT_CTRL_NBR AS A2, CAR_HDR.TOTAL_QTY AS A21, CAR_HDR.STAT_CODE AS A6,
      CAR_HDR.CURR_LOCN_ID AS A12,
      CAR_HDR.CAR_NBR  AS A145,
      CAR_HDR.WN_NBR AS A4, CAR_HDR.PCALL_NBR AS A7, CAR_HDR.CHAIN_CNT AS A119,
      CAR_HDR.SHPMT_NBR AS A35, LPN_HDR.WHSE AS A105, CAR_HDR.MISC_CAR AS A146, ''  AS A138,
      CAR_HDR.CHUTE_ID AS A132, CAR_HDR.MOD_DATE_TIME AS A82, LPN_HDR.LOCN_CLASS AS A106,
      LPN_HDR.AREA AS A107, LPN_HDR.ZONE AS A108, LPN_HDR.AISLE AS A109, LPN_HDR.BAY AS A110,
      LPN_HDR.LVL AS A111, LPN_HDR.POSN AS A112
          FROM INV_MASTER , CAR_DTL , LPN_HDR , CAR_HDR 
           WHERE CAR_HDR.CAR_NBR=CAR_DTL.CAR_NBR(+)
           AND CAR_HDR.CURR_LOCN_ID=LPN_HDR.LOCN_ID(+)
           AND CAR_HDR.WHSE=LPN_HDR.WHSE(+)
           AND CAR_DTL.SKU_ID=INV_MASTER.SKU_ID(+)
           AND CAR_HDR.CT_SEQ = 'ALB10'
           AND INV_MASTER.INV_CODE = 98
           AND INV_MASTER.TRACK_CODE = 'P10' )
          

    user636669 wrote:
    DB Version:9.2.0.5.0
    OS:SunOS 5.9
    Our DBA is saying that the RULE hint in the below SQL might be causing ORA-01555 error. Is it true? Does RULE hint cause ORA-01555 errorsThe full statement is causing the ORA-01555 error. Each line of the statement is important therefore each line is reponsible for the error. I personally think the DISTINCT keyword has a bigger influence than the RULE hint.
    I suggest to check what you want to do with that count result. maybe there are better ways to get the same result. Maybe you can even ignore the distinct keyword or remove some outer joins. Using the CBO might result in the same plan as using the RBO, so you you will never know if that removing the hint will help or if if you'll get the same problem later again.

  • Report Wizard - Inconsistency causing ORA-01461 - bind a LONG (bug?)

    We have come across an inconsistency in the creation of APEX report region resulting in an error "ORA-01461: can bind a LONG value only for insert into a LONG column"
    I want to share this to either get the attention of someone on the development team to help fix it, or to help someone who is running into the same issue and how to work around it.
    Here are the details:+
    Specs_*
    Latest APEX 4.0.2.00.07
    DB 11.1 and 11.2 confirmed same.
    Process+*
    First - complex nasty query. Fact of life - sometimes it happens. Long with over 4K characters
    Creating a STANDARD report (non interactive) - using the CREATE PAGE wizard or the CREATE REGION wizard, after entering in the SQL, it will throw a simple error page (wwv_flow.accept) showing the error ORA-01461: can bind a LONG value only for insert into a LONG column
    Workaround+*
    Run the same wizard with select * from dual to get the page and region created.
    Once it is created - edit the region - and place the long nasty query in the region source. It will then take and work as expected.
    Other Findings+*
    Originally, we considered it was because of the LENGTH of the query. This proved to be un-true. We were able to run the wizard with a 20,000 character select statement without an issue. We are still investigating, but it is difficult to determine what is going on inside the wizard. The SQL is valid and performs well, even if it is complex.
    Note: Because of placement of bind variables - it does not work well as a view.
    The work around is good to know, but the behavior has been described as "buggy" by some of my developers.
    If anyone is interested in more details, please let me know.
    --Tim                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   

    Thank you for innovating the trick to go around this (bug?) !!!
    rgrds Paavo

  • WITH clause unexpectedly causes ORA-00942 in Reports Builder

    I'm posting this in the hope that:
    a) My workaround might help someone if they ever run into the same problem, and/or,
    b) Someone might have a better workaround.
    The problem is that I get unexpected ORA-00942 (table or view does not exist) errors when I try to set the SQL Query Statement property of a Query object in Reports Builder to certain SELECT statements that contain a WITH clause (aka subquery factoring clause).
    For example, the following SELECT statement executes as expected in SQL*Plus...
    SQL> WITH
      2      SUB_QUERY AS
      3      (
      4          SELECT
      5              1 AS X
      6          FROM
      7              DUAL
      8      )
      9  SELECT
    10      INLINE_VIEW.X
    11  FROM   
    12      (
    13          SELECT
    14              NESTED_INLINE_VIEW.X
    15          FROM
    16              (
    17                  SELECT
    18                      SUB_QUERY.X
    19                  FROM
    20                      SUB_QUERY
    21              ) NESTED_INLINE_VIEW
    22      ) INLINE_VIEW;
             X
             1...but when I try to use it as the SQL Query Statement for a Query object in Reports Builder, I get the following error:
    ORA-00942: table or view does not exist
    ==>SUB_QUERY
    My Reports Builder version is 10.1.2.0.2 version and my database version is 10.2.0.3.0.
    The "real" query I have been trying to use is much more complex than this -- this is just the simplest statement I have been able to come up with that causes the problem. In fact, I have some queries that have a similar structure (a WITH clause subquery referenced inside a nested inline view, along with some other things), but strangely do not cause the problem.
    I spent some time researching the problem on Google and Metalink but did not come up with any satisfactory answers. The problem sounds similar to bug 3896963, but bug 3896963 involved UNION ALL, and is supposedly fixed in my version(s).
    I tried various ways of restructuring my "real" query, but with no success -- it's going to be hard to get rid of the WITH clauses. As a "wild guess", I tried various hints (MATERIALIZE, NO_PUSH_PRED, NO_MERGE), again with no success.
    I ended up working around the problem by creating a database package with a function that returns a REF CURSOR based on the query, and then used that in a REF CURSOR query in Reports Builder. It might not be a very elegant workaround, but it works. I just wish I had "given up" and tried it sooner -- I might have saved myself some grief.

    Well, for what it's worth, I didn't end up using a REF CURSOR query after all because...
    If I ran a REP file based on a REF CURSOR query against a different database, or if I ran the REP file after the database package had been dropped and re-created, it failed with the following error:
    REP-8: Run time error in the PL/SQL development environment (DE).
    PDE-PSD001 Could not resolve reference to <Unknown Program Unit> while loading <Unknown> <Unknown>.
    REP-0008: Unexpected memory error while initializing preferences.
    It seems that Reports "binds" the REP file to the timestamp of the database package that defines the REF CURSOR type in order to validate the package at run time. If the timestamp is different, running the REP file will fail with this error. This is apparently bug 1275333 and is described in Metalink Note 272936.1.
    The bug reference and Metalink Note offerred the following workarounds:
    1. Export the database schema that contains the package from one database and import it into the other.
    In some versions, import and export preserve the timestamp, so this would avoid the problem. I didn't try this because it would not be a practical workaround in my situation (upgrade vs. new install).
    2. Recompile the package and manually set the timestamp using the seemingly undocumented ALTER PACKAGE...COMPILE BODY REUSE SETTINGS TIMESTAMP... syntax.
    I didn't try this because I didn't like the idea of having to: a) rely on an undocumented feature, and, b) manually keep track and maintain the timestamps of all the affected packages across several databases (e.g., development, test, and production).
    3. Put the package into a Reports library or into the report itself.
    This didn't work for me because Reports does not understand WITH clauses in PL/SQL. For example, with the example query in my previous post, I get an error like this:
    Error 103 at line {line defining name of factored subquery}, column {first column in line defining name of factored subquery}
    Encountered the symbol "SUB_QUERY" when expecting one of the following:
    &lt;a SQL statement&gt;
    4. Use an RDF file instead of a REP file.
    I didn't use this workaround because I wanted to protect the design of the report by using a REP file instead of an RDF file.
    So instead, I:
    1. Created a database package containing a pipelined function that returned the results of the WITH clause query that Reports did not "understand".
    2. Used an SQL query in my report of the form
    SELECT * FROM TABLE(MY_PACKAGE.MY_PIPELINED_FUNCTION(arg1, arg2, ...))
    I can drop and re-create the package and run the REP file against another database both without leading to the REP-8 error.

  • InitialLOBFetchSize causes ORA-03106: fatal two-task communication protocol

    After my previous problem with setting InitialLOBFetchSize to -1 (see {thread:id=2338611}) I worked with a setting of 5 KB. This works fine on our development and testing database (11.2.0.1.0 Windows x86).
    But on the database of our customer (11.2.0.1.0 Windows x64) some queries throw an "ORA-03106: fatal two-task communication protocol error" exception. This is completely reproduceable, selecting some specific rows work, but others don't work. I've also tried a value of -1 on the customers database, this seems to fail on the same rows, but with a different error: "ORA-03149: Invalid Oracle error code".
    Interestingly, the first exception (ORA-03106) is only thrown if I also set a value to FetchSize (I'm currently using 1 MB for that). If I don't modify FetchSize the app just freezes (seems like the query call never returns). But setting the FetchSize doesn't change the behaviour of InitialLOBFetchSize with a value of -1 (always ORA-03149).
    I'd really like to use InitialLOBFetchSize (either with a positive value of about 5 KB or with -1) because this brings a huge performance increase for queries that select many CLOBs. Why causes this setting so many problems? Are there any known solutions?
    I'm using ODP.NET 11.2.0.3.0 x86 with .NET 4.0.
    Edited by: user12301043 on 21.03.2012 01:32

    In case someone tracks this thread, here is an update:
    The problem on the customer database was caused by the "DB_SECUREFILE=ALWAYS" setting. Oracle Support has now created a bug report for it (Bug 14279250).

  • What may cause ORA-00471 ?

    Hello,
    I got for the first time ever the ORA-00471 message.
    Here in my alert.log :
    Wed Feb 18 18:53:34 2009
    Errors in file /bases/TEST9/bdump/test9_pmon_32749.trc:
    ORA-00471: DBWR process terminated with error
    Wed Feb 18 18:53:34 2009
    PMON: terminating instance due to error 471
    Instance terminated by PMON, pid = 32749
    and here is the trace file :
    /bases/TEST9/bdump/test9_pmon_32749.trc
    Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production
    JServer Release 9.2.0.4.0 - Production
    ORACLE_HOME = /opt/oracle/920
    System name: Linux
    Node name: xxxxxxxxxxxxr
    Release: 2.6.9-78.0.13.ELsmp
    Version: #1 SMP Wed Jan 7 17:52:47 EST 2009
    Machine: i686
    Instance name: TEST9
    Redo thread mounted by this instance: 1
    Oracle process number: 2
    Unix process pid: 32749, image: oracle@xxxxxxxxx (PMON)
    *** 2009-02-18 18:53:34.747
    *** SESSION ID:(1.1) 2009-02-18 18:53:34.466
    error 471 detected in background process
    ORA-00471: DBWR process terminated with error
    There is very few documentation about this error, even on metalink.
    Do you know what may cause this ?
    if found this possibility after google-ing a litte bit :
    The DBWR process will fail if it can not access the disk, even for a short period of time.
    This might be due to hardware problems ? But I have several instances on this machine, and only this one crashed.
    Any idea ?
    Thanks for your help

    You may need to upgrade your 9.2.0.6 database to 9.2.0.8.
    Is it possible your OS does not have the required patches?This is still 9.2.0.4. I can apply this patch, but that doesn't give me any explanation.
    Is there a bug related to ORA-00471 fixed in this patch ?
    How much memory / swap space is available?
    Has an Oracle database ever run on this machine?There are several instances on this machine running for months, and I've nerver seen this error before. Memory and disk are OK.

  • How to find process causing "ORA-00054: resource busy and acquire with NOWAIT specified"

    Hello there,
    ENV: Oracle 10gR2 64bit on ASM, RHEL 64bit
    Application team has reported "ORA-00054: resource busy and acquire with NOWAIT specified" during the batch process in production env. This is happening for last couple of days. When this batch process is restarted in the morning, this error does not appear.
    I understand that this error is raised when one process tries to eecute some DDL on a table while another process is performing DML (or hasn't issued COMMIT/ROLLBACK after the DDL).
    Since this error is occurring at night (around 3:00am) during the batch process, is there a way to find out on table/object is contention happening OR which process is causing this error? The batch process cannot be modified to add debug messages because it is in Production.
    Please advise.
    Best regards

    user130038 wrote:
    Hello there,
    ENV: Oracle 10gR2 64bit on ASM, RHEL 64bit
    Application team has reported "ORA-00054: resource busy and acquire with NOWAIT specified" during the batch process in production env. This is happening for last couple of days. When this batch process is restarted in the morning, this error does not appear.
    I understand that this error is raised when one process tries to eecute some DDL on a table while another process is performing DML (or hasn't issued COMMIT/ROLLBACK after the DDL).
    Since this error is occurring at night (around 3:00am) during the batch process, is there a way to find out on table/object is contention happening OR which process is causing this error? The batch process cannot be modified to add debug messages because it is in Production.
    Please advise.
    Best regards
    >The batch process cannot be modified to add debug messages because it is in Production.
    I suspect more than one job is running concurrently against the DB; otherwise not error would occur.
    Of course the batch process CAN be modified, but some PHB has decided to eliminate that option.
    The Oracle database is at the mercy of the application code.
    If the application code is poorly instrumented, then live with what exists or improved the code to facilitate isolating the bug.
    You could delay the start of one of the jobs & then hope the error no longer occurs.

  • Large DDL causes ORA-06502 in several Applications

    I Created a Table with
    CREATE TABLE large_table (
    c001 VARCHAR(2) NOT NULL
    and added columns with
    ALTER TABLE large_table ADD c002 VARCHAR(2) NOT NULL;
    ALTER TABLE large_table ADD c060 VARCHAR(2) NOT NULL;
    The DDL of this table cannot be executed eg. in SqlDeveloper, sqlplus, ... and it cannot be imported from a dump with exp! Importing causes:
    Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production
    With the Partitioning, OLAP and Data Mining options
    Export file created by EXPORT:V10.02.01 via conventional path
    import done in WE8ISO8859P15 character set and AL16UTF16 NCHAR character set
    . importing RLODEVEL's objects into RLODEVEL
    . importing RLODEVEL's objects into RLODEVEL
    IMP-00017: following statement failed with ORACLE error 604:
    "CREATE TABLE "LARGE_TABLE" ("C001" VARCHAR2(2) NOT NULL ENABLE, "C002" VARC"
    "HAR2(2) NOT NULL ENABLE, "C003" VARCHAR2(2) NOT NULL ENABLE, "C004" VARCHAR"
    "2(2) NOT NULL ENABLE, "C005" VARCHAR2(2) NOT NULL ENABLE, "C006" VARCHAR2(2"
    ") NOT NULL ENABLE, "C007" VARCHAR2(2) NOT NULL ENABLE, "C008" VARCHAR2(2) N"
    "OT NULL ENABLE, "C009" VARCHAR2(2) NOT NULL ENABLE, "C010" VARCHAR2(2) NOT "
    "NULL ENABLE, "C011" VARCHAR2(2) NOT NULL ENABLE, "C012" VARCHAR2(2) NOT NUL"
    "L ENABLE, "C013" VARCHAR2(2) NOT NULL ENABLE, "C014" VARCHAR2(2) NOT NULL E"
    "NABLE, "C015" VARCHAR2(2) NOT NULL ENABLE, "C016" VARCHAR2(2) NOT NULL ENAB"
    "LE, "C017" VARCHAR2(2) NOT NULL ENABLE, "C018" VARCHAR2(2) NOT NULL ENABLE,"
    " "C019" VARCHAR2(2) NOT NULL ENABLE, "C020" VARCHAR2(2) NOT NULL ENABLE, "C"
    "021" VARCHAR2(2) NOT NULL ENABLE, "C022" VARCHAR2(2) NOT NULL ENABLE, "C023"
    "" VARCHAR2(2) NOT NULL ENABLE, "C024" VARCHAR2(2) NOT NULL ENABLE, "C025" V"
    "ARCHAR2(2) NOT NULL ENABLE, "C027" VARCHAR2(2) NOT NULL ENABLE, "C026" VARC"
    "HAR2(2) NOT NULL ENABLE, "C028" VARCHAR2(2) NOT NULL ENABLE, "C029" VARCHAR"
    "2(2) NOT NULL ENABLE, "C030" VARCHAR2(2) NOT NULL ENABLE, "C031" VARCHAR2(2"
    ") NOT NULL ENABLE, "C032" VARCHAR2(2) NOT NULL ENABLE, "C033" VARCHAR2(2) N"
    "OT NULL ENABLE, "C034" VARCHAR2(2) NOT NULL ENABLE, "C035" VARCHAR2(2) NOT "
    "NULL ENABLE, "C036" VARCHAR2(2) NOT NULL ENABLE, "C037" VARCHAR2(2) NOT NUL"
    "L ENABLE, "C038" VARCHAR2(2) NOT NULL ENABLE, "C039" VARCHAR2(2) NOT NULL E"
    "NABLE, "C040" VARCHAR2(2) NOT NULL ENABLE, "C041" VARCHAR2(2) NOT NULL ENAB"
    "LE, "C042" VARCHAR2(2) NOT NULL ENABLE, "C043" VARCHAR2(2) NOT NULL ENABLE,"
    " "C044" VARCHAR2(2) NOT NULL ENABLE, "C045" VARCHAR2(2) NOT NULL ENABLE, "C"
    "046" VARCHAR2(2) NOT NULL ENABLE, "C047" VARCHAR2(2) NOT NULL ENABLE, "C048"
    "" VARCHAR2(2) NOT NULL ENABLE, "C049" VARCHAR2(2) NOT NULL ENABLE, "C050" V"
    "ARCHAR2(2) NOT NULL ENABLE, "C051" VARCHAR2(2) NOT NULL ENABLE, "C052" VARC"
    "HAR2(2) NOT NULL ENABLE, "C053" VARCHAR2(2) NOT NULL ENABLE, "C054" VARCHAR"
    "2(2) NOT NULL ENABLE, "C055" VARCHAR2(2) NOT NULL ENABLE, "C056" VARCHAR2(2"
    ") NOT NULL ENABLE, "C057" VARCHAR2(2) NOT NULL ENABLE, "C058" VARCHAR2(2) N"
    "OT NULL ENABLE, "C059" VARCHAR2(2) NOT NULL ENABLE, "C060" VARCHAR2(2) NOT "
    "NULL ENABLE) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 STORAGE(INITIAL"
    " 65536 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS"
    "" LOGGING NOCOMPRESS"
    IMP-00003: ORACLE error 604 encountered
    ORA-00604: error occurred at recursive SQL level 1
    ORA-06502: PL/SQL: numeric or value error: character string buffer too small
    ORA-06512: at line 25
    Import terminated successfully with warnings.
    I'm quite sure, this problem is well known, but I did not find a hint in metalink or the rest of the internet.

    Sorry, the example has not been tested well :(
    But I just had to duplicate the number of columns to get the error both in SqlDeveloper, SqlPlus and (still) imp. That sqlplus and imp have different limits in DDL-size confuses me even more :-/
    CREATE TABLE LARGE_TABLE (
    C001 VARCHAR2(2) NOT NULL , C002 VARCHAR2(2) NOT NULL , C003 VARCHAR2(2) NOT NULL , C004 VARCHAR2(2) NOT NULL ,
    C005 VARCHAR2(2) NOT NULL , C006 VARCHAR2(2) NOT NULL , C007 VARCHAR2(2) NOT NULL , C008 VARCHAR2(2) NOT NULL ,
    C009 VARCHAR2(2) NOT NULL , C010 VARCHAR2(2) NOT NULL , C011 VARCHAR2(2) NOT NULL , C012 VARCHAR2(2) NOT NULL ,
    C013 VARCHAR2(2) NOT NULL , C014 VARCHAR2(2) NOT NULL , C015 VARCHAR2(2) NOT NULL , C016 VARCHAR2(2) NOT NULL ,
    C017 VARCHAR2(2) NOT NULL , C018 VARCHAR2(2) NOT NULL , C019 VARCHAR2(2) NOT NULL , C020 VARCHAR2(2) NOT NULL ,
    C021 VARCHAR2(2) NOT NULL , C022 VARCHAR2(2) NOT NULL , C023 VARCHAR2(2) NOT NULL , C024 VARCHAR2(2) NOT NULL ,
    C025 VARCHAR2(2) NOT NULL , C027 VARCHAR2(2) NOT NULL , C026 VARCHAR2(2) NOT NULL , C028 VARCHAR2(2) NOT NULL ,
    C029 VARCHAR2(2) NOT NULL , C030 VARCHAR2(2) NOT NULL , C031 VARCHAR2(2) NOT NULL , C032 VARCHAR2(2) NOT NULL ,
    C033 VARCHAR2(2) NOT NULL , C034 VARCHAR2(2) NOT NULL , C035 VARCHAR2(2) NOT NULL , C036 VARCHAR2(2) NOT NULL ,
    C037 VARCHAR2(2) NOT NULL , C038 VARCHAR2(2) NOT NULL , C039 VARCHAR2(2) NOT NULL , C040 VARCHAR2(2) NOT NULL ,
    C041 VARCHAR2(2) NOT NULL , C042 VARCHAR2(2) NOT NULL , C043 VARCHAR2(2) NOT NULL , C044 VARCHAR2(2) NOT NULL ,
    C045 VARCHAR2(2) NOT NULL , C046 VARCHAR2(2) NOT NULL , C047 VARCHAR2(2) NOT NULL , C048 VARCHAR2(2) NOT NULL ,
    C049 VARCHAR2(2) NOT NULL , C050 VARCHAR2(2) NOT NULL , C051 VARCHAR2(2) NOT NULL , C052 VARCHAR2(2) NOT NULL ,
    C053 VARCHAR2(2) NOT NULL , C054 VARCHAR2(2) NOT NULL , C055 VARCHAR2(2) NOT NULL , C056 VARCHAR2(2) NOT NULL ,
    C057 VARCHAR2(2) NOT NULL , C058 VARCHAR2(2) NOT NULL , C059 VARCHAR2(2) NOT NULL , C060 VARCHAR2(2) NOT NULL ,
    C101 VARCHAR2(2) NOT NULL , C102 VARCHAR2(2) NOT NULL , C103 VARCHAR2(2) NOT NULL , C104 VARCHAR2(2) NOT NULL ,
    C105 VARCHAR2(2) NOT NULL , C106 VARCHAR2(2) NOT NULL , C107 VARCHAR2(2) NOT NULL , C108 VARCHAR2(2) NOT NULL ,
    C109 VARCHAR2(2) NOT NULL , C110 VARCHAR2(2) NOT NULL , C111 VARCHAR2(2) NOT NULL , C112 VARCHAR2(2) NOT NULL ,
    C113 VARCHAR2(2) NOT NULL , C114 VARCHAR2(2) NOT NULL , C115 VARCHAR2(2) NOT NULL , C116 VARCHAR2(2) NOT NULL ,
    C117 VARCHAR2(2) NOT NULL , C118 VARCHAR2(2) NOT NULL , C119 VARCHAR2(2) NOT NULL , C120 VARCHAR2(2) NOT NULL ,
    C121 VARCHAR2(2) NOT NULL , C122 VARCHAR2(2) NOT NULL , C123 VARCHAR2(2) NOT NULL , C124 VARCHAR2(2) NOT NULL ,
    C125 VARCHAR2(2) NOT NULL , C127 VARCHAR2(2) NOT NULL , C126 VARCHAR2(2) NOT NULL , C128 VARCHAR2(2) NOT NULL ,
    C129 VARCHAR2(2) NOT NULL , C130 VARCHAR2(2) NOT NULL , C131 VARCHAR2(2) NOT NULL , C132 VARCHAR2(2) NOT NULL ,
    C133 VARCHAR2(2) NOT NULL , C134 VARCHAR2(2) NOT NULL , C135 VARCHAR2(2) NOT NULL , C136 VARCHAR2(2) NOT NULL ,
    C137 VARCHAR2(2) NOT NULL , C138 VARCHAR2(2) NOT NULL , C139 VARCHAR2(2) NOT NULL , C140 VARCHAR2(2) NOT NULL ,
    C141 VARCHAR2(2) NOT NULL , C142 VARCHAR2(2) NOT NULL , C143 VARCHAR2(2) NOT NULL , C144 VARCHAR2(2) NOT NULL ,
    C145 VARCHAR2(2) NOT NULL , C146 VARCHAR2(2) NOT NULL , C147 VARCHAR2(2) NOT NULL , C148 VARCHAR2(2) NOT NULL ,
    C149 VARCHAR2(2) NOT NULL , C150 VARCHAR2(2) NOT NULL , C151 VARCHAR2(2) NOT NULL , C152 VARCHAR2(2) NOT NULL ,
    C153 VARCHAR2(2) NOT NULL , C154 VARCHAR2(2) NOT NULL , C155 VARCHAR2(2) NOT NULL , C156 VARCHAR2(2) NOT NULL ,
    C157 VARCHAR2(2) NOT NULL , C158 VARCHAR2(2) NOT NULL , C159 VARCHAR2(2) NOT NULL , C160 VARCHAR2(2) NOT NULL
    PCTFREE 10
    PCTUSED 40
    INITRANS 1
    MAXTRANS 255
    STORAGE(INITIAL 65536 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
    TABLESPACE USERS
    LOGGING
    NOCOMPRESS
    CREATE TABLE LARGE_TABLE (
    ERROR at line 1:
    ORA-00604: error occurred at recursive SQL level 1
    ORA-06502: PL/SQL: numeric or value error: character string buffer too small
    ORA-06512: at line 25

  • Scheduling error causing - ORA-00942: table or view does not exist

    Hello
    I have the following problem, I created an scenario that its supposed to run every 1 hour, it has an interface that moves an amount of records from one table to another (the amount of records is not fixed it changes). The problem arises when the amount of data to move is so big that the hour between executions is not enough and the scenario is still running when a second execution of the same scenario starts to run (as scheduled), so in the interface when the second process is trying to run the loading step it fails and I got the error ODI-1228 Caused By: java.sql.BatchUpdateException: ORA-00942: table or view does not exists. So the scenario fails and it logs this error. I think the error is due to the table in stage being locked by the first execution of the scenario.
    I don't want to change the amount of time between executions because it is usually enough, I just want to avoid the execution of a scenario when there is another execution of the same scenario still running, is there any way to do this?.
    Thanks
    LJ

    Hello
    Thanks for your answer, I already have the "Interval between repetitions" property set to 1 hour, but when one execution takes more than one hour the scheduler starts another and I have 2 processes accessing the same table and it is when I have a concurrence error on the staging table.
    How can I ensure that I wont have two or more executions of the same scenario running at the same time?.
    Thanks,
    LJ

Maybe you are looking for

  • Desktop Wallpaper Screensaver Bug? [When waking from sleep]

    I'm not sure if this topic is in the correct category but it seems to fit. I have a new 15.4" MacBook Pro with OS 10.6.3. I have multiple images that I want as a wallpaper and so I decided to select "Change picture" in the preferences pane. I also se

  • Formula Problem in a Query

    Dear Gurus, Created a formula M Primary= M1 Sec PlanM(Closing Stock+Intransit)-Mopening Stock Where MClosing stock= Msecplan*Stocknorms After applying the formula, i am getting the following output. Calmonth      Sec Plan  norms  Closing stock      O

  • HELP ! ... Need DVCAM settings for FCP 5.1

    I've filmed on a Sony HDDZ1P in DVCAM mode, inserted the tape into a Sony DSR-1500AP, opened FCP Pro 5.1 & it's not finding the deck. The G5 is recognising it's connected via Firewire but in the "Log & Capture" it can't find it. If I press PLAY ... i

  • Question about java thread implementation

    Hi All, I am comparing the performance of the Dining philosopher's problem implemented in Java, Ada, C/Pthread, and the experimental language I have been working on. The algorithm is very simple: let a butler to restrict entry to the eating table, so

  • Safari crashes, can not load it.  Fire fox works fine.

    I just put 10.5 on my mac book pro, every time I try to use safari it bounces a few times and crashes. Any ideas?