I did some digging and found that the problem comes from a trigger on the category_translations table, inside this trigger there's a call to category_synonym.reindex, this procedure does this:
-- rebuild synonym index
v_len := length (v_name) - 2;
v_i := 1;
while (v_i <= v_len) loop
insert into category_synonym_index
values (reindex.synonym_id, substr (v_name, v_i , 3));
v_i := v_i + 1;
The second column of category_synonym_index table is CHAR(3) in Oracle but when it finds a special char it says:
OCIStmtExecute ()': ORA-01401: inserted value too large for column
I checked this in postgres and it's exactly the same and it works, the second column of category_synonym_index table is character(3).
Does anybody knows if there's a difference on how Oracle and Postgres treat the size of a special char.