Error inserting largeinto BLOB field

I am unable to insert large object into a BLOB column (Oracle 8.1.7 DB). Files of smaller size ( < 30 K )insert fine. I am using the OCI driver. In the mapping workbench I have mapped a Byte array to the BLOB column.
Below is a stack trace of the exception.
Any idea
MAPPING: oracle.toplink.mappings.SerializedObjectMapping[attachment-->DatabaseField(PR_ATTACHMENT.BLOB_FILE)]
DESCRIPTOR: Descriptor(gov.usdoj.ojp.gms.jdo.ProgressAttachment --> [DatabaseTable(PR_ATTACHMENT)]), stack: LOCAL EXCEPTION STACK:
EXCEPTION [TOPLINK-66] (TopLink - 9.0.3 (Build 423)): oracle.toplink.exceptions.DescriptorException
EXCEPTION DESCRIPTION: Could not deserialize object from byte array.
INTERNAL EXCEPTION: java.io.EOFException
MAPPING: oracle.toplink.mappings.SerializedObjectMapping[attachment-->DatabaseField(PR_ATTACHMENT.BLOB_FILE)]
DESCRIPTOR: Descriptor(gov.usdoj.ojp.gms.jdo.ProgressAttachment --> [DatabaseTable(PR_ATTACHMENT)])
     at oracle.toplink.exceptions.DescriptorException.notDeserializable(Unknown Source)
     at oracle.toplink.mappings.SerializedObjectMapping.getAttributeValue(Unknown Source)
     at oracle.toplink.mappings.DirectToFieldMapping.valueFromRow(Unknown Source)
     at oracle.toplink.mappings.DatabaseMapping.readFromRowIntoObject(Unknown Source)
     at oracle.toplink.internal.descriptors.ObjectBuilder.buildAttributesIntoObject(Unknown Source)
     at oracle.toplink.internal.descriptors.ObjectBuilder.buildObject(Unknown Source)
     at oracle.toplink.internal.descriptors.ObjectBuilder.buildObjectsInto(Unknown Source)
     at oracle.toplink.internal.queryframework.DatabaseQueryMechanism.buildObjectsFromRows(Unknown Source)
     at oracle.toplink.queryframework.ReadAllQuery.execute(Unknown Source)
     at oracle.toplink.queryframework.DatabaseQuery.execute(Unknown Source)
     at oracle.toplink.queryframework.ReadQuery.execute(Unknown Source)
     at oracle.toplink.publicinterface.Session.internalExecuteQuery(Unknown Source)
     at oracle.toplink.threetier.ServerSession.internalExecuteQuery(Unknown Source)
     at oracle.toplink.publicinterface.Session.executeQuery(Unknown Source)
     at oracle.toplink.internal.indirection.QueryBasedValueHolder.instantiate(Unknown Source)
     at oracle.toplink.internal.indirection.DatabaseValueHolder.getValue(Unknown Source)

I was originally using Toplink under iPlanet Webserver 4.1. I have now switched to 9iAS 9.0.2.0 and am getting a different error when inserting a BLOB. Even after I get this error I am able to access other parts of the system so it cannot be an issue of not connecting to the DB.
Rajiv
EXCEPTION [TOPLINK-4005] (TopLink - 9.0.3 (Build 423)): oracle.toplink.exceptions.DatabaseException
EXCEPTION DESCRIPTION: DatabaseAccessor not connected.
     at oracle.toplink.exceptions.DatabaseException.databaseAccessorNotConnected(Unknown Source)
     at oracle.toplink.internal.databaseaccess.DatabaseAccessor.incrementCallCount(Unknown Source)
     at oracle.toplink.internal.databaseaccess.DatabaseAccessor.executeCall(Unknown Source)
     at oracle.toplink.publicinterface.UnitOfWork.executeCall(Unknown Source)
     at oracle.toplink.internal.queryframework.CallQueryMechanism.executeCall(Unknown Source)
     at oracle.toplink.internal.queryframework.CallQueryMechanism.executeCall(Unknown Source)
     at oracle.toplink.internal.queryframework.CallQueryMechanism.executeSelectCall(Unknown Source)
     at oracle.toplink.internal.queryframework.CallQueryMechanism.executeSelect(Unknown Source)
     at oracle.toplink.queryframework.DataReadQuery.executeNonCursor(Unknown Source)
     at oracle.toplink.queryframework.DataReadQuery.execute(Unknown Source)
     at oracle.toplink.queryframework.DatabaseQuery.execute(Unknown Source)
     at oracle.toplink.queryframework.ReadQuery.execute(Unknown Source)
     at oracle.toplink.publicinterface.Session.internalExecuteQuery(Unknown Source)
     at oracle.toplink.publicinterface.UnitOfWork.internalExecuteQuery(Unknown Source)
     at oracle.toplink.publicinterface.Session.executeQuery(Unknown Source)
     at oracle.toplink.publicinterface.Session.executeQuery(Unknown Source)
     at oracle.toplink.internal.databaseaccess.OraclePlatform.nativeGetNextBatchOfSequenceNumbersNamed(Unknown Source)
     at oracle.toplink.internal.databaseaccess.OraclePlatform.nativeGetSequenceNumberNamed(Unknown Source)
     at oracle.toplink.internal.databaseaccess.DatabasePlatform.getSequenceNumberNamed(Unknown Source)
     at oracle.toplink.publicinterface.Session.getNextSequenceNumberValue(Unknown Source)
     at oracle.toplink.publicinterface.UnitOfWork.getNextSequenceNumberValue(Unknown Source)
     at oracle.toplink.internal.descriptors.ObjectBuilder.assignSequenceNumber(Unknown Source)
     at oracle.toplink.publicinterface.UnitOfWork.assignSequenceNumbers(Unknown Source)
     at oracle.toplink.publicinterface.UnitOfWork.collectAndPrepareObjectsForCommit(Unknown Source)
     at oracle.toplink.publicinterface.UnitOfWork.commitToDatabase(Unknown Source)
     at oracle.toplink.publicinterface.UnitOfWork.commitRootUnitOfWork(Unknown Source)
     at oracle.toplink.publicinterface.UnitOfWork.commit(Unknown Source)

