2009-05-15 4 views
1

Je cogne contre un mur de briques au cours du traitement normal SQLPourquoi est-ce que je reçois une limite d'insertion de 255 enregistrements sur Oracle 10g avec DBExpress?

Lorsque vous êtes connecté à Oracle 10g à partir d'un client distant w/DBExpress, - en utilisant la norme dbxpora.dll + oci.dll

Lorsque dans une transaction, après exactement 255 insertions d'enregistrement, la connexion se bloque pendant 30 secondes et renvoie l'erreur:

ORA-03114 (as if it lost the connection...)

Cela se produit lors de l'insertion de 255 enregistrements dans une table tandis que dans une transaction. (lorsqu'il est exécuté localement sur la boîte de db tout fonctionne bien)

Y at-il quelque chose qui me manque?

Répondre

0

Eh bien, je ne connais pas les bases de données Oracle spécifiquement, mais je sais que 255 est un nombre magique. C'est la valeur maximale que vous pouvez exprimer dans un seul octet. Il y a probablement quelque chose qui est déclaré comme un octet qui compte vos enregistrements, et vous le débordez. Essayez de reconstruire l'intégralité de votre projet en activant la vérification de la plage et la vérification de débordement, et voyez si elle déclenche une exception quelque part lorsque vous essayez de le faire. Cela devrait aider à le retrouver, si c'est dans le code que vous compilez. Si c'est dans l'une des bibliothèques, cela n'aidera pas.

+0

Peut-être que vous avez manqué le "(lorsqu'il est exécuté localement sur la boîte db tout fonctionne bien)" – Shane

+0

... oh. J'ai mal lu. Je pensais que vous vouliez exécuter votre transaction sur la base de données manuellement. Dans ce cas, passons. C'est toujours probablement un débordement d'entier, mais le problème est dans votre couche de transport quelque part. Si vous n'obtenez pas de bonnes réponses ici, essayez de le signaler à Oracle. –

+0

merci ... mais im penser votre correct dans la couche de transport ... c'est-à-dire. DBExpress et Oracle10g. – Shane

Questions connexes