miércoles, marzo 30, 2011

unzip en HP-UX

HP-UX de serie no trae UNZIP, sino GUNZIP.

El problema es que por ejemplo la base de datos Oracle para HP-UX viene en 2 ficheros .ZIP, y el GUNZIP no es capaz, por sus propias limitaciones, de descomprimirlos.


Solución: Ir a hpux.connect.org.uk/hppd/hpux/Misc/unzip-6.0 y descargar el adecuado para nuestra plataforma y versión de HP-UX.

Lo que descargamos será un .tar o un .zip de este tipo: unzip-6.0-ia64-11.31.depot.zip

Descomprimimos:

gunzip unzip-6.0-ia64-11.31.depot.zip

Instalamos el UNZIP:

swinstall -s unzip-6.0-ia64-11.31.depot

El programa se quedará instalado en:

/usr/local/bin/unzip

/usr/local/doc/unzip

Y como el resto del software instalado con swinstall, quedará una referencia en: /var/adm/sw/products/unzip

Saludos.

domingo, marzo 27, 2011

Apoyo al software libre en Público


El diario Público recoge hoy un decálogo de ventajas del software libre. Lo recomiendan especialmente para autónomos.

En el caso del Sistema Operativo, yo realmente le veo todo ventajas, salvo tal vez esto:
  1. Los programas más habituales (banca online, facturación, contabilidad, etc.) suelen venir muchas veces sólo para Windows.
  2. Posibles problemas con hardware como impresoras-escaneadoras. Vamos, que hay que fijarse un poco más en lo que compramos.
  3. Aplicaciones Access que pudieran estar utilizando ya.
Saludos.

miércoles, marzo 23, 2011

HP-UX, truco para desmontar un disco

El otro día veíamos cómo montar un disco en HP-UX (del disco al file system) con los comandos del LVM (Logical Volume Manager).

Hoy veremos de qué forma desmontar rápidamente un disco físico.

Siguiendo los comandos de forma inversa al montaje deberíamos hacer:

  1. LVREMOVE
  2. VGREDUCE
  3. VGREMOVE
El problema es que si tenemos un VGDATOS que alberga 7 LV-s: LVDATOS1, LVDATOS2, LVDATOS3, etc. etc., pues habría que hacer 7 LVREMOVE-s.

Luego habría que ir quitándole discos físicos a VGDATOS con el comando LVREDUCE hasta que no le quedara ninguno.

Por último con VGREMOVE eliminaríamos el VGDATOS, pero todavía tendríamos que eliminar la estructura de directorios /DEV/VGDATOS a mano.

Este es el truco rápido para hacer todo en un solo comando:

vgexport /dev/vgdatos

Además de quitar toda la estructura de LV-s y el VG elimina el directorio /dev/vgdatos.

Un par de notas:

Si al hacer el vgexport nos dicen: "Volume group /dev/vgdatos is still active. Couldn't export volume group /dev/vgdatos".

Hay que desactivar el VG:

vgchange -a n /dev/vgdatos

Si al intentar desactivar el VG nos dicen: "Could'n deactivate volume group /dev/vgdatos. Device busy".

Entonces estás equivocándote, ya que el disco que intentas desmontar tiene un file system en uso. No lo desmontes que la lías.

Saludos.

martes, marzo 22, 2011

Activa las estadísticas en Oracle

Las estadísticas son necesarias para que Oracle sepa ejecutar las consultas SQL de la mejor forma posible (utilizando un índice en lugar de otro, haciendo un full scan en lugar de usar índices, etc. etc.)

Además, si no lanzamos nunca las estadísticas el log de la export o dump de la base de datos aparecerá plagado de avisos por estadísticas no fiables.

Lo primero que hay que hacer es crear una tabla especial para contener los registros de estadísticas:

$sqlplus "/as sysdba"
SQL> exec dbms_stats.create_stat_table(ownname => 'SYSTEM', stattab => 'BACKUP_STATS');

