Skip to main content
Question

dbms error ora-12899


francis_m
Contributor
Forum|alt.badge.img+7
Hi FME users!

 

I have a workbench that read Mapinfo tab file and write it to a GEODATABASE_SDE into Oracle.

 

The error is very weird.  Some record pass but there is a fail on some others.

 

The errors is :

 

 

ERROR |An error occurred while attempting to insert a row into the table 'VLORA1A.ENVIRONNEMENT' using a cursor. The error number from ArcObjects is: '-2147216072'. The error message from ArcObjects is: {Underlying DBMS error [ORA-12899: valeur trop grande pour la colonne "VLORA1A"."ENVIRONNEMENT"."REMARQUE_ELEM" (réelle : 266, maximum : 254)

 

 

but the value REMARQUE_ELEM is empty in my data :

 

 

2014-05-08 08:40:04| 330.5|  0.0|ERROR |Attribute(string)        : `PORTEE_A' has value `1001'

 

2014-05-08 08:40:04| 330.5|  0.0|ERROR |Attribute(string)        : `PORTEE_DE' has value `1001'

 

2014-05-08 08:40:04| 330.5|  0.0|ERROR |Attribute(string)        : `REMARQUE_ELEM' has value `'

 

2014-05-08 08:40:04| 330.5|  0.0|ERROR |Attribute(string)        : `RESPONSA' has value `St-Hubert'

 

2014-05-08 08:40:04| 330.5|  0.0|ERROR |Attribute(encoded: utf-8): `SUFCIREF' has value `'

 

 

You can see that the value REMAQUE_ELEM is empty.

 

Even if I try with a value like "PONCEAU" it fail.

 

But Other records with value like "Cabane à sucre, montée Lapointe" pass perfectly

 

 

The column in Oracle is formated like this :

 

REMARQUE_ELEM : VARCHAR2(254 BYTE)

 

 

Do I have to reset the Oracle Table, is it the registry SDE ?

 

It looks like the registry of SDE is synchro with the Oracle table.

 

 

any help would be appreciated!

 

thanks!

10 replies

david_r
Celebrity
  • May 8, 2014
Hi,

 

 

first of all, you could try using an AttributeTrimmer on REMARQUE_ELEM to see if that helps.

 

 

If not, make sure that REMARQUE_ELEM is defined with a max length of 254 characters in the FME output feature type.

 

 

David

francis_m
Contributor
Forum|alt.badge.img+7
  • Author
  • Contributor
  • May 8, 2014
Hi David,

 

I already have an attribute trimmer down to 253.

 

I also clean the attribute of all blank space that are unnecessary.

 

And my FME output feature type is a char 254.  Seems all clean.

 

I suspect more the mapinfo.  If i run the workbench with a max feature read, it goes well and no fail.  But if I read the whole thing (more than 7000 objects) it fail...

 

GRRRRR

 

 

 


david_r
Celebrity
  • May 8, 2014
Hi,

 

 

how about inserting a SubstringExtractor just before the output feature type? Send End Index to 253.

 

 

David

francis_m
Contributor
Forum|alt.badge.img+7
  • Author
  • Contributor
  • May 8, 2014
What I actually do on the painfull ATTRIBUTE :

 

1 - clean the blank space with AttributeTrimmer

 

2 - Calculate the string lenght

 

3 - if the string lenght is longer than 253 I do a SubstringExtractor (0-252)

 

 

I'm now trying with encoding and decoding just before writing into gdb_sde but still fail

francis_m
Contributor
Forum|alt.badge.img+7
  • Author
  • Contributor
  • May 8, 2014
I can push value like "3023, CH. DE LA BUTTE-AUX-RENARDS, VARENNES, COORDONNÉES APPROXIMATIVES" but "PONCEAU" won't pass...

 

 


david_r
Celebrity
  • May 8, 2014
And if you look at the field definition of REMARQUE_ELEM in ArcCatalog, which length is given there?

 

 

David

francis_m
Contributor
Forum|alt.badge.img+7
  • Author
  • Contributor
  • May 8, 2014
The GDB say : Text 254...

 

If I change the value in the MapInfo file it pass.

 

If I wrote back the same value (not copy paste) it pass too...

 

It's the mapinfo I think.  But how can I manage this into a workbench...

 


francis_m
Contributor
Forum|alt.badge.img+7
  • Author
  • Contributor
  • May 8, 2014

Well, after many test, the mapinfo is OK, the workbench seems perfect.

 

it looks like a db problem.  but the dba is off for the week.  not good.

 

Any idea welcome!

francis_m
Contributor
Forum|alt.badge.img+7
  • Author
  • Contributor
  • May 8, 2014
If I read just a few records (including the one that make fme fail earlier) : full success.

 

If I read many records (including the one that make fme fail earlier : FAIL

francis_m
Contributor
Forum|alt.badge.img+7
  • Author
  • Contributor
  • May 14, 2014
Hi David,

 

We finally resolve this :

 

My attribut is 254 char (varchar2 in oracle).

 

But Oracle record the data in HEX encoding and my limit is 508 bytes (2x254 = 508 bytes).

 

So I have to test the lenght of the value to be lower than 254 and the lenght of the value in hexadecimal have to be lower than 508.  If not (in a loop) I test those lenght until I reach the maximum permitted.

 

 

Thank you for your help.

 

 

The problem I don't like is that FME was logging me the wrong entity when the fails occured.

 

The entity after was the problem... I think you should check this.

 

It's the first time it happens to me.

Cookie policy

We use cookies to enhance and personalize your experience. If you accept you agree to our full cookie policy. Learn more about our cookies.

 
Cookie settings