تابع checksum در اوراکل 21c

در نسخه 12c، اوراکل با ارائه تابع STANDARD_HASH، امکان محاسبه hash value را برای یک فیلد و یا عبارت فراهم کرده است:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
SQL> select id,salary,substr(STANDARD_HASH(id||salary),1,20) hash_id_sal from tbl1;
ID SALARY HASH_ID_SAL
---------- ---------- ----------------------
1 10 5E796E48332AF4142B10
2 12 E2154FEA5DA2DD0D1732
3 17 F44A286F486D11990238
4 18 93AC1946CB917ABC4735
SQL> select id,salary,substr(STANDARD_HASH(id||salary),1,20) hash_id_sal from tbl1; ID SALARY HASH_ID_SAL ---------- ---------- ---------------------- 1 10 5E796E48332AF4142B10 2 12 E2154FEA5DA2DD0D1732 3 17 F44A286F486D11990238 4 18 93AC1946CB917ABC4735
SQL> select id,salary,substr(STANDARD_HASH(id||salary),1,20) hash_id_sal from tbl1;
        ID     SALARY HASH_ID_SAL
---------- ---------- ----------------------
         1         10 5E796E48332AF4142B10
         2         12 E2154FEA5DA2DD0D1732
         3         17 F44A286F486D11990238
         4         18 93AC1946CB917ABC4735

با این روش می توانیم از تغییر مقدار سطرهای جدول باخبر شویم. البته در نسخه های قبل از 12c هم می توانستیم از توابع دیگری نظیر ora_hash بدین منظور استفاده کنیم:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
SQL> select id,salary,ora_hash(id||salary) hash_id_sal from tbl1;
ID SALARY HASH_ID_SAL
---------- ---------- -----------
1 10 3316966336
2 12 1402677848
3 17 3795753203
4 18 936769390
SQL> select id,salary,ora_hash(id||salary) hash_id_sal from tbl1; ID SALARY HASH_ID_SAL ---------- ---------- ----------- 1 10 3316966336 2 12 1402677848 3 17 3795753203 4 18 936769390
SQL> select id,salary,ora_hash(id||salary)  hash_id_sal from tbl1;

        ID     SALARY HASH_ID_SAL
---------- ---------- -----------
         1         10  3316966336
         2         12  1402677848
         3         17  3795753203
         4         18   936769390

در نسخه 21c هم قابلیت جدیدی در این زمینه ارائه شد و اوراکل با معرفی تابع checksum، امکان شناسایی تغییر دیتا را در سطح ستون فراهم کرده است.

(بیشتر…)