Si no hemos creado la tabla y lanzamos las estadísticas saldrá este error:

ORA-20000: TABLE "SYSTEM"."BACKUP_STATS" does not exist or insufficient
privileges
ORA-06512: en "SYS.DBMS_STATS", línea 3687
ORA-06512: en "SYS.DBMS_STATS", línea 11124
ORA-06512: en "SYS.DBMS_STATS", línea 11303
ORA-06512: en "SYS.DBMS_STATS", línea 12238


El comando para eliminar la tabla sería:
SQL> exec dbms_stats.drop_stat_table(ownname => 'SYSTEM', stattab => 'BACKUP_STATS');

Ahora que ya tenemos la tabla podemos preparar un script que ejecutaremos todos los días a la misma hora programándolo con el crontab.

Por supuesto, tendrás que modificarlo para tu instalación:

umask 022
ORACLE_BASE=/oracle
export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE
export ORACLE_HOME
PATH=$ORACLE_HOME/bin:.:$PATH
export PATH
NLS_LANG=spanish_spain.WE8ISO8859P1
export NLS_LANG
LD_LIBRARY_PATH=$ORACLE_HOME/lib
export LD_LIBRARY_PATH
LIBPATH=$ORACLE_HOME/lib
export LIBPATH
ORACLE_SID=xxxxxxxxx
export ORACLE_SID
sqlplus /nolog @/oralog/batchs/stats/stats.sql

Lo más importante está en la última línea. Una llamada a un script SQL que realmente es la que lanza las estadísticas:

set echo on
connect system/xxxxxx as sysdba
create pfile from spfile;
alter database backup controlfile to trace;
execute dbms_stats.export_database_stats(stattab=>'BACKUP_STATS', statown=>'SYSTEM');
execute dbms_stats.gather_database_stats(estimate_percent=>80, cascade=>TRUE, options=>'GATHER AUTO');
exit

Explicación de lo que hace:

DBMS_STATS.EXPORT_DATABASE_STATS:

Guarda las estadísticas de todos los objetos de la base de datos en la tabla que hemos creado antes. Esto nos permite por ejemplo, importar después las estadísticas del entorno de producción en un entorno de pruebas. Si no, al tener datos diferentes las ejecuciones de los procedimientos almacenados y consultas SQL pueden ser diferentes.

DBMS_STATS.GATHER_DATABASE_STATS:

Recoge las estadísticas de todos los objetos de la base de datos.
Los parámetros son muy interesantes.

STIMATE_PERCENT
Es el porcentaje de filas que queremos que lea para estimar las estadísticas. En mi ejemplo el 80%.

CASCADE
Calcula estadísticas de índices también.

GATHER AUTO
Oracle automáticamente sabrá de qué objetos necesita estadísticas.

Si queréis más detalles de los parámetros disponibles podéis verlo aquí:
http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14258/d_stats.htm#i1041371

Saludos.


lunes, marzo 21, 2011

Oracle, cambiar el directorio de los archives

Modificado el 27/03/2011.

Ya sabéis que si tenemos la base de datos en modo archivelog (lo normal en producción), y se llena el directorio, o los directorios dónde están los archives, la base de datos se para, ya que Oracle no tiene forma de guardar los movimientos realizados sobre la base de datos.

Vamos a cambiar el directorio de archives con la base de datos abierta:

Para ver cómo están definidos los directorios actuales:

Entramos en SQLPLUS:

Vamos a ver
$sqlplus "/as sysdba"

SQL>archive log list;

SQL> show parameter archive

Para cambiar los directorios:

SQL> alter system set log_archive_dest_1='LOCATION=/oradata/archives' scope=both;

Para forzar la escritura de un archive log y ver que se escribe en la nueva ubicación:

SQL> alter system archive log

Nota: No se deben mover los archives generados en la antigua ubicación a la nueva. RMAN irá a buscar los archiver al directorio donde se generaron. Lo mejor es que hubiéramos salvado los archives antes del cambio de directorio.


