Если вы пользуетесь сравнительно свежими версиями Oracle, вам следует обратиться к настройке NLS_SORT / NLS_COMP, а не к использованию функции LOWER ().
Если вы не хотите оказывать глобальное влияние на экземпляр,Вы можете использовать функцию NLSSORT (), чтобы установить NLS_SORT для области действия конкретного запроса.
SQL> create table case_insensitive(a varchar2(10));
Table created.
SQL> insert into case_insensitive values('D');
1 row created.
SQL>
SQL>
SQL> c/'D/'c
1* insert into case_insensitive values('c')
SQL> /
1 row created.
SQL> c/'c/'B
1* insert into case_insensitive values('B')
SQL> /
1 row created.
SQL> c/'B/'a
1* insert into case_insensitive values('a')
SQL> /
1 row created.
SQL> commit;
Commit complete.
SQL> select * from case_insensitive;
A
----------
D
c
B
a
SQL> select * from case_insensitive order by a;
A
----------
B
D
a
c
SQL> select * from case_insensitive order by nlssort(a,'NLS_SORT=BINARY_CI');
A
----------
a
B
c
D
Хороший пример этого можно найти здесь.