ORA-39776: schwerwiegender Direct Path API-Fehler beim laden der Tabelle

Ich versuche zu pass ein .NET-Datenbank in eine Oracle mit OracleBulkCopy über die Oracle ODP.NET (Release 5 (11.2.0.3.20)):

        //Copy table to Oracle
        OracleBulkCopy bulkCopy = new OracleBulkCopy(cmdOra.Connection);
        bulkCopy.DestinationTableName = "INBOUND_JOB_TMP";

        bulkCopy.BatchSize = 10000;
        bulkCopy.BulkCopyTimeout = 300;
        bulkCopy.WriteToServer(dtJobs);

        bulkCopy.Dispose();
        bulkCopy = null;

Die jobs abgerufen werden aus einer SQL Server-Datenbank:

        SqlDataReader reader;
        cmdSql.CommandTimeout = 120;
        cmdSql.CommandType = CommandType.StoredProcedure;
        cmdSql.CommandText = "DOWNLOAD_JOBS";
        cmdSql.Parameters.Clear();
        reader = cmdSql.ExecuteReader();

        //Retrieve Job records
        dtJobs = new DataTable();
        if (reader.HasRows)
        {
            dtJobs.Load(reader);
        }
        else
            Trace.WriteLine("No rows returned.");

Eines der Felder übergeben wird ein Feld Signatur:

    SQL Server:

    CREATE TABLE [dbo].[JOBS_DOWNLOAD](
        [UniqueId] [int] IDENTITY(1,1) NOT NULL,
        [MobileJobNo] [varchar](20) NOT NULL,
        [MobileJobStatus] [varchar](1) NULL,
        [TenantSignatureImage] [varbinary](max) NULL,
    PRIMARY KEY CLUSTERED 
    (
        [UniqueId] ASC
    )


    Oracle:

    CREATE TABLE "DBA"."INBOUND_JOB_TMP" 
       ("UNIQUE_ID" NUMBER(20,0), 
        "MOBILE_JOB_NO" VARCHAR2(20) NOT NULL ENABLE, 
        "TENANT_SIGNATURE" BLOB) ;

Wenn ich jetzt diesen code ausführen zum kopieren von Zeilen von Daten von Sql Server zu Oracle funktioniert es einwandfrei. Das abbild der Unterschrift ist kopiert über.

Jedoch, wenn die Signatur Bild größer ist als etwa 4K in der Größe, bekomme ich die folgende Fehlermeldung:

    Oracle.DataAccess.Client.OracleException was unhandled by user code
      HResult=-2147467259
      Message=Error in row '1' column '1'
    ORA-39776: fatal Direct Path API error loading table DBA.INBOUND_JOB_TMP 
    ORA-00600: internal error code, arguments: [25029], [2147483647], [], [], [], [], [], [], [], [], [], []
      Source=Oracle Data Provider for .NET
      ErrorCode=-2147467259
      DataSource=""
      Number=-2754
      Procedure=""
      StackTrace:
           at Oracle.DataAccess.Client.OracleBulkCopy.PerformBulkCopy()
           at Oracle.DataAccess.Client.OracleBulkCopy.WriteDataSourceToServer()
           at Oracle.DataAccess.Client.OracleBulkCopy.WriteToServer(DataTable table, DataRowState rowState)
           at Oracle.DataAccess.Client.OracleBulkCopy.WriteToServer(DataTable table)
           at JobDataSync.SyncTables.Jobs.PostJobs() in C:\Development\JobSyncService\JobDataSync\SyncTables\Jobs.cs:line 114
           at JobDataSync.SyncTables.Jobs.Sync() in C:\Development\JobSyncService\JobDataSync\SyncTables\Jobs.cs:line 42
           at JobDataSync.TransactionalDataSync.SyncData() in C:\Development\JobSyncService\JobDataSync\TransactionalDataSync.cs:line 73
           at JobDataSyncConsole.DebugConsole.syncTimer_Elapsed(Object sender, ElapsedEventArgs e) in C:\Development\JobSyncService\JobDataSync\Console\DebugConsole.cs:line 74
           at System.Timers.Timer.MyTimerCallback(Object state)
      InnerException: 

Wenn ich schrieb zurück, um eine SQL Server-Tabelle verwenden, besteht dieses problem nicht.

Irgendwelche Ideen, was falsch ist?

Dank.

InformationsquelleAutor user625832 | 2013-01-07
Schreibe einen Kommentar