Otro parámetro importante:

También se debe modificar DB_RECOVERY_FILE_DEST.
Este parámetro indica el directorio para el flash recovery area.


RESOLUCIÓN DE PROBLEMAS


Puede pasar que tengamos alguno de estos parámetros tengan puesto un directorio que realmente no existe. Entonces tendremos un problema porque la base de datos no va a levantar.

Lo que tenemos que hacer es saber si utilizamos el PFILE o el SPFILE en nuestra base de datos.

El PFILE es un fichero de texto editable dónde se encuentran los parámetros. Suele estar en $ORACLE_HOME/dbs.

El SPFILE es un fichero binario que no podemos editar. Tiene otras ventajas como que podemos cambiar parámetros dinámicamente, el RMAN lo salva, etc.

Si utilizas el SPFILE y Oracle no levanta porque antes tienes que cambiar un parámetro, entonces puedes hacer:

1.-Pasar el SPFILE a un fichero PFILE:
SQL> create pfile=/path/to/backup.ora from spfile;ç

2.-Modificar el PFILE con un editor de texto.

3.-Pasar el PFILE a SPFILE:
SQL> create spfile from pfile=/path/to/backup.ora

Saludos.

miércoles, marzo 16, 2011

Un accidente nuclear es imposible hasta que ocurre


Siempre ocurre lo mismo. Este barco no se puede hundir (1912), "la montaña no se mueve" (presa Vajont, 1963), estas centrales son a prueba de terremotos (Fukushima 2011).

La simple negación de un peligro ya indica que entra de lo posible. Si no fuera así no habría ninguna necesidad de desmentirlo.

En el caso de las centrales resulta llamativo que cuando se crean se les pone una fecha de caducidad, que a medida que va llegando se amplía y se amplía negando que haya ningún peligro.

Ahora que ha ocurrido el desastre, mira, resulta que es bastante fácil explicar lo ocurrido, y los que lo tienen difícil son los super catedráticos que han salido estos días en los medios diciendo que era imposible un desastre nuclear (estoy pensando en el Catedrático de la UPV que hace unos días dijo "imposible" y se quedó tan tranquilo).

Pues sí, era posible, y además era un peligro previsto en la zona.

Esta guía Japonesa explica de qué forma estudiar la mejor ubicación para asentar una Central atendiendo la sismicidad. Lo firma la Organización para la Seguridad Nuclear de Japón.

http://www.iaea.org/NuclearPower/Downloads/Infrastructure/meetings/2010-06-TM/Japan_ShizuoNoda.pdf

El problema que le veo es que el documento es de 2009 y la Central caída se construyó en 1971, igual que Garoña a escasos 45 km de mi casa. ¿Se hicieron los mismos estudios en su día? ¿Se han tomado medidas según los peligros identificados en la guía? Obviamente no.

Este otro documento es muy interesante también. Es un documento de la seguridad nuclear del Gobierno de Japón de 2004:
http://www-ns.iaea.org/downloads/ni/safety_convention/japan_report_041227.PDF

En la hoja 17.2 se habla del los factores externos que pueden afectar a la central, como por ejemplo grandes terremotos. En A3-83 podemos ver la forma de clasificar los terremotos que por supuesto incluye los más destructivos. En la hoja 14-8 se mencionan expresamente tsunamis, etc. etc.

Y por supuesto, también se contemplan peligros de las que no se libra casi ninguna Central: la caída de un avión.

Eso sí, el documento se ha elaborado 35 años después de la central.

Saludos.

jueves, marzo 10, 2011

LVM (Logical Volume Manager)

Actualizado el 12-03-2011 y el 15-03-2011.

En origen el término viene de gestor de volúmenes Veritas. Por ello es el que utiliza HP-UX pero también es la que adoptó el Kernel de Linux.

Estos son los pasos a realizar en HP-UX cuando le ofreces un disco:

1.-Hacer que que el nucleo del S.O. vea el disco:
ioscan -fnC disk

