viernes, diciembre 14, 2012

Oracle, error ORA-00942 en el acceso a tablas del diccionario

Hace más de 2 años, explicaba cómo habilitar las trazas de acceso en Oracle, y más tarde, cómo analizar cómodamente esas trazas.

El análisis de las trazas requería el acceso a una tabla del diccionario que se encuentra en el esquema SYS: tabla AUD$.

Lo lógico es que con el tiempo vayamos mejorando nuestro sistema e incorporemos trazas de otros sistemas diferentes. Así pues terminaremos creando un nuevo usuario Oracle que accederá a sus propios objetos, además de a la citada tabla SYS.AUD$.

Si hacemos algo así como SELECT * FROM SYS.AUD$ nos dará el siguiente error: "ORA-00942: table or view does not exist".

El problema se soluciona asignándole al nuevo usuario el privilegio del sistema:

GRANT SELECT ANY DICTIONARY TO "USUARIO"

Saludos.

miércoles, diciembre 05, 2012

Oracle, el fichero spfile


Desde Oracle9 este es el fichero de inicialización de parámetros que se debe que utilizar. spfile es un fichero binario que no puedes editar, a diferencia del pfile que es de texto. Aquí tienes unas buenas razones para utilizar el spfile.

Para saber si la base de datos utiliza spfile o pfile:


SQL> SELECT DECODE(value, NULL, 'PFILE', 'SPFILE') "Init File Type" 
       FROM sys.v_$parameter WHERE name = 'spfile';

Para saber dónde está el fichero spfile:

SQL> show parameter spfile;


Arrancar la base de datos con otro pfile:

SQL> STARTUP PFILE='/oradata/fichero'

Saludos.

lunes, diciembre 03, 2012

UNIX, destrucción de metadata en un LV (Logical Volume)


A veces tienes que eliminar datos de un filesystem y quieres hacer algo más que el típico rm -R.
Esto dificultará un poco más una hipotética recuperación de datos:

Necesitamos un fichero algo grande como puede ser el kernel de UNIX:
ll /stand/vmunix

Escribimos los bloques del fichero elegido sobre el RLV (Raw Device del Logical Volume).
Si en el vgdatos tenemos un lvdatos por ejemplo:

dd if=/stand/vmunix of=/dev/vgdatos/rlvdatos bs=1024

Nota: En el comando dd indico el raw device rlvdatos y no el block device lvdatos.

Saludos.