Un método sin usar "El almacén externo seguro de contraseñas" (sea lo que sea) es agregar una columna RAW(16) a la tabla para almacenar un nombre de usuario y una contraseña con hash:
alter table mytable add password raw(16);
Luego almacene el nombre de usuario y la contraseña con hash de esta manera:
insert into mytable (username, password, ...)
values (:username, dbms_obfuscation_toolkit.md5
(input => utl_i18n.string_to_raw
(upper(:username)||:password))
);
Luego, cuando un usuario intente iniciar sesión con un nombre de usuario y contraseña, puede verificarlos de esta manera:
select 'OK'
from mytable
where username = :username
and password = dbms_obfuscation_toolkit.md5
(input => utl_i18n.string_to_raw
(upper(:username)||:password));
De esta manera, nadie puede averiguar cuál es la contraseña almacenada (a menos que sea por fuerza bruta).