Datatable ORA-39776:加载表时发生致命的直接路径API错误
我正试图通过Oracle ODP.NET(版本5(11.2.0.3.20))使用OracleBulkCopy将.NET数据库传递到Oracle中: 作业是从SQL Server数据库检索的:Datatable ORA-39776:加载表时发生致命的直接路径API错误,datatable,oracle11g,odp.net,Datatable,Oracle11g,Odp.net,我正试图通过Oracle ODP.NET(版本5(11.2.0.3.20))使用OracleBulkCopy将.NET数据库传递到Oracle中: 作业是从SQL Server数据库检索的: SqlDataReader reader; cmdSql.CommandTimeout = 120; cmdSql.CommandType = CommandType.StoredProcedure; cmdSql.CommandText =
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.");
传递的字段之一是签名字段:
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) ;
现在,当我运行这段代码将数据行从Sql Server复制到Oracle时,它工作得很好。签名图像被复制到另一个位置
但是,如果签名图像的大小大于4K左右,我会收到以下错误消息:
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:
如果我写回SQL Server表,则不存在此问题
你知道怎么了吗
谢谢。将数据推送到定义为全局临时表而不是标准数据库表的Oracle表时,会出现此问题
Oracle支持日志已生成。Oracle有什么好消息吗?
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: