CLOB значительно дороже (медленнее) и с ними сложнее работать, чем с VARCHAR2. Если вы без необходимости используете CLOB вместо VARCHAR2, вы получаете измеримое снижение производительности.
В конце вы должны, как было отмечено ранее, использовать правильный тип данных для правильной работы.
1) если вы храните 4000 байтов или меньше в базе данных, используйте VARCHAR2, в противном случае используйте CLOB.
2) если вы храните 32000 байт или меньше в PLSQL, используйте VARCHAR2, в противном случае используйте CLOB.
Это все о том, что вам нужно. Если ваши данные могут превысить предел VARCHAR2, используйте CLOB, в противном случае используйте VARCHAR2.
Что касается явных негативов, учтите, что при работе с типами данных LOB LOB может быть либо ВРЕМЕННЫМ (никогда не хранящимся в реальной строке таблицы), либо ПОСТОЯННЫМ (хранящимся в реальной строке таблицы). Если вы динамически создаете CLOB в PLSQL и передаете этот CLOB JAVA или другому внешнему клиенту, вы создали временный CLOB и вытолкнули его из-под контроля базы данных Oracle. Это означает, что ваш код, который принимает временный CLOB, теперь отвечает за освобождение CLOB, когда это будет сделано с ним. В вашем коде должен быть метод, встроенный в его среду, который вы можете использовать для этой цели. Если вы этого не сделаете, табличное пространство временного хранения в конечном итоге заполнится, и ваша база данных остановится (перестанет работать). Это не будет сбой, это просто не работает. Скорее всего, потребуется перезагрузка. Проблема в том, что многие инструменты разработки (например, многие версии Java) не имеют необходимого библиотечного вызова.
Удачи.