You dont know if those are duplicates are not - try this
create table xxx_test_tab(
val varchar2(100), tno number );
insert /*+ APPEND */ into xxx_test_tab
with vals as
( select 'Steve' || '~' || 'Johny' || '~' || 'Alex'||'~'|| to_char (to_char ( SYSTIMESTAMP, 'SSSSSFF9')/77777 )||'~'||dbms_random.random v
from dual connect by level <= 1000000
)
select
v, ora_hash(v)
from vals;
commit;
select *
from
( select val, count(*) over ( partition by tno ) as hash_dup
from xxx_test_tab
)
where hash_dup > 1;
Having said that - dont forget that hash values are exactly that ... hash values. They are *nearly* unique, not *guaranteed* unique.
But the demo above - see how you go.