Mejora en HP-UX 11.31:

En esta versión tenemos la opción de hacer ioscan -m dsf
Esto nos facilita mucho las cosas porque nos agrupa lo diferentes PATH a un mismo disco de forma que no tenemos que andar eligiendo un prefered path y los alternates.


aizkorri:/# ioscan -m dsf

Persistent DSF Legacy DSF(s)
========================================
.........
/dev/rdisk/disk128

/dev/rdsk/c30t0d7
/dev/rdsk/c28t0d7
/dev/rdsk/c36t0d7
/dev/rdsk/c38t0d7
/dev/rdsk/c40t0d7
/dev/rdsk/c42t0d7
/dev/rdsk/c32t0d7
/dev/rdsk/c34t0d7

A partir de ahora nos referiremos a ese disco como /dev/rdisk/disk128
o /dev/disk/disk128
según corresponda.

2.-Crear los ficheros de dispositivo:
insf

Otras opciones para utilizar (con cuidado):
insf -e
insf -C disk


3.-Mirar la descripción de los nuevos discos que haya encontrado:
ioscan -fnC disk

Un disco que se vea como /dev/dsk/c36t0d1
tiene como instancia de controladora: 36
el target 0
y lun 1

En caso de duda podemos consultar información del disco. Para ello hay que hacer referencia a RDSK en lugar de DSK:

diskinfo /dev/rdsk/c36t0d1

4.-Crear el disco físico (physical volume):
pvcreate /dev/rdsk/c36t0d1

Se puede utilizar la opción -f para forzar, pero cuidado, no pide confirmación.

Si no se hace el pvcreate y luego se intenta utilizar el disco en un LVM volume group, devolverá el error: "Physical volume contains no LVM information".

5.-Creación del Volume Group (VG):

Creamos un directorio con el nombre del vg:

mkdir /dev/vgprueba

Ahora hay que comprobar una numeración. Hacemos esto:

ll /dev/vg*/group

Que nos mostrará algo así:

0x000000 /dev/vg00/group
0x010000 /dev/vgXXXX/group
0x020000 /dev/vgYYYY/group
0x030000 /dev/vgZZZZ/group

Bueno, en este ejemplo está claro que nuestro nuevo vg llevará la numeración 0x040000

Creamos el fichero group:

mknod /dev/vgprueba/group c 64 0x040000

Y ya podemos crear el nuevo VG:

Supongamos que el nuevo disco se ve por dos caminos de fibra diferentes. Uno se ve como c36t0d1 y el otro c28t0d1.

vgcreate /dev/vgprueva /dev/dsk/c36t0d1 /dev/dsk/c28t0d1

En discos muy grandes puede ocurrir que con el tamaño de extensión por defecto (demasiado pequeño) se llegue al máximo de extensiones posible:

El máximo número de extensiones es 1.016 y el tamaño por defecto de la extensión 4 Mb.

"Volume group could not be created:
VGRA for the disk is too big for the specified parameters. Increase the extent size or decrease max_PVs/max_LVs and try again".

Podemos aumentar el tamaño de la extensión a 32 Mb:

vgcreate -s 32 /dev/vgprueba /dev/dsk/c36t0d1 /dev/dsk/c28t0d1

Para ver como está el VG:

vgdisplay -v /dev/vgprueba

6.-Creación del Volumen Lógico: Logical Volume (LV):

Sobre el VG vgprueba, creamos un LV llamado lvprueba de 1.000 extensiones de 32 Mb (32.000 Mb):
lvcreate -l 1000 -n lvprueba vgprueba

También se puede crear un LV sin asignarle ninguna extensión y extenderlo más adelante:

lvcreate -n lvprueba vgprueba
lvextend -L 500 /vgprueba/lvprueba /dev/dsk/c28t0d1

7.-Creación del filesystem de tipo vxfs:

Con la opción -o podemos indicar que queremos que pueda albergar ficheros grandes (de más de 2 Gb).

