Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Oracle mendapatkan nilai checksum untuk potongan data yang ditentukan oleh klausa pilih

Anda dapat menggunakan DBMS_SQLHASH.GETHASH untuk ini. Hasil kueri harus diurutkan dan tidak boleh berisi LOB apa pun, atau hasilnya tidak akan bersifat deterministik.

select dbms_sqlhash.gethash(q'[select * from some_table order by 1,2]', digest_type => 1)
from dual;

Di mana digest_type 1 =HASH_MD4, 2 =HASH_MD5, 3 =HASH_SH1.

Paket itu tidak diberikan kepada siapa pun secara default. Untuk menggunakannya, Anda memerlukan seseorang untuk masuk sebagai SYS dan menjalankan ini:

SQL> grant execute on dbms_sqlhash to <your_user>;

Hasil kueri harus diurutkan, seperti yang dijelaskan dalam "Bug 17082212 :DBMS_SQLHASH HASIL BERBEDA DARI JALAN AKSES BERBEDA".

Saya tidak yakin mengapa LOB tidak berfungsi, tetapi mungkin terkait dengan cara fungsi ORA_HASH tidak bekerja dengan baik dengan LOB. Artikel Jonathan Lewis ini menyertakan beberapa contoh ORA_HASH mengembalikan hasil yang berbeda untuk data LOB yang sama. Dan versi terbaru dari Referensi Bahasa SQL memperingatkan bahwa ORA_HASH tidak mendukung LOB.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 12c VARCHAR2(32767)

  2. Dapatkan kueri dari file di SPRING BOOT menggunakan @Query

  3. Oracle masukkan jika tidak ada pernyataan

  4. Gunakan tnsnames.ora di Oracle SQL Developer

  5. Tingkatkan Performa Dengan Kumpulkan Massal Di Oracle