Isso também pode acontecer com colunas varchar2. Isso é bastante reproduzível com PreparedStatements por meio de JDBC simplesmente
- criar uma tabela com uma coluna de varchar2 (20 ou qualquer tamanho arbitrário) e
- inserindo na tabela acima uma linha contendo mais de 20 caracteres
Então, como dito acima, pode estar errado com os tipos ou a largura da coluna excedida.
Observe também que como varchar2 permite 4k caracteres no máximo, o limite real será de 2k para caracteres de byte duplo
Espero que isto ajude