newfs -F vxfs -o largefiles /dev/vgprueba/rlvprueba

8.-Montaje:

mkdir /directorio
mount /dev/vgprueba/lvprueba /directorio


Más cosas sueltas:

Para añadir un disco (PV) a un VG que ya existe:

# vgextend vgprueba /dev/dsk/c0t5d0
# vgdisplay -v vgprueba

Para crear un LV con un tamaño determinado:

# lvcreate -n lvprueba -L 500 vgprueba

Modificaciones del PV:

En cuanto a los PV (physical volume) se pueden modificar algunas características:

El IO timeout suele ser de 30 segundos (lo que tiene que esperar el S.O. antes de considerar que el disco está offline), pero en el caso de algunos arrays de discos hace falta subirlo:

pvchange -t 120 /dev/dsk/c28t0d1

Para restaurar el valor por defecto:

pvchange -t 0 /dev/dsk/c28t0d1

Modificaciones del LV:

En algún momento tendremos que ampliar un LV (Logical Volume):

Para ampliar de 100 Mb a 200Mb por ejemplo:

lvextend -L 200 /dev/vgprueba/lvprueba

Opcionalmente le podemos indicar el dispositivo:

lvextend -L 200 /dev/vgprueba/lvprueba /dev/dsk/c28t0d1

Después de extender el LV, podemos extender el FS (FileSystem):

umount /dev/vgprueba/lvprueba
extendfs /dev/vgprueba/rlvprueba
mount /dev/vgprueba/lvprueba /dir-prueba

Si tenemos licencia de Online JFS hay muchas cosas que podemos hacer sin desmontar filesystems. Esta de extender el filesystem es una de ellas:

fsadm -v 200000 /dir-prueba
Nota: el tamaño está dado en Kb.

Para reducir el tamaño tendríamos que reducirlo con el fsadm del OnlineJFS y luego un lvreduce:

lvreduce -L 100 /dev/vgprueba/lvprueba

Sin OnlineJFS tenemos una pequeña complicación, ya que no podemos reducir el filesystem. Tendremos que hacer un backup, crear un nuevo LV y FileSystem y recuperar los datos.

Cambiar el nombre de un LV es más sencillo de lo que parece. Símplemente movemos los devices:

umount /dev/vgprueba/lvprueba
mv /dev/vgprueba/lvprueba /dev/vgprueba/lvnuevo
mv /dev/vgprueba/rlvprueba /dev/vgprueba/rlvnuevo
mount /dev/vgprueba/lvnuevo /dir-prueba


Modificaciones del VG:

Hay parámetros que no podremos modificar (por ejemplo el max_pe). En estos casos hay que recrear el VG.

Lo que sí podremos hacer es renombrar el VG:

Para ello, además de desmontar los LV tendremos que deshabilitar el VG con el comando vgchange:

# umount /dev/vgprueba/lvprueba1
# umount /dev/vgprueba/lvprueba2

# vgchange -a n vgprueba

La opción a es availability y la "n" indica NO. (el comando contrario es vgchange -a y vgprueba).


Ahora exportamos a un fichero la configuración del VG:
# vgexport -m /tmp/mapfile vgprueba

Ahora vemos las numeraciones asignadas a los vg-s para ver cual sería el siguiente correlativo
# ll /dev/vg*/group

Creamos el nuevo directorio y el fichero group con el número correlativo siguiente (he puesto como ejemplo el 0x080000):
# mkdir /dev/vgnuevo
# mknod /dev/vgnuevo/group c 64 0x080000

Importamos la configuración en el nuevo VG al que le asociamos los devices:
# vgimport -m /tmp/mapfile vgnuevo /dev/dsk/c40t3d0 /dev/dsk/c5t2d1 ...

Eliminar un LV:

#umount /datos
#lvremove /dev/vgoracle/lvoradata

Quitar un PV de un VG:


#vgreduce vgoradata /dev/dsk/c10t4d8

Eliminar un VG:

