Если вы храните простой текст, это должен быть CLOB, а не BLOB, и тогда вы все равно можете делать запросы, используя LIKE. Большой двоичный объект содержит двоичные данные, структура которых Oracle не знает, поэтому он не может искать их таким образом.
Это работает для CLOB любой длины (по крайней мере, в Oracle 12C):
SQL> create table t1 (c clob);
Table created.
SQL> declare
2 x clob;
3 begin
4 for i in 1..100 loop
5 x := x || rpad('x', 32767, 'x');
6 end loop;
7 x := x || 'z';
8 for i in 1..100 loop
9 x := x || rpad('x', 32767, 'x');
10 end loop;
11 insert into t1 values (x);
12 end;
13 /
PL/SQL procedure successfully completed.
SQL> select dbms_Lob.getlength(c) from t1 where c like '%z%';
DBMS_LOB.GETLENGTH(C)
---------------------
6553401
Обратите внимание, что в этом 6555401 байтовом CLOB есть только один 'z' - прямо в середине:
SQL> select instr(c, 'z') from t1;
INSTR(C,'Z')
------------
3276701