Puoi usare DBMS_SQLHASH.GETHASH
per questo. I risultati della query devono essere ordinati e non devono contenere LOB, altrimenti i risultati non saranno deterministici.
select dbms_sqlhash.gethash(q'[select * from some_table order by 1,2]', digest_type => 1)
from dual;
Dove digest_type 1 =HASH_MD4, 2 =HASH_MD5, 3 =HASH_SH1.
Quel pacchetto non è concesso a nessuno per impostazione predefinita. Per usarlo, avrai bisogno di qualcuno che acceda come SYS ed esegua questo:
SQL> grant execute on dbms_sqlhash to <your_user>;
I risultati della query devono essere ordinati, come descritto in "Bug 17082212:DBMS_SQLHASH RISULTATI DIVERSI DA PERCORSO DI ACCESSO DIVERSO".
Non sono sicuro del motivo per cui i LOB non funzionano, ma potrebbe essere correlato al modo in cui la funzione ORA_HASH
non funziona bene con le LOB. Questo articolo di Jonathan Lewis include alcuni esempi di ORA_HASH
restituendo risultati diversi per gli stessi dati LOB. E le versioni recenti di SQL Language Reference avvertono che ORA_HASH
non supporta le LOB.