Desmontar todos los LV que tenga:
#umount /dev/vgoradata/lvredolog1
#umount /dev/vgoradata/lvredolog2
Desactivarlo:
#vgchange -a n vgoradata

Nota importante: Para eliminar el VG habría que hacer vgreduce, pero hazlo sólo si sabes lo que haces. Si hacemos vgexport de la siguiente forma, la configuración permanecerá almacenada en el disco por si hay que montarlo otra vez.

#vgexport vgoradata

Otros comandos de interés:

# vgcfgbackup vgnew



lunes, marzo 07, 2011

Hazlo tú mismo...


A muchos informáticos nos gusta saber como funcionan las cosas por dentro. En conferencias de seguridad como la ekoparty de Argentina por ejemplo, suele haber talleres donde te enseñan a abrir cerraduras, cajas fuertes, y cosas por el estilo. No es algo relacionado del todo con la informática, pero tampoco es tan ajena.

Bueno, voy al tema. Para hacer esto que describo he recibido la ayuda de Xabino. El objetivo es participar en la jornadas libres del circuito de Miranda que habra dentro de unas 2 semanas.

El coche de arriba lleva a la intemperie desde la última vez que pisé ese circuito:

Según la pegatina, el 27/12/2009, así que ha soportado 2 inviernos en una campa.

Pues lo más extraordinario fue que lo único que hicimos fue conectar los bornes de la batería, girar la llave, y ¡¡¡arrancó a la primera!!!

Eso sí, empezó a echar vapor de agua por el escape como si fuera una locomotora:



Todo no podía ir perfecto y enseguida comprobamos al levantar el capó que había un manguito roto por el que se escapaba la gasolina (prácticamente pulverizada).




En la imagen de la izquierda hemos soltado el manguito del racor que se ve descubierto. La mezcla accede por medio de ese tubito a la rampa de inyección, y de la rampa a cada uno de los cilindros.

Encontramos un manguito de similar sección. No importa si es algo más estrecho (hay que fijarse en que la mezcla tiene que pasar por el estrecho racor).



El segundo problema que encontramos era la luz roja por falta de agua. Sin más, se abre el vaso de expansión y le echamos anticongelante:


Una vez solucionadas todas las pegas del motor echamos a andar y comprobamos que un rodamiento no va del todo bien. En este momento recordamos que la anterior vez que estuvimos en el circuito la rueda trasera derecha echaba humo blanco. Era un rodamiento en mal estado que alcanzaba gran temperatura por la fricción.

Nada, que dice Xabino que hay que ver el rodamiento, y ya de paso arreglar un extra que le puso al coche en su día:


Es muy recomendable tomar esta sencilla medida de seguridad cuando quitemos la rueda. Primero para que no nos pille el disco en caso de que falle el gato, y luego porque si cae, a ver como levantamos el coche.




El invento que había que quitar era la segunda pinza de freno que nunca llegó a funcionar bien del todo:



Agarra el disco e intenta moverlo hacia dentro y fuera. Si hay holgura lo más probable es que sea por el desgaste del rodamiento.

En el Golf las pinzas van amarradas con dos tornillos de tipo Allen cada una. Las pastillas siempre ejercen cierta presión sobre el disco por lo que habrá que forzar un poco.

El pequeño capuchón protector no va enroscado (ver imagen superior). Simplemente se suelta con un destornillador y un martillo. Dentro debería haber mucha grasa. Quitamos el pasador y ya sólo queda una tuerca. Soltándola llegamos al rodamiento.

Al final lo que queda al descubierto es el eje propulsor:



El disco lo habremos dejado en el suelo:




El rodamiento realmente estaba en mal estado y no tiene arreglo posible.











Advertencias al montar todo el tema otra vez:

No apretar demasiado la tuerca contra el rodamiento. El rodamiento se recalienta mucho y por lo tanto se dilata. Si lo apretamos demasiado sufrirá.

