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 val, count(*) over ( partition by tno ) as hash_dup
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.