Se ha liberado la versión 9.7.4 de DB2 Express-C
Las novedades aunque no son muchas con respecto a la versión 9.7.2, son, a mi parecer, interesantes, y lo aún más que haya desarrollado sobre DB2.
La primera son los triggers compuestos (compound triggrs). Ahora, en lugar de crearse un trigger para cada operación (INSERT, UPDATE y DELETE), se pueden controlar todas las operaciones sobre un sólo trigger. Aunque no marca una diferencia espectacular, lo hace realmente más comodo.
La segunda novedad es que se pueden usar campos de una tabla en la parte derecha de la operación LIKE, cuando hasta ahora sólo se podían usar constantes. Este cambio si que me parece realmente potente, permitiendo hacer joins con patrones, o, aunque de forma un tanto rudimientaria, usar una lista constantes, lo que nos ahorra escribir muchas condiciones en determinadas búsquedas.
Para buscar las entradas que empiecen por a, b, c o d Se puede escribir:
SELECT count(*) from A,table(values ('a%'),('b%'),('c%'),('d%'),('e%')) as t(a) where A.a like t.a;
o
with t(a) as(values ('a%'),('b%'),('c%'),('d%'),('e%'))
SELECT count(*) from A,t where A.a like t.a;
en lugar de:
SELECT count(*) from A where A.a like 'a%' or A.a like 'b%' or A.a like 'c%' or A.a like 'd%' or A.a like 'e%';
Por último aporta mejoras en el uso de Text Search.
Tenemos el siguiente problema en DB2 Express.
ResponderSuprimirIdentificamos que el backup diario programado de una base de datos no se
estaba obteniendo porque el tablespace "SYSTOOLSPACE" estaba en estado
OFFLINE.
Para hacer la corrección de este tablespace se ejecutaron los siguientes
comandos
ALTER TABLESPACE SWITCH ONLINE
CREATE TEMPORARY TABLESPACE MYTEMP MANAGED BY AUTOMATIC STORAGE
CREATE TEMPORARY TABLESPACE TEMPSPACE2 MANAGED BY SYSTEM USING ('d')
Estos no ayudaron por lo cual según la documentación de IBM el comando
RESTART DATABASE era la solución mas efectiva
RESTART DATABASE
A partir de ese momento la base de datos no se puede conectar y nos sale
este error
SQL0980C
A disk error occurred. Subsequent SQL statements cannot be processed.
Explanation
A disk error occurred that prevented successful execution of the current
and subsequent SQL statements. The application program is not permitted to
issue additional SQL statements. For example, a recovery routine associated
with the application program cannot issue additional SQL statements. The
database is marked as needing recovery and all applications using the
database are prevented from accessing the database.
The statement cannot be processed.
User response
Record all error information from the SQLCA, if possible. Terminate all
applications using the database. Determine if the error is a hardware
error. Restart the database. If recovery is not possible, restore the
database from a backup copy.
If installing the sample database, drop it and install the sample database
again.
sqlcode: -980
sqlstate: 58005
Haciendo las revisiones respectivas no se trata de problemas de disco,
según la documentación pueden ser archivos de la base de datos posiblemente
corruptos
te comento que ahora no es posible conectar con la base de datos luego de aplicado los comandos mencionados
Hola Elmer,
ResponderSuprimirsin saber exactamente lo que te pasa, pues para eso tendría que mirar el db2diag.log, puedo decirte, lo primero, que el comando para devolver el tablespace a su estado original lo tienes mal, sería:
ALTER TABLESPACE SYSTOOLSPACE SWITCH ONLINE
segundo, no es necesario crear un tablespace temporal, porque el que está offline no es el temporal.
tercero, creo (sin estar completamente seguro) que no te funciona porque has lanzado el restart con un tablespace offline. Para solucionarlo tienes que dejar el tablespace en drop pending. El problema de esto es que perderás todos los datos de este tablespace. En principio aquí sólo deberían estar las planificaciones del automatic maintenance, a no ser que se crearan tablas de aplicación en él.
El comando sería:
RESTART DATABASE DROP PENDING TABLESPACES (SYSTOOLSPACE)
De todas formas, para más seguridad, envíame el fichero db2diag.log, y te cuento lo que veo.