Verifica di consistenza

Opzioni di distribuzione: IBM Netezza Appliance

Imparate a conoscere il controllo di coerenza.

utilità di checksum dei dati nz_md5_qsum

Il comando nz_md5_qsum calcola un checksum univoco per una query su una tabella. Il comando offre un modo pratico per confrontare i dati tra i nodi e determinare se i contenuti delle tabelle sono sincronizzati. Utilizzare l'utilità quando la vista _v_replication_sync mostra che il subordinato ha applicato tutte le transazioni impegnate dal primario, indicando che i nodi sono sincronizzati.

L'utilità nz_md5_qsum è implementata come una funzione UDF che deve essere eseguita sul database SYSTEM. L'input per l'utility è una dichiarazione SELECT.
SELECT <col_list> FROM <database>..<user_table>[WHERE ...]
La clausola WHERE è facoltativa. La tabella utenti fornita alla query SELECT può avere un massimo di 64 colonne.

Esempio:

SELECT nz_md5_qsum ('SELECT * FROM test..table1');
L'output dell'utilità nz_md5_qsum è una tabella con le seguenti colonne.
Tabella 1. Output dell'utilità nz_md5_qsum
Nome colonna Tipo di dati Valore
DATASO char(32) checksum a 32 cifre esadecimali dei dati della tabella.
SCHEMA char(32) checksum a 32 cifre esadecimali del layout della tabella.
NUMROWS BIGINT Numero di righe.
NUMCOLS int Numero di colonne.
Poiché calcola il checksum sul set di dati restituito dalla query, l'utilità nz_md5_qsum ha un impatto variabile sulle prestazioni del nodo Netezza quando viene invocata per una tabella di grandi dimensioni.

Installazione dell'utilità nz_md5_qsum

È necessario installare l'utility nz_md5_qsum sia sul sistema primario che su quello subordinato. Il programma di installazione si trova nel seguente percorso: /nz/kit/bin/adm/tools/nzqsum.

  1. Eseguire il comando riportato di seguito:
    tar xvf nz_md5_qsum.tar
  2. Come admin eseguire lo script installQsum.pl con un nome utente e una password validi.

    Se si vuole installare l'utilità nz_md5_qsum come utente non amministratore, utilizzare un flag aggiuntivo -fenced=1.
    Esempio:
    $  ./installQsum.pl -u testuser -pw password@123 -fenced=1
    Installing QSUM to database system
    Done
    Per installare correttamente questa utility come utente non amministratore, è necessario disporre dei seguenti permessi minimi.
    YSTEM.ADMIN(ADMIN)=> \dpu testuser
                                                User object permissions for user 'TESTUSER'
     Database Name | Schema Name | Object Name | L S I U D T L A D B L G O E C R X A | D G U S T E X Q Y V M I B R C S H F A L P N S R
    ---------------+-------------+-------------+-------------------------------------+-------------------------------------------------
     GLOBAL        | GLOBAL      | TABLE       | X X                                 |
     GLOBAL        | GLOBAL      | PROCEDURE   |                           X         |
     GLOBAL        | GLOBAL      | GLOBAL      |                                     |         X X       X               X X   X
    (3 rows)
    Object Privileges
        (L)ist (S)elect (I)nsert (U)pdate (D)elete (T)runcate (L)ock
        (A)lter (D)rop a(B)ort (L)oad (G)enstats Gr(O)om (E)xecute
        Label-A(C)cess Label-(R)estrict Label-E(X)pand Execute-(A)s
    Administration Privilege
        (D)atabase (G)roup/Role (U)ser (S)chema (T)able T(E)mp E(X)ternal
        Se(Q)uence S(Y)nonym (V)iew (M)aterialized View (I)ndex (B)ackup
        (R)estore va(C)uum (S)ystem (H)ardware (F)unction (A)ggregate
        (L)ibrary (P)rocedure U(N)fence (S)ecurity Scheduler (R)ule
    Utilizzate questo comando SQL per concedere tutti questi permessi:
    \c
    drop user testuser;
    create user testuser with password 'password1';
    
    grant create table  to testuser;
    grant create function to testuser;
    grant create procedure to testuser;
    grant create temp table to testuser;
    grant create view to testuser;
    grant create aggregate to testuser;
    grant execute on procedure to testuser;
    grant list, select on table to testuser;

utilizzo dello script installQsum.pl

Tabella 2. Uso dello script installQsum.pl
Immissione Descrizione
-u Specifica l'ID utente utilizzato per connettersi al database SYSTEM. L'utente predefinito è NZ_USER.
-pw Specifica la password utilizzata per connettersi al database SYSTEM. La password predefinita è NZ_PASSWORD.
-disinstallare Disinstalla l'utilità.
-fenced=1 | -f=1 Installa le funzioni intermedie, aggrega in modalità recintata.
Esempio:
\c
drop database db1;
create database db1;

\c db1
create table table1(c1 int, c2 varchar(10));
insert into table1 values(1, 'asdf');

\c system testuser password1
SELECT NZ_MD5_QSUM('SELECT * FROM db1..table1');
Output:
SYSTEM.ADMIN(TESTUSER)=> SELECT NZ_MD5_QSUM('SELECT * FROM db1..table1');
             DATASUM              |            SCHEMASUM             | NUMROWS | NUMCOLS
----------------------------------+----------------------------------+---------+---------
 0D030E080C00090104080D0605040D0E | 060E0D09090000000808070D0A070303 |       1 |       2
(1 row)