Similar Messages

  • Error when reading BLOB field from Oracle usin Toplink

    We experience a very annoying problem when trying to read a BLOB
    field from Oracle 8.1.6.2.0 using TOPLink 3.6.3. I have attached the
    exception stack trace that is reported to the console. As far as I can
    judge a fault at oracle.sql.LobPlsqlUtil.plsql_length() happens first and
    then at TOPLink.Private.DatabaseAccess.DatabasePlatform.convertObject().
    The exception is permanently repeating that is very critical for us.
    ServerSession(929808)--Connection(5625701)--SELECT LOBBODY, ID, LABEL, FK_OBJECT_ID, FK_OBJECTTYPE FROM NOTE WHERE (ID = 80020)
    INTERNAL EXCEPTION STACK:
    java.lang.NullPointerException
    at oracle.sql.LobPlsqlUtil.plsql_length(LobPlsqlUtil.java:936)
    at oracle.sql.LobPlsqlUtil.plsql_length(LobPlsqlUtil.java:102)
    at oracle.jdbc.dbaccess.DBAccess.lobLength(DBAccess.java:709)
    at oracle.sql.LobDBAccessImpl.length(LobDBAccessImpl.java:58)
    at oracle.sql.BLOB.length(BLOB.java:71)
    at TOPLink.Private.Helper.ConversionManager.convertObjectToByteArray(ConversionManager.java:309)
    at TOPLink.Private.Helper.ConversionManager.convertObject(ConversionManager.java:166)
    at TOPLink.Private.DatabaseAccess.DatabasePlatform.convertObject(DatabasePlatform.java:594)
    at TOPLink.Public.Mappings.SerializedObjectMapping.getAttributeValue(SerializedObjectMapping.java:43)
    at TOPLink.Public.Mappings.DirectToFieldMapping.valueFromRow(DirectToFieldMapping.java:490)
    at TOPLink.Public.Mappings.DatabaseMapping.readFromRowIntoObject(DatabaseMapping.java:808)
    at TOPLink.Private.Descriptors.ObjectBuilder.buildAttributesIntoObject(ObjectBuilder.java:173)
    at TOPLink.Private.Descriptors.ObjectBuilder.buildObject(ObjectBuilder.java:325)
    at TOPLink.Private.Descriptors.ObjectBuilder.buildObjectsInto(ObjectBuilder.java:373)
    at TOPLink.Public.QueryFramework.ReadAllQuery.execute(ReadAllQuery.java:366)
    at TOPLink.Public.QueryFramework.DatabaseQuery.execute(DatabaseQuery.java:406)
    I have started the application with Oracle JDBC logging on and found that the problem may originate in a possible lack of syncronization in the pooled connection implementation:
    DRVR FUNC OracleConnection.isClosed() returned false
    DRVR OPER OracleConnection.close()
    DRVR FUNC OracleConnection.prepareCall(sql)
    DRVR DBG1 SQL: "begin ? := dbms_lob.getLength (?); end;"
    DRVR FUNC DBError.throwSqlException(errNum=73, obj=null)
    DRVR FUNC DBError.findMessage(errNum=73, obj=null)
    DRVR FUNC DBError.throwSqlException(reason="Logical handle no longer valid",
    SQLState=null, vendorCode=17073)
    DRVR OPER OracleConnection.close()
    so the prepareCall() is issued against an already closed connection and the
    call fails.
    I assume we have been using a JDBC 2.0 compliant driver. We tried out
    drivers that Oracle supplies for 8.1.6, 8.1.7 versions. To be true I
    couldn't find any information about the JDBC specification they conform to. Does it
    mean that these drivers may not be 100%-compatible with JDBC 2.0 Spec?
    How can I find out if they are 2.0 compliant?
    Also I have downloaded Oracle 9.2.0.1 JDBC drivers. This seemed to work
    fine until we found another incompatibility which made us return back to
    8.1.7 driver:
    UnitOfWork(7818028)--Connection(4434104)--INSERT INTO STATUSHISTORY (CHANGEDATE, FK_SET_STATUS_ID) VALUES ({ts '2002-10-17 16:46:54.529'}, 2)
    INTERNAL EXCEPTION STACK:
    java.sql.SQLException: ORA-00904: invalid column name
    at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
    at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:289)
    at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:573)
    at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1891)
    at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteFetch(TTC7Protocol.java:1093
    at oracle.jdbc.driver.OracleStatement.executeNonQuery(OracleStatement.jav
    a:2047)
    at oracle.jdbc.driver.OracleStatement.doExecuteOther(OracleStatement.java
    :1940)
    at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatemen
    t.java:2709)
    at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePrepare
    dStatement.java:589)
    at TOPLink.Private.DatabaseAccess.DatabaseAccessor.executeDirectNoSelect(
    DatabaseAccessor.java:906)
    at TOPLink.Private.DatabaseAccess.DatabaseAccessor.executeNoSelect(Databa
    seAccessor.java:960)
    at TOPLink.Private.DatabaseAccess.DatabaseAccessor.executeCall(DatabaseAc
    cessor.java:819)
    at TOPLink.Public.PublicInterface.UnitOfWork.executeCall(UnitOfWork.java:

    Hello Yury,
    I believe the problem is that TopLink's ServerSession by default executes read queries concurrently on the same connection. It does this to reduce the number of required connections for the read connection pool. Normally this is a good concurrency optimization, however some JDBC drivers have issues when this is done. I had thought that with Oracle JDBC 8.1.7 this issue no longer occurred, but perhaps it is only after version 9. I believe that the errors were only with the thin JDBC driver, not the OCI, so using the OCI driver should also resolve the problem. Using RAW instead of BLOB would also work.
    You can configure TopLink to resolve this problem through using exclusive read connection pooling.
    Example:
    serverSession.useExclusiveReadConnectionPool(int minNumerOfConnections, int maxNumerOfConnections);
    This will ensure that TopLink does not to try to concurrently execute read queries on the same connection.
    I'm not exactly sure what your second problem with the 9.x JDBC drivers is. From the SQL and stack trace it would seem that the driver does not like the JDBC timestamp syntax. You can have TopLink print timestamp in Oracle's native SQL format to resolve this problem.
    Example:
    serverSessoin.getLogin().useNativeSQL();
    Make sure you configure your server session before you login, or if using the TopLink Session Manager perform the customizations through a SessionEventListener-preLogin event.

  • Error inserting a Blob in the database

    Hi Everyone.
    I have a TABLE (Oracle) which has a Blob field, when I catalogue it the data type inside the BPM is Binary.
    Everything goes fine, but when I try to INSERT a row in that table I get the following exception:
    Caused by: java.lang.ClassCastException: fuego.sql.BlobImpl
         at oracle.jdbc.driver.OraclePreparedStatement.setBlob(OraclePreparedStatement.java:6466)
         at oracle.jdbc.driver.OraclePreparedStatementWrapper.setBlob(OraclePreparedStatementWrapper.java:126)
         at fuego.jdbc.FaultTolerantPreparedStatement.setBlob(FaultTolerantPreparedStatement.java:136)
         at fuego.sql.SQLUtils.setParameter(SQLUtils.java:424)
         at fuego.sql.SQLObject.setFldParams(SQLObject.java:465)
         at fuego.sql.SQLObject.setFldParams(SQLObject.java:455)
         at fuego.sql.TableSQLObject.update(TableSQLObject.java:909)
         at fuego.sql.TableSQLObject.implicitStore(TableSQLObject.java:378)
         at fuego.sql.TableSQLObject.store(TableSQLObject.java:340)
         at sun.reflect.GeneratedMethodAccessor480.invoke(Unknown Source)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
         at java.lang.reflect.Method.invoke(Unknown Source)
         at fuego.lang.JavaClass.invokeMethod(JavaClass.java:1410)
         at fuego.sql.SQLObject.invoke(SQLObject.java:364)
         at fuego.lang.Invokeable.invokeImpl(Invokeable.java:234)
         at fuego.lang.Invokeable.invokeDynamic(Invokeable.java:188)
         at OFERTAS_COMERCIALES.ABMOfertasNuevo.Default_1_0.Instance.CIL_testBLOG(Instance.xcdl:21)
    at OFERTAS_COMERCIALES.ABMOfertasNuevo.Default_1_0.Instance.CIL_testBLOG(Instance.xcdl)
         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
         at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
         at java.lang.reflect.Method.invoke(Unknown Source)
         at fuego.component.ExecutionThreadContext.invokeMethod(ExecutionThreadContext.java:512)
         ... 35 more
    The statement is
         TABLE.id = 1;
         TABLE.contenido =     at.contents
         store(TABLE)
    also tried:
    params as Any[] = []
    params[] = 1
    params[] = Binary(data : at.contents).data
    retVal as Int
    query as String = "INSERT INTO TABLE(id, contenido) VALUES (?,?)"
    extResource as String = "db"
    retVal = executeUpdate(DynamicSQL, sentence : query,
    implname : extResource,
    inParameters : params)
    and the result was the same.
    The select statments works fine.
    Any idea???
    I'm working with Studio Version: 10.3.2 Build: #100524
    Thanks in advance.
    Carlos

    Hi,
    Plz check the following thread, you may have the similar issue.
    Insert and Retrieve BLOB column with Oracle BPM
    Bibhu

  • How to insert/display a Blob field(PDF) from Oracle 11g into CR XI version 11.5.12.1838

    Hello
       I   am using CR version 11.5.12.1838 and I  would like to display/insert  a BLOB field into a CR report and this BLOB field has a .PDF file in it.  Is there anyway this can be done?
    Your help would be appreciated
    Thank you
    alpha

    Hi Alpha
    Not as far as CR is concerned. Note that even adding a PDF as an OLE object to cr will result in only the 1st page being rendered.
    From what I gather in the discussion here, I don't believe CR is the utility that can be used in this case.
    - Ludek
    Senior Support Engineer AGS Product Support, Global Support Center Canada
    Follow me on Twitter

  • CR2008: BLOB field in preview crash the designer

    I using CR2008 with MSSQL 2008. I have create a table with some default values. On of them should be the compny logo. I have put company.jpg in the table to a BLOB-Column.
    To insert the BLOB-field a use a SQL-Statement:
    (SELECT ReportElements.ReportElementBLOB FROM ReportElements
    WHERE ReportElementID='CompanyLogo')
    Now I put this statement to my report. The designer show the logo. I can place it and sizing.
    When I change to the preview with this filed then the designer crashes and will sned a crashreport.
    What is the problem? How can fix it?
    BTW: When I using other SQL-Statements to put text from the ReportElements-Table to my report it works fine.

    OK - I hvae tried to fix the missing links. But after the install of the Fix the Link is missing anaywhere.
    The other files I have checked - they are not important, when I use IE8 and Windows XP.
    My next try was: Fresh install of the CR2008 SP3 and FixPack 3.1
    I have install XP fresh on a other PC. After that I install CR2008 and connect to Database. Same Problem anytime when I use the SQL-Expression
    I didn´t understand that. What is the problem. When I send the code to SQL-Server
    SELECT (SELECT ReportElements.ReportElementValue FROM ReportElements
    WHERE ReportElementID='LetterFooterLine1'), (SELECT ReportElements.ReportElementBLOB FROM ReportElements
    WHERE ReportElementID='CompanyLogo')
    Then the result is:
    Letter footer Text example     0xFFD8FFE000104A46494600010101006000600000FFDB004300080606070605080707070909080A0C140D0C0B0B0C1912130F141D1A1F1E1D1A1C1C20242E2720222C231C1C2...
    I hope some have a workaround or an idea what is the problem
    BTW: I installed on the clean machine the new SP4 - but the problem still exist
    Change the JPG to BMP and/or changing the size of the image still bring up the error anytime when I change from Designmode to Previewmode

  • Its urgent regarding Blob field

    I have a stored proc trying to retrieve blob field(a binary file) from a
    View(in schema1) in oracle10g. After retrieving I am sending it to another
    databsase(schema2) through a dblink which is in oracle9i. I am using TOAD for
    this. My code is
    Insert into [email protected]
    Select VPF.P_ID AS PET_ID,
    DBMS_LOB.SUBSTR(VPF.PDF_FILE, 4000, 1) AS PET_FILE
    FROM V_PDF_FILES VPF, [email protected]
    I am unable to insert this. I am getting an error related to BLOB Field. My
    question is, the DBMS_LOB package which I have used is correct or not to
    retrieve? If yes, then is it compatible to send the BLOB from Oracle 10g to
    Oracle9i? What are the limitations for this.? How can I resolve this. Your
    response will be greatly appreciated. If you need more information then let me know.
    Thanks in advance.

    Go to SE11, ur table name and click on change ..now go to Utilities->Table maintenance Generator ,
    there click on the single screen,it will take u to the screen code and then u have to click on button Layout(for screen) ..
    here double cllick on the field label for which u want long text to be displayed,double clicking will open up Attribute window for tht field ,here in the Dict Tab u can see one option named Modify, give value as 3 there (fro long text)..
    now it wil take long text of the field once saved n activated.
    amit

  • Serialization Object and storasge in blob field Oracle 8.1.6

    Hi,
    this is problem with serializing and deserializing when i am storing object serialized in a Blob field Oracle:
    MyObject myObject = new MyObject();
    ByteArrayOutputStream bayos = new ByteArrayOutputStream();
    ObjectOutputStream oos = new ObjectOutputStream (bayos);
    oos.writeObject(myObject);
    oos.flush();
    byte[] buffer = bayos.toByteArray();
    int size = buffer.length;
    oos.close();
    ByteArrayInputStream bayis = new ByteArrayInputStream(buffer,0,size);
    // if the number bytes of serialized myObject > 4kbytes then the insert in Blob field fails down.
    // if the number bytes of serialized myObject < 4kbytes then the insert in Blob field successes.
    // So I only can put in Blob field serialized object with size minus 4k.
    // The code for insert:
    PreparedStatement pstmt = connection.prepareStatement(sqlInsert);
    pstmt.setBinaryStream(1,bayis,size);
    int retCode = pstmt.executeUpdate();
    // The code for read from table Oracle
    rset = stmt.rxecuteQuery(sqlSelect);
    rset.next();
    oracle.sql.BLOB fldBlob = (BLOB)rset.getObject(1);
    InputStream ins = fldBlob.getBinaryStream();
    byte[] buf = new byte[size]
    ByteArrayInputStream bayis = new ByteArrayInputStream(buf,0,size);
    ObjectInputStream ois = new ObjectInputStream(bayis);
    MyObject myObject = (MyObject)ois.readObject();
    Someone knows the reason of the limit of 4Kbyte ?
    Thanks....

    Insert LOBs into Oracle is a 3 step process. You must insert a place holder, and the do a select for update to put the contents into the row. Lets say you have a table called MY_LOB:
    create table MY_LOB (
       MYID NUMERIC(10) NOT NULL,
       MYLOB BLOB DEFAULT EMPTY_BLOB()
    );The 'empty_blob' keyword tells Oracle to put a dummy value in the blob column when a row is initially created. To insert (assuming you have a db connection already):
    conn.setAutoCommit(false);
    PreparedStatement pstmt = null;
    ResultSet rs = null;
    oracle.sql.BLOB myLob = null;
    try
       //Insert the initial row.
       pstmt = conn.prepareStatement("INSERT INTO MY_LOB (MYID) VALUES (?)");
       //Set the PK value
       pstmt.setInt(1,100);
       pstmt.executeUpdate();
       pstmt.close();
       //Lock the row for insertion.  This is needed for large inserts.
       pstmt = conn.prepareStatement("SELECT MYLOB from MY_LOB where MYID = ? FOR UPDATE");
       pstmt.setInt(1,100);
       rs = pstmt.executeQuery();
       if (rs.next())
          myLob = (oracle.sql.BLOB)rs.getBlob(1);
       rs.close();
       pstmt.close();
       //Finally...update the row with the blob data....
       myLob.putBytes(1, buffer);
       pstmt = conn.prepareStatement("UPDATE MY_LOB SET MYLOB = ? WHERE MYID = ?");
       pstmt.setBlob(1, myLob);
       pstmt.setInt(2,100);
       pstmt.executeUpdate();
       pstmt.close();
       conn.commit();
    catch(SQLException sqlE)
        conn.rollback();
    finally
      //make sure and close all statements....
    }Hope this helps, I didn't compile it so it may have some bugs. It should lead in the right direction at least.

  • Oracle error ORA-01461when trying to insert into an ORACLE BLOB field

    I am getting Oracle error ‘ORA-01461: can bind a LONG value only  for insert into a LONG column' when trying to insert into an ORACLE BLOB field. The error occurs when trying to insert a large BLOB (JPG), but does not occur when inserting a small (<1K) picture BLOB.(JPG). Any ideas?
    BTW, when using a SQL Server datasource using the same code.... everything works with no problems.
    ORACLE version is 11.2.0.1
    The ORACLE datasource is JDBC using Oracle's JDBC driver ojdbc6.jar v11.2.0.1 (I also have tried ojdbc5.jar v11.2.0.1; ojdbc5.jar v11.2.0.4; and ojdbc6.jar v11.2.0.4 with the same error result.)
    Here is my code:
    <cfset file_mime = Lcase(Right(postedXMLRoot.objname.XmlText, 3))>
    <cfif file_mime EQ 'jpg'><cfset file_mime = 'jpeg'></cfif>
    <cfset file_mime = 'data:image/' & file_mime & ';base64,'>
    <cfset image64 = ImageReadBase64("#file_mime##postedXMLRoot.objbase64.XmlText#")>
    <cfset ramfile = "ram://" & postedXMLRoot.objname.XmlText>
    <cfimage action="write" source="#image64#" destination="#ramfile#" overwrite="true">
    <cffile action="readbinary" file="#ramfile#" variable="image_bin">
    <cffile action="delete" file="#ramfile#">
    <cfquery name="InsertImage" datasource="#datasource#">
    INSERT INTO test_images
    image_blob
    SELECT
    <cfqueryparam value="#image_bin#" cfsqltype="CF_SQL_BLOB">
    FROM          dual
    </cfquery>

    Can't you use "alter index <shema.spatial_index_name> rebuild ONLINE" ? Thanks. I could switch to "rebuild ONLINE" and see if that helps. Are there any potential adverse effects going forward, e.g. significantly longer rebuild than not using the ONLINE keyword, etc? Also wondering if spatial index operations (index type = DOMAIN) obey all the typical things you'd expect with "regular" indexes, e.g. B-TREE, etc.

  • Problem inserting a gif into a blob field in a table with sqldev / forms6i

    Problem solved - For those that might be interested, the errors don't make much sense - the problem was with the gif. Seems that these 28 gifs plus the new scans were saved from the scanner with
    GIF - LZW, Transparent color: 255
    Converting them to Black and white allowed them to be loaded.
    If anyone understands why, I'd like to know
    glenn
    I was previously having a problem deleting a row with a blob and it was suggested that I create the table using rowdependencies - which I did as follows.
    CREATE TABLE "MDD"."MDD_FIGURE2"
    (     "FG_FIGURENAME" VARCHAR2(18 BYTE),
         "FG_FIGURE" BLOB,
         CONSTRAINT "FG_FIGURENAME_NN" CHECK ("FG_FIGURENAME" IS NOT NULL) ENABLE
    ) ROWDEPENDENCIES;
    Then I copied my data from my previous table with the following - and everything came across
    INSERT INTO MDD_FIGURE2 (fg_figurename, fg_figure)
    SELECT FIG_FIGNAME, FIG_FIGURE FROM MDD_FIGURE;
    mdd_figure2 was then renamed to mdd_figure
    The table, Mdd_Figure, already contains some 2000+ .gifs that were successfully loaded with Forms 6i (yes, I know it is old, but I am stuck with having to use it). All the .gifs I am loading are from scans and all are less than 64k. However, 28 .gifs would not load. When I insert the .gif into the field and committed the form, the status message tells me a record was written but when I check it, the blob is empty.
    So, when I try to insert one of these problem .gifs in SqlDeveloper, I open the new mdd_figure table, select the blob field, open the edit dialog, set it to figure, select the .gif that I want to load and then save it. The blob field changes from NULL to BLOB, but it is empty. When I try to commit, I get the following error from SqlDev.
    UPDATE "MDD"."MDD_FIGURE" SET WHERE ROWID = 'AAAOeWAAEAAABAlAAz' AND ORA_ROWSCN = '358136842'
    One error saving changes to table "MDD"."MDD_FIGURE":
    Row 14: ORA-01410: invalid ROWID
    I use rollback to restore the record to it's previous state.
    If I load one of the successfully loaded .gifs into the same field, it loads perfectly as follows.
    UPDATE "MDD"."MDD_FIGURE" SET WHERE ROWID = 'AAAOeWAAEAAABAoAAp' AND ORA_ROWSCN = '358136522'
    Commit Successful
    It appears the 28 gifs have a problem. I've re-scanned them, with the same results. They are just small scanned line map images from our earlier publications. They view properly in several different graphics programs and I can't find anything wrong with them.
    I notice that the ROWID's are different while the ORA_ROWSCN's are the same - but what is the significance of that?
    Any suggestions as to what is happening and what I can do about it?
    Thanks for any help you can give me.
    glenn
    (Database is 10R2 and sqldev is the most recent one)
    Edited by: gconley on Sep 25, 2008 9:51 PM

    solved it myself - problem was with the gif

  • PHP - Load Gif image into Oracle Blob field - ORA-00972 error

    I am receiving an " ORA-00972 - Identifier Is too Long" error message when I try to update a BLOB field with file contents from a gif file.
    __GIF FILES_:_
    c:\bl\x_PageLayout-4_LA.gif (15K)
    c:\bl\x_PageLayout-4_Spec.gif (21k)
    ===================================================================================================================================
    ORACLE DATABASE (STYLEELEMENTPIX TABLE):*
    STYLE_ID NUMBER
    SEQ_KEY NUMBER
    PIX_NAME VARCHAR2(30 BYTE)
    PIX BLOB
    PIX_LABEL VARCHAR2(30 BYTE)
    MODIFY_DATE DATE
    PIX_TYPE CHAR(1 BYTE)
    DEFAULTDISPLAY CHAR(1 BYTE)
    PIX field currently is null
    ===================================================================================================================================
    PHP CODE:*
    $filename = 'C:\BL\\';
    $filename .= $row->PIX_NAME; //filename of gif ex: c:\bl\x_PageLayout-4_LA.gif
    $fp = fopen($filename, "rb"); //open gif file
    $file_content = fread($fp, filesize($filename)); //read gif file
    //set gif file in PIX field (PIX datatyle BLOB)
    $cursor1 = oci_parse($conn, "UPDATE STYLEELEMENTPIX SET PIX = '$file_content' WHERE STYLE_ID = $row->STYLE_ID AND SEQ_KEY = $row->SEQ_KEY");
    oci_execute ($cursor1);
    For both records, style id will be 100 ($row->STYLE_ID), and seq_key will be 1 for the first record and 2 for the second ($row->SEQ_KEY)
    ===================================================================================================================================
    ERROR MESSAGE:
    Warning: oci_parse() [function.oci-parse]: ORA-00972: identifier is too long in C:\wamp\www\eStyleGuide\Admin\BLOB.php on line 44 ($cursor1 = ....)

    Use a LOB locator. See "Inserting and Updating LOBs" on p 193 of the free book http://www.oracle.com/technetwork/topics/php/underground-php-oracle-manual-098250.html
    A more concerning issue is the security implications of using string concatenation to construct the SQL statement. It is recommended to use bind variables.

  • Error while trying to store PDF in Oracle's BLOB field

    Hi folks!
    I'm having problems while trying to store PDF file in a BLOB field of an Oracle table
    This is the message code:
    Exception in thread "main" java.sql.SQLException: Data size bigger than max size for this type: 169894
    at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
    at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179)
    at oracle.jdbc.ttc7.TTCItem.setArrayData(TTCItem.java:95)
    at oracle.jdbc.dbaccess.DBDataSetImpl.setBytesBindItem(DBDataSetImpl.java:2414)
    at oracle.jdbc.driver.OraclePreparedStatement.setItem(OraclePreparedStatement.java:1134)
    at oracle.jdbc.driver.OraclePreparedStatement.setBytes(OraclePreparedStatement.java:2170)
    at vgoactualizacion.Main.main(Main.java:84)     
    This is the piece of code i'm using:
    Assuming conn = conection to Oracle 10g Database ( it's working )
    String miProcedimientoAlmacenado = "{ call package_name.update_client(?,?, ?) }";
    CallableStatement miComando = conn.prepareCall(miProcedimientoAlmacenado);
    miComando.setString(1,miClienteID ); //first parameter : IN
                   //second parameter : IN
    File miPDF = new File(pathPDF + "//" + miClienteID + ".pdf");
    byte[] bodyIn = readFully(miPDF); //readFully procedure is shown below
    miComando.setBytes(2, bodyIn); //THIS IS THE LINE WHERE THE ERROR IS PRODUCED
              //3rd parameter: OUT
    miComando.registerOutParameter(3, java.sql.Types.VARCHAR);
    miComando.execute();
    private static byte[] readFully(File miPDF) throws FileNotFoundException, IOException {
    FileInputStream fis = new FileInputStream(miPDF);
    byte[] tmp = new byte[1024];
    byte[] data = null;
    int sz, len = 0;
    while ((sz = fis.read(tmp)) != -1) {
    if (data == null) {
    len = sz;
    data = tmp;
    } else {
    byte[] narr;
    int nlen;
    nlen = len + sz;
    narr = new byte[nlen];
    System.arraycopy(data, 0, narr, 0, len);
    System.arraycopy(tmp, 0, narr, len, sz);
    data = narr;
    len = nlen;
    if (len != data.length) {
    byte[] narr = new byte[len];
    System.arraycopy(data, 0, narr, 0, len);
    data = narr;
    return data;
    }//fin readFully
    This approach indicates that the PDF file is converted into an array of bytes, then is stored as binary in the BLOB field.
    Thanx in advance, and looking forward for your comments.

    You will probably need to use the setBinaryStream() method instead of setBytes().

  • Error displaying a jpg file loaded into a table with blob field

    This may not be the correct forum for this question, but if it isn't could someone direct me to the correct one.
    I have created a table with a blob field in which I have loaded a jpg image. This appeared to work correctly, but when I try to display the image in internet explorer it comes back and tells me that it doesn't recognize the file type. Enclosed is the table create, load, and display pl/sql code. Can anyone tell me what I am doing wrong. Thanks. For the mime/header I used owa_util.mime_header('images/jpg') because my image is a jpg file.
    The database is 10g
    -- Create table
    create table PHOTOS
    IMAGEID NUMBER(10),
    IMAGE BLOB,
    IMAGE_NAME VARCHAR2(50)
    load image
    CREATE OR REPLACE PROCEDURE load_file ( p_id number, p_photo_name in varchar2) IS
    src_file BFILE;
    dst_file BLOB;
    lgh_file BINARY_INTEGER;
    BEGIN
    src_file := bfilename('SNAPUNCH', p_photo_name);
    -- insert a NULL record to lock
    INSERT INTO photos (imageid, image_name, image)
    VALUES (p_id , p_photo_name, EMPTY_BLOB())
    RETURNING image INTO dst_file;
    -- lock record
    SELECT image
    INTO dst_file
    FROM photos
    WHERE imageid = p_id AND image_name = p_photo_name
    FOR UPDATE;
    -- open the file
    dbms_lob.fileopen(src_file, dbms_lob.file_readonly);
    -- determine length
    lgh_file := dbms_lob.getlength(src_file);
    -- read the file
    dbms_lob.loadfromfile(dst_file, src_file, lgh_file);
    -- update the blob field
    UPDATE photos
    SET image = dst_file
    WHERE imageid = p_id
    AND image_name = p_photo_name;
    -- close file
    dbms_lob.fileclose(src_file);
    END load_file;
    display image
    PROCEDURE display_image(p_id NUMBER) IS
    Photo BLOB;
    v_amt NUMBER DEFAULT 4096;
    v_off NUMBER DEFAULT 1;
    v_raw RAW(4096);
    BEGIN
    -- Get the blob image
    SELECT image
    INTO Photo
    FROM PHOTOS
    WHERE IMAGEID = p_id;
    owa_util.mime_header('images/jpg');
    BEGIN
    LOOP
    -- Read the BLOB
    dbms_lob.READ(Photo, v_amt, v_off, v_raw);
    -- Display image
    htp.prn(utl_raw.cast_to_varchar2(v_raw));
    v_off := v_off + v_amt;
    v_amt := 4096;
    END LOOP;
    dbms_lob.CLOSE(Photo);
    EXCEPTION
    WHEN NO_DATA_FOUND THEN
    NULL;
    END;
    END;
    The url I enter is: http://webdev:7777/tisinfo/tis.tiss0011.Display_Image?p_id=1

    Just a little more information. When I enter owa_util.mime_header('image/jpeg') I can't display the file. It just shows up with a red x for the file.
    When I enter owa_util.mime_header('image/jpg') it displays the file, but in the format
    ¿¿¿¿JFIF¿¿-Intel(R) JPEG Library, version [2.0.16.48]¿¿C
    This is the way I would expect it to look if I opened it with Notepad, or an application that doesn't recognize jpg files. Can anyone tell me what I am doing wrong?? Thanks.

  • Inserting Image into BLOB field from URL

    Is it possible to insert an image into a BLOB field from a URL? I don't have access to the filesystem on the server and I have a page that uses PL/PDF to generate dynamic PDF files from data I pull from the database. I would like to include my companies official header with logo on the top of the PDFs I generate and need to somehow get the image which I currently have uploaded to the images section in Application Express and can access from the "Shared Components => Images" section of the Application Builder. I just want to be able to either query whatever table holds those images or copy the image I need to a blob field in one of my tables so I can use it in my PDF document.
    The other alternative (which is what I first mentioned above) would be to try and perform an insert into the BLOB field in my table but the location of the image file would be like "http://www.myportal.com:7777/pls/htmldb/wwv_flow_file_mgr.get_file?p_security_group_id=1234567&p_flow_id=111&p_fname=myimage.jpg".
    Is this possible? If not, what can I do?
    Thanks in advance.

    The reason why I am asking this question in this forum is two-fold:
    1. I am using Application Express (AE).
    2. Since I am using AE all images that I upload to my workspace are stored in a table in a database and not as an actual file in a directory structure like in Windows etc. This being the case, I can't ever reference any of the files that I upload to my workspace in order to insert them into my BLOB field unless I know their physical location on disk (which of course does not exist b/c they are stored in the AE database somewhere). If I knew AE's database and table structure I could do a "select into ..." from whatever table stores my uploaded images and save those images to my own custom table in my BLOB field.

  • Insert/update image in Database from C:\ drive, In BLOB Field using PL/SQL

    is Any Body have a experience of Image file Saving, updating and getting from Table, i want to save it in Database not in any Folder or Link, its Urgent! i want to insert image in Table having BLOB field from C:\test.jpg

    Try the following link, some useful material :-
    http://www-rohan.sdsu.edu/doc/oracle/server803/A50580_2/img_uses.htm

  • Insert BlOB field in DB

    how to insert Word Documents in Blob field.
    I want to store doc(word) and xls(excel) files in DB field. then to open it for viewing, this will open MSword, if it is a word doc binary (blob), and open it in excel, if its blob field with xls file.
    Usman

    See for example DB taglib from Coldtags suite
    http://www.servletsuite.com/jsp.htm

Maybe you are looking for

  • PDF resizing Pages doc by default

    I've created a Pages doc that I need to export into a PDF. When I do this and open the PDF file, I see that it is resized to about 85% to 90% of the original size. There seems to be nothing I can do to make this not happen. I need the PDF to reflect

  • Regarding 10.2.0.3 on AIX 5.3

    Hi Gurus, I am in one of our clients site and visited here to see Oracle problems which they are facing. They have recently upgraded their oracle database release to 10.2.0.3 on AIX-5.3(64bit production) Actually speaking they have a application serv

  • Fast Forward & Rewind doesn't work for long audio files

    I have loaded several mp3 files into the Pre via USB.  Some are 2+ hours long, some are a few minutes.  Fast forwarding thru the track doesn't work on the long files.  Holding down the fast-forward arrows will cause the audio to stutter in the same p

  • Why can't I sort in Open/Save dialog boxes?

    Ever since I upgraded to ML, I found that I am unable to sort the listing in open/save dialog boxes. Currently the folder contents (List view) are all sorted by reverse Name. There are times I rather sort by Modification Date or Creation Date. The re

  • Problem in formulas

    Dear Gurus. Iam a doubt regarding Formulas. I have a Sales order date and Delivery date in my report i want to write a formula which gives Delivery date - Salesorder date. For EX: Sales order date is 1/3/2010 and delivery date is 4/3/2010 i want to g