Ditto (once again)

19 mayo \19\UTC 2013

Una vez más, me encuentro mis propios pensamientos escritos por alguien que no soy yo:

Por más que hayas dejado que el odio se te meta dentro, por mucho que hayas llegado a olvidarte de tu deber y de tus principios, cuando un hombre que no puede defenderse, aunque sea el peor y el más despreciable de los hombres, te suplica piedad, hay que estar muy perturbado para negársela. Y hay que estar hecho de una sustancia que no conozco, ni quiero conocer, para hacerle verdadero daño. Pero hay que ser una mala bestia, un bicho con nada de humano y todo de alimaña, para ensañarse con alguien desde esa superioridad.

Lorenzo Silva. -La Marca Del Meridiano

Saludos.

Carlos.


Mi primer coche.

29 abril \29\UTC 2013

El otro día paseando por la calle me encontré con el que fue mi primer coche (bueno, uno igual): un Citroën Mehari. Un coche de plástico con motor de 600 cc bicilíndrico bóxer refrigerado por aire que daba unos 35 CV.

Mehari1

Mehari1

La velocídad máxima solía rondar los 110 km/h, pero si te colocabas a rebufo de un autocar moderno te ponías a 120 casi sin tocar el acelerador.

¿Qué cosas NO tenía?

  • Frenos de disco (eran de tambor los cuatro, y sin servo).
  • Llantas de aleación.
  • Inyección electrónica.
  • Equipo de música (ni siquiera radio)
  • Aire Acondicionado.
  • Cierre centralizado (no tenía puertas).
  • Reposcabezas.
  • Airbag (los cinturones de seguridad sólo te sujetaban por la cintura).
  • ABS.
  • Control de tracción.
  • Cambio secuencial (la primera ni siquiera llevaba sincros).
  • GPS.
  • Bluetooth.

Y sin todas esas cosas, hacíamos viajes de 500 Km sin descansar y tan panchos.

Mehari2

Mehari2

Se me ponían los pelillos de punta cuando les explicaba al Bicho nº1 y al Bicho nº2 que lo que estaban viendo no era un juguete, sino un coche de verdad. Y las aventuras que se podían correr con él…

Saludos.

Carlos.


Error con arcmain y ‘named pipes’ en Teradata 14

23 abril \23\UTC 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.

 


Adiós maestro

9 abril \09\UTC 2013

Se ha muerto José Luis Sampedro.

20130409-185002.jpg

Adiós maestro.

Saludos.

Carlos.


Teradata 14, las funciones Oracle y los errores de juventud

9 abril \09\UTC 2013

Ya hemos hablado aquí de las nuevas funciones nativas de Teradata 14 (“Embedded Services System Functions”) y de cómo nos solucionan algunos problemas de forma sencilla e intuitiva. Muchas de ellas son simple y llanamente ‘clones’ de funciones Oracle, pero a veces ocurren cosas curiosas. Esto es lo que me pasó el otro día al intentar utilizar la archifamosa función TO_CHAR() en su versión Teradata.

Primero, los antecedentes: La función Oracle TO_CHAR() sirve para convertir números a cadenas y permite formatear la salida. Entre otras cosas, se puede indicar los caracteres a utilizar como separador de decimales y grupos para evitar los definidos por el sistema. Esto es muy común si el sistema tiene una configuración anglosajona -con el punto como separador decimal y la coma como separador de grupos- y queremos una representación ‘hispana’, que es justamente al revés. En situaciones como ésta podemos utilizar TO_CHAR() con el parámetro NLS_NUMERIC_CHARACTERS, donde le indicamos nuestras preferencias:

carlos@XE> SELECT * FROM V$VERSION;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
PL/SQL Release 11.2.0.2.0 - Production
CORE	11.2.0.2.0	Production
TNS for Linux: Version 11.2.0.2.0 - Production
NLSRTL Version 11.2.0.2.0 - Production

carlos@XE> SELECT TO_CHAR (1234.56, '999G990D00', 
   2 'NLS_NUMERIC_CHARACTERS='',.''') 
   3 FROM DUAL;

TO_CHAR(123
-----------
   1.234,56

carlos@XE>

OK.

Vamos ahora a Teradata. La documentación explica un uso exactamente igual que la original Oracle. Así que:

 BTEQ -- Enter your SQL request or BTEQ command:
SELECT * FROM DBC.DBCINFO;

 *** Query completed. 3 rows found. 2 columns returned.
 *** Total elapsed time was 1 second.

InfoKey                        InfoData
------------------------------ ---------------------------------------------------------
LANGUAGE SUPPORT MODE          Standard
RELEASE                        14.00.02.05
VERSION                        14.00.02.05

 BTEQ -- Enter your SQL request or BTEQ command:
SELECT TD_SYSFNLIB.TO_CHAR(1234.56,'9G999D99', 
       'NLS_NUMERIC_CHARACTERS='',.''');

 *** Failure 9134 Error in function TO_CHAR: parameter 3 is invalid.
                Statement# 1, Info =0
 *** Total elapsed time was 1 second.

¡Ahivá! ¿Un error? ¿Por qué? Pues resulta que no va a ser tan ‘exactamente igual’…

Después de probar y probar, me llevó un rato descubrir que Teradata espera un espacio en blanco adicional en la cadena del “NLS_PARAMS” a ambos lados del signo “igual” (=).

 BTEQ -- Enter your SQL request or BTEQ command:
SELECT TD_SYSFNLIB.TO_CHAR(1234.56,'9G999D99', 
       'NLS_NUMERIC_CHARACTERS = '',.''');

 *** Query completed. One row found. One column returned.
 *** Total elapsed time was 1 second.

TO_CHAR(1234.56,'9G999D99','NLS_NUMERIC_CHARACTERS = '',.'''
------------------------------------------------------------
 1.234,56

Parece que esto es un ejempo más de lo que normalmente se llaman ‘errores de juventud’…

Saludos.

Carlos.


Zapas nuevas

26 marzo \26\UTC 2013

Mis zapas nuevas:

20130326-190858.jpg

Saludos.

Carlos.


Teradata Access Layer Delivery Workshop

24 marzo \24\UTC 2013

Esta semana la he pasado en Praga, República Checa, asistiendo al “Access Layer Delivery Workshop” en las dependencias que Teradata tiene allí.

Teradata Praga

Teradata Praga

El curso ha sido muy interesante y los dos profesores -dos “aussies“-, excepcionales.

Por supuesto, tambén hubo tiempo para hacer algo de turismo (en especial, “turismo gastronómico”):

Especialidades locales en Praga

Especialidades locales en Praga

Saludos.

Carlos.

 


Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

Únete a otros 35 seguidores