es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

El método OracleBulkCopy WriteToServer no funciona para registros grandes.

Recientemente hemos migrado de Oracle 12c a Oracle 19c, donde para ODP.Net hemos utilizado DDTek.Oracle pero para el código migrado estamos usando Oracle.DataAccess dll.

Tenemos el requisito de cargar datos de archivo en la base de datos, para lograr esto hemos implementado código .Net utilizando Oracle.DataAccess.Client BulkCopy, funcionalidad WriteToServer() donde tenemos Oracle19c como base de datos, tenemos un archivo de 2.6 millones de registros que está arrojando un error:

Se intentó leer o escribir en memoria protegida. Esto suele indicar que la memoria está dañada.

El mismo código funciona bien para Oracle 12c con DDTek.Oracle dll para 2.6 millones de registros, pero no en la versión de Oracle migrada.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Basándose en el mensaje de error “Se intentó leer o escribir memoria protegida. Esto suele indicar que la memoria está dañada”, parece que el problema está relacionado con la memoria. Este mensaje de error suele ocurrir cuando la aplicación .NET intenta realizar una operación ilegal que requiere acceso a la memoria protegida.

    Las posibles causas de este problema podrían ser:

    1. Memoria insuficiente: Este error podría ocurrir cuando hay memoria insuficiente disponible para que la aplicación .NET realice la operación solicitada. En este caso, puede intentar aumentar la cantidad de memoria disponible para la aplicación o optimizar el código que está causando el problema.
    2. Problemas de compatibilidad: Este error también podría ocurrir debido a problemas de compatibilidad entre Oracle.DataAccess.dll y Oracle 19c. Para resolverlo, puede intentar usar una versión diferente de Oracle.DataAccess.dll que sea compatible con Oracle 19c.

    3. Corrupción en la base de datos de Oracle: El error también podría ocurrir si hay corrupción en la base de datos de Oracle. En este caso, puede intentar ejecutar herramientas de reparación para solucionar la corrupción de la base de datos.

    En resumen, el problema está relacionado con la memoria y podría ser causado por memoria insuficiente, problemas de compatibilidad entre Oracle.DataAccess.dll y Oracle 19c o corrupción en la base de datos de Oracle. Puede intentar aumentar la cantidad de memoria disponible para la aplicación, usar una versión diferente de Oracle.DataAccess.dll o ejecutar herramientas de reparación para solucionar la corrupción de la base de datos.

Comments are closed.