Antes do Oracle 12.1, um
VARCHAR2
A coluna está limitada a armazenar 4.000 bytes de dados no conjunto de caracteres do banco de dados, mesmo que seja declarado VARCHAR2(4000 CHAR)
. Como cada caractere em sua string requer 2 bytes de armazenamento no conjunto de caracteres UTF-8, você não poderá armazenar mais de 2.000 caracteres na coluna. Claro, esse número mudará se alguns de seus personagens realmente exigirem apenas 1 byte de armazenamento ou se alguns deles exigirem mais de 2 bytes de armazenamento. Quando o conjunto de caracteres do banco de dados é Windows-1252, cada caractere em sua string requer apenas um único byte de armazenamento para que você possa armazenar 4.000 caracteres na coluna. Como você tem strings mais longas, seria possível declarar a coluna como um
CLOB
em vez de um VARCHAR2
? Isso removeria (efetivamente) a limitação de comprimento (há um limite no tamanho de um CLOB
que depende da versão do Oracle e do tamanho do bloco, mas está pelo menos na faixa de vários GB). Se você estiver usando o Oracle 12.1 ou posterior, o
max_string_size
permite que você aumente o tamanho máximo de um VARCHAR2
coluna de 4.000 bytes a 32.767 bytes
.