Gestión de la conexión de datos para EA remotos
La función nzaejobcontrol incluye funciones para gestionar conexiones remotas de datos AE. Esta funcionalidad es útil en situaciones en las que surge un problema con el EA, por ejemplo, si un EA creado por el usuario falla o una sesión en el dispositivo Netezza finaliza abruptamente
En cualquier caso, uno de los lados de una conexión de datos AE podría quedarse colgado esperando datos. Además, es posible que queden archivos temporales utilizados para la comunicación de datos. Se pueden utilizar dos comandos de la función nzaejobcontrol -conexiones y reparación-para reconocer y reparar estos problemas.
El comando conexiones enumera todas las conexiones de datos AE remotas, tanto en las SPU como en el host. Tenga en cuenta que una sola consulta que se ejecuta en las SPU utiliza varias conexiones de datos, una por dataslice, mientras que una consulta que se ejecuta en el host sólo utiliza una única conexión de datos.
Los siguientes ejemplos se ejecutan en un sistema con una SPU compuesta por cuatro dataslices.
SELECT * FROM _v_dual_dslice, TABLE WITH FINAL(inza..nzaejobcontrol('connections',
dsid, null, false, null, null));
DSID | AERESULT | AERC | AETOTAL | AENAME | AEDSLICE | AESESSION
| AETRANS | AEHOSTNAME | AEPID | AECOMMAND | AETID |
AEBUILD | AENZREPVER | AEVERMISMATCH
------+----------------------+------+---------+------------+----------
+-----------+---------+------------+-------+------------------------------------
+-------+---------+------------+---------------
3 | OK | 0 | 8 | datamatrix | 1 | 17205
| 43310 | spu0101 | 25495 | /var/opt/nz/local/tmp/nzrep_D2zMNV | |
| |
3 | OK | 0 | 8 | datamatrix | 4 | 17205
| 43310 | spu0101 | 25495 | /var/opt/nz/local/tmp/nzrep_wIJ5mV | |
| |
3 | OK | 0 | 8 | datamatrix | 2 | 17205
| 43310 | spu0101 | 25495 | /var/opt/nz/local/tmp/nzrep_GWL2dV | |
| |
3 | OK | 0 | 8 | datamatrix | 3 | 17205
| 43310 | spu0101 | 25495 | /var/opt/nz/local/tmp/nzrep_DpCZeV | |
| |
3 | ERROR: (AE Stopped) | -1 | 8 | datamatrix | 3 | 17099
| 43304 | spu0101 | 18120 | /var/opt/nz/local/tmp/nzrep_HAyLm0 | |
| |
3 | ERROR: (AE Stopped) | -1 | 8 | datamatrix | 2 | 17099
| 43304 | spu0101 | 18120 | /var/opt/nz/local/tmp/nzrep_uTHvp3 | |
| |
3 | ERROR: (AE Stopped) | -1 | 8 | datamatrix | 4 | 17099
| 43304 | spu0101 | 18120 | /var/opt/nz/local/tmp/nzrep_oHGbE0 | |
| |
3 | ERROR: (AE Stopped) | -1 | 8 | datamatrix | 1 | 17099
| 43304 | spu0101 | 18120 | /var/opt/nz/local/tmp/nzrep_vROdw0 | |
| |
(8 rows)En este ejemplo se están ejecutando dos consultas, que utilizan un total de ocho conexiones de datos. La consulta en la sesión 17205 se ejecuta correctamente, pero en la sesión 17099, el AE remoto se ha bloqueado y la sesión del sistema Netezza se ha colgado. En el caso de los EA locales, el software Netezza puede detectar y resolver esta situación; sin embargo, el sistema Netezza no gestiona los procesos de EA remotos y, por lo tanto, no puede resolver el problema para el EA remoto.
El problema puede corregirse ejecutando el comando de reparación de la función nzaejobcontrol. Este comando aborta cualquier conexión colgada y limpia los recursos sobrantes de la máquina.
SELECT * FROM _v_dual_dslice, TABLE WITH FINAL(inza..nzaejobcontrol('repair', dsid,
null, false, null, null));
DSID | AERESULT | AERC | AETOTAL | AENAME | AEDSLICE | AESESSION | AETRANS |
AEHOSTNAME | AEPID | AECOMMAND | AETID | AEBUILD |
AENZREPVER | AEVERMISMATCH
------+----------+------+---------+------------+----------+-----------+---------
+------------+-------+------------------------------------+-------+---------
+------------+---------------
1 | OK | 0 | 4 | datamatrix | 3 | 17099 | 43304 |
spu0101 | 18120 | /var/opt/nz/local/tmp/nzrep_HAyLm0 | | |
|
1 | OK | 0 | 4 | datamatrix | 2 | 17099 | 43304 |
spu0101 | 18120 | /var/opt/nz/local/tmp/nzrep_uTHvp3 | | |
|
1 | OK | 0 | 4 | datamatrix | 4 | 17099 | 43304 |
spu0101 | 18120 | /var/opt/nz/local/tmp/nzrep_oHGbE0 | | |
|
1 | OK | 0 | 4 | datamatrix | 1 | 17099 | 43304 |
spu0101 | 18120 | /var/opt/nz/local/tmp/nzrep_vROdw0 | | |
|
(4 rows)
En este caso, las conexiones colgadas para la sesión 17099 se abortan y la consulta original colgada devuelve un mensaje de error.
Si ahora se ejecuta el comando de conexiones, sólo quedan las conexiones en funcionamiento:
SELECT * FROM _v_dual_dslice, TABLE WITH FINAL(inza..nzaejobcontrol('connections',
dsid, null, false, null, null));
DSID | AERESULT | AERC | AETOTAL | AENAME | AEDSLICE | AESESSION | AETRANS |
AEHOSTNAME | AEPID | AECOMMAND | AETID | AEBUILD |
AENZREPVER | AEVERMISMATCH
------+----------+------+---------+------------+----------+-----------+---------
+------------+-------+------------------------------------+-------+---------
+------------+---------------
2 | OK | 0 | 4 | datamatrix | 1 | 17205 | 43310 |
spu0101 | 25495 | /var/opt/nz/local/tmp/nzrep_D2zMNV | | |
|
2 | OK | 0 | 4 | datamatrix | 4 | 17205 | 43310 |
spu0101 | 25495 | /var/opt/nz/local/tmp/nzrep_wIJ5mV | | |
|
2 | OK | 0 | 4 | datamatrix | 2 | 17205 | 43310 |
spu0101 | 25495 | /var/opt/nz/local/tmp/nzrep_GWL2dV | | |
|
2 | OK | 0 | 4 | datamatrix | 3 | 17205 | 43310 |
spu0101 | 25495 | /var/opt/nz/local/tmp/nzrep_DpCZeV | | |
|
(4 rows)
Si el comando de reparación se ejecuta de nuevo no hay salida ya que no hay nada que arreglar.
SELECT * FROM _v_dual_dslice, TABLE WITH FINAL(inza..nzaejobcontrol('repair', dsid,
null, false, null, null));
DSID | AERESULT | AERC | AETOTAL | AENAME | AEDSLICE | AESESSION | AETRANS |
AEHOSTNAME | AEPID | AECOMMAND | AETID | AEBUILD | AENZREPVER | AEVERMISMATCH
------+----------+------+---------+--------+----------+-----------+---------
+------------+-------+-----------+-------+---------+------------+---------------
(0 rows)
Estos comandos también se pueden ejecutar en el host. Las versiones del locus anfitrión de los comandos son las siguientes:
SELECT * FROM TABLE WITH FINAL(inza..nzaejobcontrol('connections', 0, null,
false, null, null));
SELECT * FROM TABLE WITH FINAL(inza..nzaejobcontrol('repair', 0, null, false,
null, null));