Error con arcmain y ‘named pipes’ en Teradata 14

23 abril \23\+02:00 2013

Una de las formas más utilizadas en Teradata para traspasar tablas entre sistemas (dejando a un lado ‘moderneces’ como el ‘Teradata Data Mover‘) es usar ‘arcmain‘ con ‘named pipes‘. El concepto en sí es simple: lanzas un ‘arcmain‘ en ‘background‘ que haga un ‘archive‘ en el sistema origen sobre las tablas que quieres traspasar, pero que en vez de exportar a fichero, exporte a un ‘named pipe‘ (fifo). Luego lanzas otro ‘arcmain‘ que haga un ‘restore’ o un ‘copy‘ de las tablas ‘archivadas’ en el sistema destino leyendo de ese mismo ‘named pipe‘. Consigues mucha rapidez, ya que te ahorras el espacio y las lecturas y escrituras (IOs) en el ‘file system‘, ya que todo va en memoria.

Así teníamos montada una herramienta que funcionaba a las mil maravillas en nuestros Teradata 12. Pero vino el ‘upgrade’ a Teradata 14…

Con la actualización del ‘software‘ de base de datos vino asociada la actualización del Sistema Operativo y de las Teradata Utilities (TTUs). No obstante, nuestra herramienta no debería verse afectada, ya que era un humilde ‘script’ de ‘bash’ que lo único que hacía era llamar a las citadas TTUs.

Pero, claro, la cosa no iba a ser tan fácil, ya que al intentar mover tablas entre sistemas la herramienta cascaba y devolvía constantemente un extraño mensaje:

*** Failure ARC0805:Access Module returned error code 34: pmUnxDskOpen: ftello (Illegal seek).

Tan raro era, que en Google aparecían un par de referencias que poco o nada ayudaban a resolver el problema.

El caso es que si sustituíamos el ‘named pipe‘ por un fichero normal y corriente el proceso terminaba OK (eso sí, tardando años y ocupando montones de espacio en el ‘file system‘). Así que el asunto tenía que ver con el ‘named pipe‘ sí o sí.

Afortunadamente, un ‘guru’ me indicó el posible camino a seguir: Resulta que el Teradata Data Connector (‘piom’ para los amigos) de la versión 14 tiene un ‘bug‘ que le hace fallar con los ‘named pipes‘ («SA-18150: File position of FIFO pipe fails«). Este ‘bug‘ aparece corregido en la versión 14.0.0.6.

Una vez en el camino corecto: bajarse la última versión disponible (14.00.00.12), que viene en forma de rpm, e instalarla.

Tras hacer esto, el ‘arcmain‘ ha vuelto a funcionar correctamente con ‘named pipes‘ y la herramienta vuelve a traspasar tablas entre sistemas como antes.

Saludos.

Carlos.