Llenar de buena grasa el capuchón protector. Esa grasa se licuará con el calor y ayuda en el engrase, y no sé si refrigerará algo y todo:



Otra función importantísima de este capuchón es que no entre agua al rodamiento. Si lo hace se oxida y adiós rodamiento.

Precisamente después de montar el coche y al movernos apenas 50 metros con él, se rompió el rodamiento delantero derecho. La rueda se desplazaba hacia dentro y fuera por lo que no se podía andar. Así que este fin de semana a cambiar dos rodamientos.

Curiosidades: Los rodamientos sufren muchísimo en las curvas del circuito. Como la mayor parte de las curvas van a la izquierda se fastidian los rodamientos derechos. En especial el delantero derecho donde carga la mayor parte del peso. Es increible las fuerzas y fricciones que soportan estos pequeños elementos. Lo mismo estoy pensando de las dos tuercas allen de las pinzas de freno.

Saludos.

martes, marzo 01, 2011

1975: una burbuja gigantesca

De vez en cuando leo prensa salmón. También de vez en cuando leo que alguien predijo la actual crisis...

Perico hizo un informe tres años antes de que explotara la burbuja,... Juan publicó un artículo cinco años antes...

Muy bien, pero Arthur Hailey describió una burbuja por exceso de deuda, perfectamente en 1975 en "Traficantes de dinero".

pag 165:

-Hay en circulación más dólares de los que debería haber -reconoció Alex.- Nadie que tenga sentido económico puede dudarlo.

-También hay más deudas de las que nunca se podrán pagar; y la deuda se expande, como una burbuja gigantesca. Los gobiernos norteamericanos han gastado salvajemente millones, han pedido prestado de manera loca, amontonando deudas más allá de lo creíble, y después han usado la imprenta para crear más papel moneda y más inflación. Y la gente, los individuos han seguido ese ejemplo -Lewis hizo un gesto hacia la carroza fúnebre-. Los banqueros como Ben Roselli han contribuido a apilar deudas sobre deudas. Tú también, Alex, haces lo mismo con las cómodas tarjetas de crédito y los préstamos facilitados. ¿Cuándo aprenderá la gente la lección de que no hay deudas fáciles? Repito, como nación y como individuos, los norteamericanos han perdido lo que alguna vez tuvieron: cordura financiera.

-Por si te interesa, Margot -dijo Edwina-, debo comunicarte que Lewis y yo rara vez discutimos de asuntos bancarios. Estamos más tranquilos en casa de esa manera.

Margot sonrió:
-Lewis, hablas exactamente como tu periódico.
...
...
...
-Para la mayoría de la gente, toda esperanza ha desaparecido, el juego del dinero ha terminado. Los ahorros, las pensiones y las inversiones a interés fijo están empezando a carecer de valor; hace cinco horas que el reloj marcó la medianoche. A partir de ahora será un sálvese quien pueda, habrá un tiempo en el que se podrá sobrevivir, y los individuos se revolverán buscando salvavidas financieros. Y hay maneras de beneficiarse con la desdicha general..., ..., ...
...
...
...
-Si creyeras lo que crees... es decir, que se prepara pronto una crisis... y suponiendo que fueras un depositante o ahorrista común en dólares norteamericanos: ¿en qué clase de banco te gustaría tener tu dinero?

-En un gran banco. Cuando llega una crisis, los bancos pequeños son los primeros que fallan. Sucedió en el veintitantos, cuando los bancos pequeños cayeron como moscas, y sucederá de nuevo, porque los bancos pequeños no tienen bastante dinero en efectivo para sobrevivir al pánico y a la fuga de moneda. A propósito: ¡olvídate del seguro federal para los depósitos! El dinero disponible es menos del uno por ciento de todos los depósitos bancarios, ni remotamente suficiente como para cubrir una cadena nacional de quiebras bancarias.

Advertencia: Este fragmento es de una novela. Además creo que hay un montón de variables, recursos y actores ahora mismo formando parte del juego, que no se daban en la novela de Hailey.