<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>CarlosAL</title>
	<atom:link href="http://carlosal.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://carlosal.wordpress.com</link>
	<description>Reflexiones sobre TERADATA, Oracle, Linux y todo lo que ocurre en la vida de un profesional de IT.</description>
	<lastBuildDate>Sun, 20 Dec 2009 19:53:45 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>es</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='carlosal.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/88d6f83190eacbf706b5945802b90cba?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>CarlosAL</title>
		<link>http://carlosal.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://carlosal.wordpress.com/osd.xml" title="CarlosAL" />
		<item>
		<title>(Just Like) Starting Over</title>
		<link>http://carlosal.wordpress.com/2009/12/20/just-like-starting-over/</link>
		<comments>http://carlosal.wordpress.com/2009/12/20/just-like-starting-over/#comments</comments>
		<pubDate>Sun, 20 Dec 2009 19:53:45 +0000</pubDate>
		<dc:creator>carlosal</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://carlosal.wordpress.com/?p=566</guid>
		<description><![CDATA[Como los que lean esto a menudo habrán sospechado, esta entrada no tiene nada que ver con la Canción de Lennon.
Ya había dicho que el equipo familiar con el Windows XP llevaba una larga temporada dando problemas y más problemas. Bastante a menudo, el equipo se colgaba y la luz del disco duro se quedaba [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=carlosal.wordpress.com&blog=235816&post=566&subd=carlosal&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Como los que lean esto a menudo habrán sospechado, esta entrada no tiene nada que ver con la <a href="http://en.wikipedia.org/wiki/%28Just_Like%29_Starting_Over">Canción de Lennon</a>.</p>
<p>Ya había dicho que el equipo familiar con el Windows XP <a href="http://carlosal.wordpress.com/2009/04/04/otra-vez-con-lan-y-wireless/">llevaba una larga temporada dando problemas y más problemas</a>. Bastante a menudo, el equipo se colgaba y la luz del disco duro se quedaba fija.</p>
<p>Bien, la historia de este equipo <a href="http://carlosal.wordpress.com/2006/12/12/la-familia-crece-%C2%BFque-hacemos-con-ella/">comenzó hace tres años, cuando lo compré</a> -a muy buen precio- en un periodo en el que creí que iba a tener un año sabático&#8230; que luego no llegó ni a un mes. Iba a ser un laboratorio Linux, y lo fue. Pero luego pasó a ser el PC familiar cuando instalé el XP. Su configuración original traía un disco duro Seagate de 80 GB. Con el tiempo, compré otro, también Seagate, de 300 GB. También amplié la memoria y cambié la tarjeta gráfica, <a href="http://carlosal.wordpress.com/2009/06/16/de-hardware-software-drivers-e-incompatibilidades/">que tantos problemas me dio</a>. Pero el caso es que el viejo disco de 80 GB quedó como disco principal.</p>
<p>Por otra parte, llevaba mucho tiempo diciéndome a mí mismo &#8220;Hay que hacer un &#8216;backup&#8217;&#8221;. Teniendo como tenía instalado el <a href="http://www.paragon-software.com/products/home/">Paragon Drive Backup</a> era cosa de nada, pero lo he ido dejando y dejando&#8230;  luego pasa lo que pasa: que <a href="http://en.wikipedia.org/wiki/Murphy%27s_law">Murphy</a> está ahí esperando su oportunidad.</p>
<p>El caso es que el jueves pasado dijo que no arrancaba más. La BIOS a veces veía el disco, a veces no. Y cuando lo veia, no arrancaba. He actualizado la versión de la BIOS dos veces, por si la cosa mejoraba. Pero <em>nasti de plasti</em>, que dicen -decimos- los castizos.</p>
<p>Probé todo: la consola de recuperación, FIXMBR, FIXBOOT, CHKDSK /R&#8230; pero no hubo forma. El disco estaba muerto y bien muerto. Así que recurrí -<a href="http://carlosal.wordpress.com/2007/10/16/ubuntu-al-rescate-de-windows-xp/">como ya hiciera en el pasado</a>- al liveCD de Ubuntu y recuperé todo el disco secundario en un disco duro USB. Pero el principal, el C:, el viejo Seagate de 80 GB, ni se veía.</p>
<p>La opción -aparte de lamentarse, una vez más, por no haber hecho &#8216;backups&#8217;- pasó por reinstalar todo de nuevo. Pero en el disco de 300 GB, que pasó a ser el principal, y dejar el viejo como secundario, con todas las prevenciones del mundo.</p>
<p>La secuencia incluyó volver a particionar y formatear ambos discos y reinstalar todo el software, incluyendo el Sistema Operativo (XP) y todos los service packs y parches, así como el Office con los suyos. Más un montón de aplicaciones de las que no puedo prescindir. Dicho sea de paso, al equipo le ha venido bien adelgazar en &#8217;software&#8217;, porque tenía instaladas aplicaciones de las que ni yo mismo sabía que estaban instaladas.</p>
<p>Después de casi tres días, tengo el equipo funcionando, y mucho más rápido que antes (por el adelgazamiento).</p>
<p>Lo malo es que con el disco duro se fueron todos los juegos de coches con los que juego con <em>el Bicho Nº 1</em>, y que habrá que ir reinstalando poco a poco. Eso sí: todos los logros y avances adquiridos se han ido al garete: hay que empezar de cero en todos y cada uno de ellos.</p>
<p>Dos cosas más:</p>
<p>1.- Esto lo estoy escribiendo en un nuevo equipo que compré el verano pasado&#8230; ¡con Windows Vista! y que está llamado a ser el futuro PC familiar, aunque de momento lo uso para familiarizarme con el Vista (cosa bastante ilógica, con el Windows 7 ya en la calle).</p>
<p>2.- Aunque después de particionar y formatear el disco de 80 GB el XP veía perfectamente la nueva unidad, acabo de echar un vistazo y no aparece la unidad &#8216;D:&#8217; &#8216;Datos&#8217;.</p>
<p>¿Alguien conoce algún punto limpio en Madrid?</p>
<p>Saludos.</p>
<p>Carlos.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/carlosal.wordpress.com/566/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/carlosal.wordpress.com/566/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/carlosal.wordpress.com/566/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/carlosal.wordpress.com/566/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/carlosal.wordpress.com/566/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/carlosal.wordpress.com/566/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/carlosal.wordpress.com/566/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/carlosal.wordpress.com/566/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/carlosal.wordpress.com/566/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/carlosal.wordpress.com/566/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=carlosal.wordpress.com&blog=235816&post=566&subd=carlosal&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://carlosal.wordpress.com/2009/12/20/just-like-starting-over/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3d45c1082325971d1aaa6a1ad13d2620?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">carlosal</media:title>
		</media:content>
	</item>
		<item>
		<title>¿Dónde está la tabla DUAL en Teradata?</title>
		<link>http://carlosal.wordpress.com/2009/12/10/%c2%bfdonde-esta-la-tabla-dual-en-teradata/</link>
		<comments>http://carlosal.wordpress.com/2009/12/10/%c2%bfdonde-esta-la-tabla-dual-en-teradata/#comments</comments>
		<pubDate>Thu, 10 Dec 2009 15:51:23 +0000</pubDate>
		<dc:creator>carlosal</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://carlosal.wordpress.com/?p=561</guid>
		<description><![CDATA[Todo aquél que llega a Teradata procedente de entornos Oracle pregunta lo mismo &#8216;¿Aquí no hay tabla DUAL?&#8217;. La respuesta suele ser &#8216;No. No hace falta.&#8217;.
En efecto: en Teradata un &#8216;SELECT&#8217; no tiene por qué tener un &#8216;FROM&#8217;:
 BTEQ -- Enter your DBC/SQL request or BTEQ command:
SELECT DATE;

 *** Query completed. One row found. One [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=carlosal.wordpress.com&blog=235816&post=561&subd=carlosal&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Todo aquél que llega a Teradata procedente de entornos Oracle pregunta lo mismo &#8216;¿Aquí no hay tabla DUAL?&#8217;. La respuesta suele ser &#8216;No. No hace falta.&#8217;.</p>
<p>En efecto: en Teradata un &#8216;SELECT&#8217; no tiene por qué tener un &#8216;FROM&#8217;:</p>
<pre> BTEQ -- Enter your DBC/SQL request or BTEQ command:
SELECT DATE;

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

    Date
--------
09/12/10

 BTEQ -- Enter your DBC/SQL request or BTEQ command:
SELECT 1 DUMMY;

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

DUMMY
-----
    1
</pre>
<p>Esto al principio le deja a uno un poco &#8216;a cuadros&#8217;, acostumbrado a años y años de &#8216;SELECT SYSDATE FROM DUAL&#8217; (&#8216;OK. Me adapto y ya está.&#8217;).</p>
<p>Entonces uno se acuerda de esto:</p>
<pre>SQL*Plus: Release 10.2.0.1.0 - Production on Jue Dic 10 20:21:08 2009

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

Introduzca el nombre de usuario: carlos@XE.localhost
Introduzca la contraseña:

Conectado a:
Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production

CARLOS@XE.localhost&gt; SELECT *
  2    FROM ( SELECT 1 FROM DUAL
  3           UNION ALL
  4           SELECT 2 FROM DUAL
  5           UNION ALL
  6           SELECT 3 FROM DUAL );

         1
----------
         1
         2
         3
</pre>
<p>&#8230; e intenta hacer algo como esto:</p>
<pre> BTEQ -- Enter your DBC/SQL request or BTEQ command:
SELECT *
  FROM ( SELECT 1
         UNION ALL
         SELECT 2
         UNION ALL
         SELECT 3 );

 *** Failure 3707 Syntax error, expected something like a name or a Unicode
 delimited identifier or an 'UDFCALLNAME' keyword between ')' and ';'.
                Statement# 1, Info =108
 *** Total elapsed time was 1 second.
</pre>
<p>&#8216;¡Ah!, es que en Terdata todas las SUBSELECTs deben llevar alias&#8217;:</p>
<pre>SELECT *
  FROM ( SELECT 1
         UNION ALL
         SELECT 2
         UNION ALL
         SELECT 3 ) a;

SELECT *
$
 *** Failure 3706 Syntax error: All expressions in a derived table must
have an explicit name.
                Statement# 1, Info =0
 *** Total elapsed time was 1 second.
</pre>
<p>&#8216;¡Ah!, es que en Terdata todas las columnas deben llevar nombre&#8217;.</p>
<p>Pero entonces ocurre lo siguiente:</p>
<pre> BTEQ -- Enter your DBC/SQL request or BTEQ command:
SELECT *
  FROM ( SELECT 1 DUMMY
         UNION ALL
         SELECT 2 DUMMY
         UNION ALL
         SELECT 3 DUMMY
       ) a
;

 *** Failure 3888 A SELECT for a UNION,INTERSECT or MINUS must
reference a table.
                Statement# 1, Info =0
 *** Total elapsed time was 1 second.
</pre>
<p>¿Pero, no habíamos quedado en que en Teradata no hacía falta un &#8216;FROM&#8217;? Ya. Pero parece que en las UNION, INTERSECT o MINUS sí.</p>
<p>¿Entonces, qué hacemos sin nuestra tabla DUAL?</p>
<p>Aquí hay gente que decide recurrir a cualquier tabla de utilidad:</p>
<pre> BTEQ -- Enter your DBC/SQL request or BTEQ command:
SELECT *
  FROM ( SELECT 1 DUMMY
           FROM SYS_CALENDAR.CALENDAR
          WHERE DAY_OF_CALENDAR = 1
         UNION ALL
         SELECT 2 DUMMY
           FROM SYS_CALENDAR.CALENDAR
          WHERE DAY_OF_CALENDAR = 1
         UNION ALL
         SELECT 3 DUMMY
           FROM SYS_CALENDAR.CALENDAR
          WHERE DAY_OF_CALENDAR = 1
       ) a;

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

DUMMY
-----
    1
    2
    3
</pre>
<p>Pero, en el fondo, no es más que un rodeo (&#8216;<em>workaround</em>&#8216;, lo llaman los anglosajones) para soslayar el problema de la falta de tabla DUAL.</p>
<p>Otra solución es crearnos nuestra propia tabla DUAL, con una única columna &#8216;DUMMY&#8217; y una única fila &#8216;X&#8217; -a imagen y semejanza de la añorada DUAL de Oracle-. Otro rodeo.</p>
<p>Pero lo que queremos no es rodear el problema. Queremos resolverlo. ¿Cómo crear tablas sobre la marcha con &#8216;UNION&#8217; en Teradata?</p>
<p>Teniendo en cuenta lo que hemos dicho arriba sobre la obligatorieded de alias y nombres para tablas y columnas, la solución es más fácil de lo que parece:</p>
<pre> BTEQ -- Enter your DBC/SQL request or BTEQ command:
SELECT *
  FROM ( SELECT 1 COL FROM ( SELECT 'X' DUMMY ) a
         UNION ALL
         SELECT 2 FROM ( SELECT 'X' DUMMY ) b
         UNION ALL
         SELECT 3 FROM ( SELECT 'X' DUMMY ) c
       ) d
;

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

 COL
----
   1
   2
   3
</pre>
<p>Una cosa más para los nostálgicos: no utilicéis &#8216;DUAL&#8217; como alias de tabla, ya que <strong>en TERADATA DUAL es una palabra reservada</strong>:</p>
<pre>SELECT *
  FROM ( SELECT 1 COL FROM ( SELECT 'X' DUMMY ) DUAL
         UNION ALL
         SELECT 2 FROM ( SELECT 'X' DUMMY ) DUAL
         UNION ALL
         SELECT 3 FROM ( SELECT 'X' DUMMY ) DUAL
       ) d
;

         UNION ALL
$
 *** Failure 3707 Syntax error, expected something like a name or a Unicode delimited identifier
 or an 'UDFCALLNAME' keyword between ')' and the 'DUAL' keyword.
                Statement# 1, Info =63
 *** Total elapsed time was 1 second.
</pre>
<p>Cualquier otra valdrá:</p>
<pre> BTEQ -- Enter your DBC/SQL request or BTEQ command:
SELECT *
  FROM ( SELECT 1 COL FROM ( SELECT 'X' DUMMY ) MY_DUAL
         UNION ALL
         SELECT 2 FROM ( SELECT 'X' DUMMY ) MY_DUAL
         UNION ALL
         SELECT 3 FROM ( SELECT 'X' DUMMY ) MY_DUAL
       ) d
;

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

 COL
----
   1
   2
   3
</pre>
<p>Saludos.</p>
<p>Carlos.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/carlosal.wordpress.com/561/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/carlosal.wordpress.com/561/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/carlosal.wordpress.com/561/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/carlosal.wordpress.com/561/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/carlosal.wordpress.com/561/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/carlosal.wordpress.com/561/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/carlosal.wordpress.com/561/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/carlosal.wordpress.com/561/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/carlosal.wordpress.com/561/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/carlosal.wordpress.com/561/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=carlosal.wordpress.com&blog=235816&post=561&subd=carlosal&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://carlosal.wordpress.com/2009/12/10/%c2%bfdonde-esta-la-tabla-dual-en-teradata/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3d45c1082325971d1aaa6a1ad13d2620?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">carlosal</media:title>
		</media:content>
	</item>
		<item>
		<title>Borrando filas duplicadas en Teradata.</title>
		<link>http://carlosal.wordpress.com/2009/12/07/borrando-filas-duplicadas-en-teradata/</link>
		<comments>http://carlosal.wordpress.com/2009/12/07/borrando-filas-duplicadas-en-teradata/#comments</comments>
		<pubDate>Mon, 07 Dec 2009 16:34:42 +0000</pubDate>
		<dc:creator>carlosal</dc:creator>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Teradata]]></category>

		<guid isPermaLink="false">http://carlosal.wordpress.com/?p=557</guid>
		<description><![CDATA[Teradata no tiene el concepto de ROWID que maneja Oracle. Así, el código de identificación de la fila en el bloque (Row Hash + Order) no es accesible como en Oracle para acceder directamente a ella. Esto provoca un problema: en Teradata NO podemos eliminar filas duplicadas de una tabla &#8216;MULTISET&#8217; mediante su &#8216;ROWID&#8217;. (Esta [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=carlosal.wordpress.com&blog=235816&post=557&subd=carlosal&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Teradata no tiene el concepto de ROWID que maneja Oracle. Así, el código de identificación de la fila en el bloque (Row Hash + Order) no es accesible como en Oracle para acceder directamente a ella. Esto provoca un problema: en Teradata NO podemos eliminar filas duplicadas de una tabla &#8216;MULTISET&#8217; mediante su &#8216;ROWID&#8217;. (Esta es precisamente una de las razones por las que Teradata prefiere tablas &#8216;SET&#8217;).</p>
<p>Normalmente lo que se hace es un INSERT&#8230;SELECT DISTINCT a una tabla temporal para luego renombrarla o borrar la tabla original completamente y hacer otro INSERT&#8230;SELECT desde la tabla temporal a la original. Esto hace que tengamos que crear tabla nueva y mover muchos datos.</p>
<p>Pero si tenemos una tabla grande con pocos duplicados y no queremos hacer una tabla temporal nueva y andar moviendo todos los datos de acá para allá y vuelta, podríamos hacer algo así:</p>
<pre> BTEQ -- Enter your DBC/SQL request or BTEQ command:
CREATE MULTISET TABLE MY_DB.PRUEBA01,
 NO JOURNAL,
 NO FALLBACK
 (ID_N SMALLINT NOT NULL,
  C_TXT VARCHAR(10) NULL)
 PRIMARY INDEX(ID_N)
 ;

 *** Table has been created.
 *** Total elapsed time was 1 second.

 BTEQ -- Enter your DBC/SQL request or BTEQ command:

INSERT INTO MY_DB.PRUEBA01 VALUES (1,'UNO');

 *** Insert completed. One row added.
 *** Total elapsed time was 1 second.

 BTEQ -- Enter your DBC/SQL request or BTEQ command:

INSERT INTO MY_DB.PRUEBA01 VALUES (1,'UNO');

 *** Insert completed. One row added.
 *** Total elapsed time was 1 second.

 BTEQ -- Enter your DBC/SQL request or BTEQ command:

INSERT INTO MY_DB.PRUEBA01 VALUES (1,'UNO');

 *** Insert completed. One row added.
 *** Total elapsed time was 1 second.

 BTEQ -- Enter your DBC/SQL request or BTEQ command:

INSERT INTO MY_DB.PRUEBA01 VALUES (1,'UNO');

 *** Insert completed. One row added.
 *** Total elapsed time was 1 second.

 BTEQ -- Enter your DBC/SQL request or BTEQ command:

INSERT INTO MY_DB.PRUEBA01 VALUES (2,'DOS');

 *** Insert completed. One row added.
 *** Total elapsed time was 1 second.

 BTEQ -- Enter your DBC/SQL request or BTEQ command:

INSERT INTO MY_DB.PRUEBA01 VALUES (2,'DOS');

 *** Insert completed. One row added.
 *** Total elapsed time was 1 second.

 BTEQ -- Enter your DBC/SQL request or BTEQ command:

INSERT INTO MY_DB.PRUEBA01 VALUES (3,'TRES');

 *** Insert completed. One row added.
 *** Total elapsed time was 1 second.

 BTEQ -- Enter your DBC/SQL request or BTEQ command:
SELECT *
  FROM MY_DB.PRUEBA01
  ORDER BY ID_N;

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

  ID_N  C_TXT
------  ----------
     1  UNO
     1  UNO
     1  UNO
     1  UNO
     2  DOS
     2  DOS
     3  TRES

 BTEQ -- Enter your DBC/SQL request or BTEQ command:
ALTER TABLE MY_DB.PRUEBA01 ADD MY_ROWNUM SMALLINT;

 *** Table has been modified.
 *** Total elapsed time was 1 second.

 BTEQ -- Enter your DBC/SQL request or BTEQ command:
INSERT INTO MY_DB.PRUEBA01 ( ID_N,
       C_TXT,
       MY_ROWNUM )
SELECT ID_N,
       C_TXT,
       2
  FROM MY_DB.PRUEBA01
  QUALIFY ROW_NUMBER() OVER (PARTITION BY ID_N ORDER BY ID_N) = 2
;

 *** Insert completed. 2 rows added.
 *** Total elapsed time was 1 second.

 BTEQ -- Enter your DBC/SQL request or BTEQ command:
DELETE FROM MY_DB.PRUEBA01 a
WHERE a.MY_ROWNUM IS NULL
  AND EXISTS ( SELECT NULL
                 FROM MY_DB.PRUEBA01 b
                WHERE a.ID_N = b.ID_N
                AND b.MY_ROWNUM = 2)
;

 *** Delete completed. 6 rows removed.
 *** Total elapsed time was 1 second.

 BTEQ -- Enter your DBC/SQL request or BTEQ command:
ALTER TABLE  MY_DB.PRUEBA01 DROP MY_ROWNUM;

 *** Table has been modified.
 *** Total elapsed time was 1 second.

 BTEQ -- Enter your DBC/SQL request or BTEQ command:
SELECT *
  FROM MY_DB.PRUEBA01
  ORDER BY ID_N;

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

  ID_N  C_TXT
------  ----------
     1  UNO
     2  DOS
     3  TRES

 BTEQ -- Enter your DBC/SQL request or BTEQ command:
</pre>
<p>No es muy elegante, y además estamos haciendo dos DDL (ALTER TABLE), pero en determinadas circunstancias puede ser una solución válida.</p>
<p>(También podríamos hacer una tabla temporal sólo para los &#8216;MY_ROWNUM = 2&#8242; y modificar el DELETE para usar esta temporal en el &#8216;EXISTS&#8217; y luego hacer un INSERT&#8230;SELECT desde ella).</p>
<p>Saludos.</p>
<p>Carlos.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/carlosal.wordpress.com/557/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/carlosal.wordpress.com/557/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/carlosal.wordpress.com/557/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/carlosal.wordpress.com/557/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/carlosal.wordpress.com/557/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/carlosal.wordpress.com/557/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/carlosal.wordpress.com/557/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/carlosal.wordpress.com/557/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/carlosal.wordpress.com/557/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/carlosal.wordpress.com/557/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=carlosal.wordpress.com&blog=235816&post=557&subd=carlosal&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://carlosal.wordpress.com/2009/12/07/borrando-filas-duplicadas-en-teradata/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3d45c1082325971d1aaa6a1ad13d2620?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">carlosal</media:title>
		</media:content>
	</item>
		<item>
		<title>VMWare Player 3.0</title>
		<link>http://carlosal.wordpress.com/2009/12/04/vmware-player-3-0/</link>
		<comments>http://carlosal.wordpress.com/2009/12/04/vmware-player-3-0/#comments</comments>
		<pubDate>Fri, 04 Dec 2009 14:12:40 +0000</pubDate>
		<dc:creator>carlosal</dc:creator>
				<category><![CDATA[Desarrollo Software]]></category>
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://carlosal.wordpress.com/?p=553</guid>
		<description><![CDATA[VMWare acaba de sacar VMWare Player 3.0. Y no es sólo otra versión del VMWare Player de toda la vida, que sólo podía correr máquinas virtuales, no crearlas (para eso se necesitaba la versión Workstation -de pago-, la versión Server, etc&#8230;)
Pues sí: la nueva versión Player 3.0 sigue siendo gratis y además permite crear máquinas [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=carlosal.wordpress.com&blog=235816&post=553&subd=carlosal&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>VMWare acaba de sacar <a href="http://www.vmware.com/products/player/">VMWare Player 3.0</a>. Y no es sólo otra versión del VMWare Player de toda la vida, que sólo podía correr máquinas virtuales, no crearlas (para eso se necesitaba la versión Workstation -de pago-, la versión Server, etc&#8230;)</p>
<p>Pues sí: la nueva versión Player 3.0 <strong>sigue siendo gratis</strong> y además permite <strong>crear máquinas virtuales</strong>. ¿Y entonces, qué pasa con la versión &#8216;Workstation&#8217;? Pues lo mismo que pasaba con relación al VMWare Server: Workstation te permite funcionalidades avanzadas que el nuevo Player no presenta: (Snapshots, Clones, Virtual Rights). No obstante, para un usuario medio lo que ofrece el nuevo Player parece más que suficiente.</p>
<p><strong>Editado más tarde:</strong> Una de las cosas que no aparecen en esta versión es la herramienta de configuración de redes virtuales. Tras jugar un rato, he  echado de menos todas las posibilidades de configuración de las mismas de la versión  &#8216;Workstation&#8217;.</p>
<p>Con esto VMWare cierra el círculo de productos gratuítos comenzado con el VMWare Server (muy bueno el 1,5, no tanto el 2.0&#8230;) y el ESXi server. Este producto orientado a &#8216;desktops&#8217; (o &#8216;workstations&#8217;, si se quiere) es una respuesta a la gran cantidad de productos de virtualización gratuítos que han aparecido recientemente, con <a href="http://www.virtualbox.org/">VirtualBox</a> a la cabeza.</p>
<p>Por otra parte, tambien merece la pena echarle un vistazo al <a href="http://www.vmware.com/products/converter/">VMWare vCenter Converter</a>, heredero de los VMware p2v y VMware Converter, que son herramientas &#8220;p2v&#8221; (physical to virtual) que convierten máquinas físicas en máquinas virtuales.</p>
<p>Finalmente, VMWare tiene otro producto en el que ha puesto muchas esperanzas: el <a href="http://www.vmware.com/products/view/">VMWare View</a>. Este producto -no es gratis- quiere introducir la virtualización de &#8216;desktops&#8217;: los &#8216;desktops&#8217; son virtualizados, almacenados y distribuidos en un servidor y se corren en las máquinas físicas como máquinas virtuales. Tu llegas a la oficina, te sientas en cualquier equipo, te conectas al servidor y te bajas tu &#8216;desktop&#8217; con todas tus aplicaciones, configuraciones, etc&#8230; es como tener un portátil virtual, pero sin el soporte físico (el propio portátil).</p>
<p>En fin: nuevos juguetes para jugar estas navidades&#8230;</p>
<p>Saludos.</p>
<p>Carlos.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/carlosal.wordpress.com/553/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/carlosal.wordpress.com/553/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/carlosal.wordpress.com/553/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/carlosal.wordpress.com/553/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/carlosal.wordpress.com/553/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/carlosal.wordpress.com/553/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/carlosal.wordpress.com/553/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/carlosal.wordpress.com/553/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/carlosal.wordpress.com/553/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/carlosal.wordpress.com/553/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=carlosal.wordpress.com&blog=235816&post=553&subd=carlosal&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://carlosal.wordpress.com/2009/12/04/vmware-player-3-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3d45c1082325971d1aaa6a1ad13d2620?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">carlosal</media:title>
		</media:content>
	</item>
		<item>
		<title>Only numbers</title>
		<link>http://carlosal.wordpress.com/2009/12/02/only-numbers/</link>
		<comments>http://carlosal.wordpress.com/2009/12/02/only-numbers/#comments</comments>
		<pubDate>Wed, 02 Dec 2009 09:59:25 +0000</pubDate>
		<dc:creator>carlosal</dc:creator>
				<category><![CDATA[Desarrollo Software]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Teradata]]></category>

		<guid isPermaLink="false">http://carlosal.wordpress.com/?p=548</guid>
		<description><![CDATA[Un compañero vino a preguntarme si en Teradata existe alguna función para saber si todos los caracteres de una cadena son números.
Aunque existe la conocida función (UDF) CHKNUM()/Is_numeric , ésta permite caracteres no numéricos (puntos, comas, signos +/-), y no es esto lo que buscamos exactamente.
Para ver que en una cadena sólo hay números se [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=carlosal.wordpress.com&blog=235816&post=548&subd=carlosal&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Un compañero vino a preguntarme si en Teradata existe alguna función para saber si todos los caracteres de una cadena son números.</p>
<p>Aunque existe la conocida función (UDF) <a href="http://www.teradata.com/DownloadCenter/Topic9236-129-1.aspx">CHKNUM()/Is_numeric</a> , ésta permite caracteres no numéricos (puntos, comas, signos +/-), y no es esto lo que buscamos exactamente.</p>
<p>Para ver que en una cadena sólo hay números se puede utilizar oTransalate() (una de mis funciones favoritas en Oracle y también en Teradata) en una construcción como esta:</p>
<pre> BTEQ -- Enter your DBC/SQL request or BTEQ command:
SELECT CASE
WHEN CHARACTERS(otranslate(TRIM(COALESCE('123465','')),
                           'a1234567890',
                           'a')) = 0
   THEN 'is only numbers'
   ELSE 'is not only numbers'
END
;

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

-------------------
is only numbers

 BTEQ -- Enter your DBC/SQL request or BTEQ command:
SELECT CASE
WHEN CHARACTERS(otranslate(TRIM(COALESCE('123465-A','')),
                           'a1234567890',
                           'a')) = 0
   THEN 'is only numbers'
   ELSE 'is not only numbers'
END
;

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

-------------------
is not only numbers</pre>
<p>La idea es eliminar de la cadena todos los caracteres numéricos y verificar si la longitud (CHARACTERS() es análoga a LENGTH()) es cero o no. Si es cero, todos los caracteres (numéricos) fueron eliminados y, por tanto, la cadena era &#8216;only numbers&#8217;.<br />
Si la longitud no es cero, hay caracteres no numéricos y la cadena era &#8216;not only numbers&#8217;.</p>
<p>Por supuesto, esta construcción se puede utilizar con otros patrones para verificar diferentes formatos y demás&#8230; (¡y en Oracle también funciona!)</p>
<p>Una última cosa: Se necesita la &#8216;a&#8217; en la segunda y tercera cadenas para evitar que oTranslate() devuelva NULL .</p>
<p>Saludos.</p>
<p>Carlos.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/carlosal.wordpress.com/548/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/carlosal.wordpress.com/548/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/carlosal.wordpress.com/548/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/carlosal.wordpress.com/548/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/carlosal.wordpress.com/548/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/carlosal.wordpress.com/548/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/carlosal.wordpress.com/548/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/carlosal.wordpress.com/548/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/carlosal.wordpress.com/548/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/carlosal.wordpress.com/548/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=carlosal.wordpress.com&blog=235816&post=548&subd=carlosal&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://carlosal.wordpress.com/2009/12/02/only-numbers/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3d45c1082325971d1aaa6a1ad13d2620?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">carlosal</media:title>
		</media:content>
	</item>
		<item>
		<title>Backup/Restore: P2V the hard way.</title>
		<link>http://carlosal.wordpress.com/2009/11/20/backuprestore-p2v-the-hard-way/</link>
		<comments>http://carlosal.wordpress.com/2009/11/20/backuprestore-p2v-the-hard-way/#comments</comments>
		<pubDate>Fri, 20 Nov 2009 20:36:53 +0000</pubDate>
		<dc:creator>carlosal</dc:creator>
				<category><![CDATA[Desarrollo Software]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Teradata]]></category>

		<guid isPermaLink="false">http://carlosal.wordpress.com/?p=522</guid>
		<description><![CDATA[El asunto parece sencillo:  coges un equipo, haces un &#8216;backup&#8216; del sistema completo y lo restauras en otra parte. En la web hay mil teorías de cómo hacerlo. Es muy sencillo -dicen-. Hasta que realmente TIENES que hacerlo.
La realidad: Tenemos un equipo (un viejo PIV con 512 MB) en el que hay instalado un Windows [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=carlosal.wordpress.com&blog=235816&post=522&subd=carlosal&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>El asunto parece sencillo:  coges un equipo, haces un &#8216;<em>backup</em>&#8216; del sistema completo y lo restauras en otra parte. En la web hay mil teorías de cómo hacerlo. Es muy sencillo -dicen-. Hasta que realmente TIENES que hacerlo.</p>
<p>La realidad: Tenemos un equipo (un viejo PIV con 512 MB) en el que hay instalado un Windows 2003 Server con varias aplicaciones <em>imprescindibles</em> (aplicaciones &#8216;web&#8217; que corren en el IIS y varias transferencias de ficheros que dependen del &#8216;<em>FTP Server</em>&#8216;) del que nadie se ha acordado -ni preocupado- de hacer un &#8216;backup&#8217;&#8230; hasta que un día la fuente de alimentación se muere repentinamente, a consecuencia de un pico de tensión.</p>
<p>Como quiera que estamos tabajando para la Administración, esto supone una llamada al CAU, que vengan dos técnicos a ver el equipo, que llamen al fabricante (pues resulta que el vejestorio todavía está en garantía), que el fabricante se digne a venir a ver el equipo, valore los daños y -por fin- cambien la fuente de alimentación. Resultado: más de una semana sin los <em>imprescindibles</em> servicios que nos prestaba el cacharrillo. Visto lo visto, mi jefe decide que hay que hacer algo por si la contingencia se vuelve a producir. Mi compañero S. y yo nos ponemos manos a la obra.</p>
<p>OK. Lo primero es buscar una herramienta de &#8216;<em>backup</em>&#8216;. Miramos herramientas gratuitas y probamos <a href="http://www.paragon-software.com/home/db-express/">Paragon Backup &amp; Recovery 10 Free Edition</a>. Después de instalarlo, nos dice que no funciona con Windows 2003 Server. La siguiente opción es <a href="http://www.todo-backup.com/">EASEUS Todo Backup 1.0</a> que promete hacer &#8216;<em>backups</em>&#8216; fiables y generar CD&#8217;s de recuperación (<em>boot-CD</em>) para el caso de que el vejestorio sufra un percance mayor que su fuente de alimentación inoperativa.</p>
<p>Bajamos e instalamos el software y realizamos una copia de seguridad del sistema en un disco USB externo. El EASEUS Todo Backup genera dicho backup en ficheros de algo más de 4GB (creemos que para que quepan en DVD&#8217;s) sin mayores problemas. Hacemos una verificación del backup, por si las moscas. Todo OK, siempre según el EASEUS Todo Backup.</p>
<p>También generamos un CD de recuperación, que el software se encarga de crear y grabar en un CD.</p>
<div id="attachment_528" class="wp-caption alignleft" style="width: 459px"><a href="http://carlosal.files.wordpress.com/2009/11/todo_backup10.gif"><img class="size-full wp-image-528" title="Todo Backup 10" src="http://carlosal.files.wordpress.com/2009/11/todo_backup10.gif?w=449&#038;h=331" alt="Todo Backup 10" width="449" height="331" /></a><p class="wp-caption-text">Todo Backup 10</p></div>
<p>Hasta aquí la cosa va como la seda. Coser y cantar. Pero ahora <em>hay que probar que podemos recuperar el backup obtenido</em>. El asunto no tendría mayor importancia&#8230; a no ser que no fuera la Administración: no hay equipos donde recuperar (<em>restore</em>) el &#8216;<em>backup</em>&#8216; realizado. Y ni de coña lo vamos a intentar en el propio equipo del que hicimos el &#8216;<em>backup</em>&#8216;: si algo falla, nos quedamos en bragas.</p>
<p>Así que sopesamos las opciones. Obviamente, iremos a alguna opción de virtualización: el &#8216;<em>restore</em>&#8216; en una máquina virtual nos aseguraría un &#8216;<em>restore</em>&#8216; en una máquina real, e incluso nos permitiría tener el Windows 2003 Server corriendo virtualizado hasta disponer de un equipo de repuesto para nuestro matusalén. Comenzamos con <a href="http://www.virtualbox.org/">VirtualBox</a>, que es gratis.</p>
<p>Corremos VirtualBox en un equipo con Windows XP. Generamos una máquina virtual con un disco de espacio suficiente para recuperar el backup. Introducimos el CD de recuperación generado con EASEUS Todo Backup y arrancamos. Vemos que se trata de algún Linux que intenta arrancar&#8230; hasta que un pantallazo hace que la máquina virtual se reinicie. Así una y otra vez. Estamos casi seguros de que es algo relacionado con la resolución de la pantalla de la máquina virtual, pero aunque probamos diferentes configuraciones con &#8220;VBoxManage&#8221; siempre llegamos al mismo resultado. Así que VirtualBox fuera.</p>
<p>La siguiente: la siempre fiable <a href="http://www.vmware.com/products/workstation/">VMWare Workstation</a>. Como sólo queremos ver que el &#8216;backup&#8217; es recuperable, nos valdrá con una versión de evaluación. Mismo procedimiento: Generamos una máquina virtual con un disco de espacio suficiente para recuperar el backup. Introducimos el CD de recuperación generado con EASEUS Todo Backup y arrancamos. Aquí las cosas empiezan a mejorar: aunque el pantallazo es el mismo que en el VirtualBox, VMWare se da cuenta y nos ofrece cambiar la resolución de la pantalla. Elegimos 800&#215;600, volvemos a arrancar y&#8230; voìlá. Tenemos el Linux arrancado con el EASEUS Todo Backup en orden de revista.</p>
<p>Comenzamos con el proceso de recupeación del &#8216;<em>backup</em>&#8216;. Aquí pasan cosas un poco raras: las pantallas para elegir de dónde seleccionar los ficheros de &#8216;<em>backup</em>&#8216; para la recuperación y el disco de destino a recuperar, a veces vemos dos unidades (el DVD y el disco USB) y a veces tres (el DVD, el disco USB y el disco duro virtual). Creemos que es porque el proceso necesita un tiempo para reconocer todas las unidades, y nosotros estamos ya un poco impacientes.</p>
<p>Finalmente elegimos ficheros origen, disco de destino y ejecutamos la recuperación, que lógicamente se toma su tiempo. Al terminar tenemos -en teoría- un sistema virtual idéntico al sistema real del que hicimos el backup.</p>
<p>&#8220;Lo tenemos casi&#8221;, pensamos. Sólo hay que arrancar el sistema y ver el Windows 2003 Server &#8216;alive and kicking&#8217;.</p>
<p>Así que arrancamos la máquina virtual. Aparece la pantalla de Windows 2003 Server con el &#8216;ascensor&#8217; horizontal. &#8220;Ya está, ya está&#8221; pero:</p>
<div id="attachment_534" class="wp-caption alignleft" style="width: 460px"><a href="http://carlosal.files.wordpress.com/2009/11/restore1.jpg"><img class="size-full wp-image-534" title="BSD" src="http://carlosal.files.wordpress.com/2009/11/restore1.jpg?w=450&#038;h=337" alt="Blue Screen of Death" width="450" height="337" /></a><p class="wp-caption-text">Blue Screen of Death</p></div>
<p>El &#8220;<em>Blue Screen of Death</em>&#8220;. Con el STOP: 0X0000007B. Las maldiciones se deben de oir hasta en la China.</p>
<p>El <a href="http://msdn.microsoft.com/en-us/default.aspx">msdn</a> dice que esos errores son de problemas para encontrar un medio de arranque. Así que la respuesta está en el disco duro virtual. Probamos todas las opciones que nos permite VMWare, pero siempre con el mismo resultado: BSD.</p>
<p>Ya no sabemos qué hacer. Como la respuesta no aparece del lado de Microsoft, buscamos en el lado de VMWare.</p>
<p>En la base de conocimientos damos con algo que nos pone las orejas tiesas:</p>
<blockquote><p>For all versions of GSX Server, Workstation and VMware Server, this problem can also be caused by the use of a third party IDE controller driver on your<br />
native Windows 2000, Windows XP or Windows Server 2003 partition.</p></blockquote>
<p>&#8220;A ver si va a ser esto&#8230;&#8221; Nos vamos corriendo al equipo con el Windows 2003 Server. Miramos el Administrador de dispositivos y ¡ahí está!: hay controladores SATA &#8216;intel&#8217; instalados (suponemos que con algún CD de instalación del equipo). Esto hace que, al no ser controladores &#8216;genéricos Windows&#8217;, cuando el sistema intenta arrancar en la máquina virtual con estos &#8216;<em>drivers</em>&#8216; no reconoce el disco duro virtual, ya que espera uno específico para el &#8216;<em>driver</em>&#8216;.</p>
<p>¿Cómo solventarlo? Con un nuevo perfil &#8216;<em>hardware</em>&#8216;. Creamos un nuevo perfil &#8216;<em>hardware</em>&#8216; y le sustituimos todos los &#8216;<em>drivers</em>&#8216; de &#8216;<em>third party</em>&#8216; por controladores genéricos IDE de Windows.<br />
Arrancamos el sistema con este nuevo perfil y vuelta a empezar: nueva copia de seguridad del sistema.</p>
<p>Tras otro buen rato esperando el &#8216;<em>backup</em>&#8216; al USB y un nuevo &#8216;<em>restore</em>&#8216; en la máquina virtual arrancanda con el CD de recuperación de EASEUS Todo Backup, tenemos todo a punto de caramelo&#8230;</p>
<p>Cruzamos los dedos. Arrancamos la máquina virtual con el disco restaurado. Aparece la pantalla de Windows 2003 Server con el &#8216;ascensor&#8217; horizontal&#8230; ¡y arranca!.</p>
<p>Tenemos un sistema Windows 2003 Server virtualizado que es una copia exacta del que hay en el cacharro renqueante. Y puede funcionar (si configuramos la red virtual como &#8216;<em>bridged</em>&#8216;) en sustitución del sistema físico original en el caso de una avería permanente o irrecuperable.</p>
<p>Todo esto <em>sólo</em> nos ha llevado tres días&#8230;</p>
<p>Saludos.</p>
<p>Carlos.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/carlosal.wordpress.com/522/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/carlosal.wordpress.com/522/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/carlosal.wordpress.com/522/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/carlosal.wordpress.com/522/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/carlosal.wordpress.com/522/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/carlosal.wordpress.com/522/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/carlosal.wordpress.com/522/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/carlosal.wordpress.com/522/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/carlosal.wordpress.com/522/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/carlosal.wordpress.com/522/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=carlosal.wordpress.com&blog=235816&post=522&subd=carlosal&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://carlosal.wordpress.com/2009/11/20/backuprestore-p2v-the-hard-way/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3d45c1082325971d1aaa6a1ad13d2620?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">carlosal</media:title>
		</media:content>

		<media:content url="http://carlosal.files.wordpress.com/2009/11/todo_backup10.gif" medium="image">
			<media:title type="html">Todo Backup 10</media:title>
		</media:content>

		<media:content url="http://carlosal.files.wordpress.com/2009/11/restore1.jpg" medium="image">
			<media:title type="html">BSD</media:title>
		</media:content>
	</item>
		<item>
		<title>El Ratoncito Pérez.</title>
		<link>http://carlosal.wordpress.com/2009/11/09/el-ratoncito-perez/</link>
		<comments>http://carlosal.wordpress.com/2009/11/09/el-ratoncito-perez/#comments</comments>
		<pubDate>Mon, 09 Nov 2009 10:35:41 +0000</pubDate>
		<dc:creator>carlosal</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://carlosal.wordpress.com/?p=519</guid>
		<description><![CDATA[Hoy se le ha caído su primer diente al Bicho Nº1. Está todo emocionado porque esta noche vendrá el Ratoncito Pérez, se llevará su diente de debajo de la almohada y dejará una moneda a cambio.
Estos críos&#8230;
Saludos.
Carlos.
       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=carlosal.wordpress.com&blog=235816&post=519&subd=carlosal&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Hoy se le ha caído su primer diente al <em>Bicho Nº1</em>. Está todo emocionado porque esta noche vendrá el <a href="http://es.wikipedia.org/wiki/Ratoncito_P%C3%A9rez">Ratoncito Pérez</a>, se llevará su diente de debajo de la almohada y dejará una moneda a cambio.</p>
<p>Estos críos&#8230;</p>
<p>Saludos.</p>
<p>Carlos.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/carlosal.wordpress.com/519/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/carlosal.wordpress.com/519/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/carlosal.wordpress.com/519/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/carlosal.wordpress.com/519/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/carlosal.wordpress.com/519/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/carlosal.wordpress.com/519/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/carlosal.wordpress.com/519/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/carlosal.wordpress.com/519/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/carlosal.wordpress.com/519/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/carlosal.wordpress.com/519/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=carlosal.wordpress.com&blog=235816&post=519&subd=carlosal&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://carlosal.wordpress.com/2009/11/09/el-ratoncito-perez/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3d45c1082325971d1aaa6a1ad13d2620?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">carlosal</media:title>
		</media:content>
	</item>
		<item>
		<title>Revo Uninstaller</title>
		<link>http://carlosal.wordpress.com/2009/10/30/revo-unsinstaller/</link>
		<comments>http://carlosal.wordpress.com/2009/10/30/revo-unsinstaller/#comments</comments>
		<pubDate>Fri, 30 Oct 2009 13:15:31 +0000</pubDate>
		<dc:creator>carlosal</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://carlosal.wordpress.com/?p=515</guid>
		<description><![CDATA[Recientemente, a consecuencia de la imposibilidad de desinstalar la Sun VirtualBox 2.0 para así poder instalar la última versión Sun VirtualBox 3.0.10 mediante las desinstalaciones Windows &#8216;estándar&#8217; (el programa de desinstalación era incapaz y la actualización 2.0 -&#62; 3.0 era imposible), he descubierto una pequeña y útil aplicación llamada Revo Uninstaller que es capaz de [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=carlosal.wordpress.com&blog=235816&post=515&subd=carlosal&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Recientemente, a consecuencia de la imposibilidad de desinstalar la <a href="http://www.virtualbox.org/">Sun VirtualBox 2.0</a> para así poder instalar la última versión <a href="http://www.virtualbox.org/">Sun VirtualBox 3.0.10</a> mediante las desinstalaciones Windows &#8216;estándar&#8217; (el programa de desinstalación era incapaz y la actualización 2.0 -&gt; 3.0 era imposible), he descubierto una pequeña y útil aplicación llamada <a href="http://www.revouninstaller.com/">Revo Uninstaller</a> que es capaz de lidiar con los problemas de las desinstalaciones, generalmente consecuencia de errores en el &#8216;<em>registry</em>&#8216; y de entradas y ficheros desaparecidos.</p>
<p>Tras bajarme la <a href="http://www.revouninstaller.com/revouninstaller.zip">versión &#8216;portable&#8217;</a>, lo ejecuté y lo que parecía una &#8216;imposible desinstalación&#8217; se convirtió en un fácil proceso, que además limpió el &#8216;<em>registry</em>&#8216; y los archivos &#8216;basura&#8217; que quedaban por allí.</p>
<p>Saludos.</p>
<p>Carlos.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/carlosal.wordpress.com/515/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/carlosal.wordpress.com/515/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/carlosal.wordpress.com/515/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/carlosal.wordpress.com/515/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/carlosal.wordpress.com/515/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/carlosal.wordpress.com/515/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/carlosal.wordpress.com/515/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/carlosal.wordpress.com/515/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/carlosal.wordpress.com/515/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/carlosal.wordpress.com/515/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=carlosal.wordpress.com&blog=235816&post=515&subd=carlosal&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://carlosal.wordpress.com/2009/10/30/revo-unsinstaller/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3d45c1082325971d1aaa6a1ad13d2620?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">carlosal</media:title>
		</media:content>
	</item>
		<item>
		<title>CentOS 5.4 disponible.</title>
		<link>http://carlosal.wordpress.com/2009/10/23/centos-5-4-disponible/</link>
		<comments>http://carlosal.wordpress.com/2009/10/23/centos-5-4-disponible/#comments</comments>
		<pubDate>Fri, 23 Oct 2009 17:05:02 +0000</pubDate>
		<dc:creator>carlosal</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://carlosal.wordpress.com/?p=496</guid>
		<description><![CDATA[Desde el 21/10/2009 el nuevo &#8216;release&#8217; de CentOS -CentOS 5.4- está disponible.
A ver si tengo un rato y me pongo a ello. La verdad es que las últimas actualizaciones de kernel han hecho que haya tenido que recompilar e instalar cada vez el driver NVIDIA para Linux, que me permite aceleración gráfica hw, compiz etc, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=carlosal.wordpress.com&blog=235816&post=496&subd=carlosal&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Desde el 21/10/2009 el nuevo &#8216;release&#8217; de CentOS -CentOS 5.4- <a href="http://lists.centos.org/pipermail/centos-announce/2009-October/016195.html">está disponible</a>.</p>
<p>A ver si tengo un rato y me pongo a ello. La verdad es que las últimas actualizaciones de kernel han hecho que haya tenido que recompilar e instalar cada vez el driver <a href="http://www.nvidia.com/Download/index.aspx">NVIDIA para Linux</a>, que me permite aceleración gráfica hw, <a href="http://www.compiz-fusion.org/">compiz</a> etc, etc&#8230; Veremos qué pasa esta vez.</p>
<p>Saludos.</p>
<p>Carlos.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/carlosal.wordpress.com/496/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/carlosal.wordpress.com/496/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/carlosal.wordpress.com/496/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/carlosal.wordpress.com/496/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/carlosal.wordpress.com/496/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/carlosal.wordpress.com/496/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/carlosal.wordpress.com/496/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/carlosal.wordpress.com/496/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/carlosal.wordpress.com/496/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/carlosal.wordpress.com/496/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=carlosal.wordpress.com&blog=235816&post=496&subd=carlosal&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://carlosal.wordpress.com/2009/10/23/centos-5-4-disponible/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3d45c1082325971d1aaa6a1ad13d2620?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">carlosal</media:title>
		</media:content>
	</item>
		<item>
		<title>Sun ORACLE DATABASE MACHINE</title>
		<link>http://carlosal.wordpress.com/2009/10/05/sun-oracle-database-machine/</link>
		<comments>http://carlosal.wordpress.com/2009/10/05/sun-oracle-database-machine/#comments</comments>
		<pubDate>Mon, 05 Oct 2009 16:49:34 +0000</pubDate>
		<dc:creator>carlosal</dc:creator>
				<category><![CDATA[Oracle]]></category>

		<guid isPermaLink="false">http://carlosal.wordpress.com/?p=489</guid>
		<description><![CDATA[La primera de las consecuencias visibles de la adquisición de Sun por Oracle: Sun ORACLE DATABASE MACHINE.
Oracle ha reconstruído su HP ORACLE DATABASE MACHINE con tecnología (léase servidores) Sun: pasa de los servidores Exadata (con los HP Proliant) a los Exadata II
Hay varias cosas sorprendentes en este movimiento que le dejan a uno un tanto [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=carlosal.wordpress.com&blog=235816&post=489&subd=carlosal&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>La primera de las consecuencias visibles de la <a href="http://carlosal.wordpress.com/2009/04/20/%c2%a1%c2%a1oracle-compra-sun/">adquisición de Sun por Oracle</a>: <a href="http://www.oracle.com/database/database-machine.html">Sun ORACLE DATABASE MACHINE</a>.</p>
<p>Oracle ha reconstruído su <a href="http://carlosal.wordpress.com/2008/09/29/hp-oracle-database-machine-tras-las-huellas-de-teradata/">HP ORACLE DATABASE MACHINE</a> con tecnología (léase servidores) Sun: pasa de los servidores Exadata (con los HP Proliant) a los Exadata II</p>
<p>Hay varias cosas sorprendentes en este movimiento que le dejan a uno un tanto perplejo:</p>
<ol>
<li>Oracle lo anuncia como &#8216;<em>World’s First OLTP Database Machine</em>&#8216; (lá primera máquina de bases de datos OLTP)<strong> ¡OLTP! </strong>Originariamente, con la <a href="../2008/09/29/hp-oracle-database-machine-tras-las-huellas-de-teradata/">HP ORACLE DATABASE MACHINE</a> se pretendía asentar la posición de Oracle en el mercado del &#8216;<em>Data Warehousing</em>&#8216;, no de OLTP.</li>
<li>Oracle ha dejado de vender las <a href="../2008/09/29/hp-oracle-database-machine-tras-las-huellas-de-teradata/">HP ORACLE DATABASE MACHINE</a> &#8216;<em>ipso facto</em>&#8216;. Si yo fuera un cliente al que un avispado comercial de Oracle le ha &#8216;colocado&#8217; una de esas <a href="../2008/09/29/hp-oracle-database-machine-tras-las-huellas-de-teradata/">HP ORACLE DATABASE MACHINE</a> este último año, creo que iría a buscarle a su casa con un bate de béisbol en cada mano.</li>
<li>En vez de usar los Sun Sparc, la arquitectura de los nuevos servidores Exadata II está basada en procesadores Intel. Más específicamente en los <a href="http://www.intel.com/cd/products/services/emea/spa/server/processors/344489.htm">Intel Xeon 5500</a></li>
<li>El sistema operativo es <a href="http://www.oracle.com/us/technologies/linux/index.htm">Oracle Enterprise Linux</a>, en vez de Solaris.</li>
</ol>
<p>Y todo rebozado con gran cantidad de palabrejas, eslóganes, y demás parafernalia publicitaria. Y es que Larry es siempre Larry.</p>
<p>Saludos.</p>
<p>Carlos.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/carlosal.wordpress.com/489/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/carlosal.wordpress.com/489/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/carlosal.wordpress.com/489/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/carlosal.wordpress.com/489/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/carlosal.wordpress.com/489/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/carlosal.wordpress.com/489/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/carlosal.wordpress.com/489/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/carlosal.wordpress.com/489/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/carlosal.wordpress.com/489/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/carlosal.wordpress.com/489/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=carlosal.wordpress.com&blog=235816&post=489&subd=carlosal&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://carlosal.wordpress.com/2009/10/05/sun-oracle-database-machine/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3d45c1082325971d1aaa6a1ad13d2620?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">carlosal</media:title>
		</media:content>
	</item>
	</channel>
</rss>