Como eliminar el SYSAUX para que nos permita realizar una exportación de datos.

Pues eso amig@s,

Si por un casual se borra o corrompe el fichero auxiliar SYSAUX01 de nuestra bbdd Oracle no podremos realizar una exportación debido a que ciertos paquetes que utiliza la utilidad exp o expdp están asociadas con el tablespace SYSAUX. 

De por sí no existe forma normal de eliminar el tablespace SYSAUX pero con el siguente tip podrán decirle a la bbdd que (mediante un controlfile especial) nunca ha llegado a existir :p

1.  Parar la base de datos y dejarla solo montada:
sqlplus "/ as sysdba"
shutdown abort;
startup mount;

2.  Crear una copia actual del controlfile, luego buscar el dump en el directorio udump dentro de la carpeta ADMIN:

alter database backup controlfile to trace;
shutdown immediate;
startup nomount;

Editamos con cualquier editor de textos el dump que contiene las siguientes lineas y eliminamos la linea que diga la ruta...SYSAUX01.DBF, por lo que el texto nos debe quedar de la siguiente forma (ojo es un ejemplo, tienen que utilizar el que cree la bbdd de ustedes):

CREATE CONTROLFILE REUSE DATABASE "ORCL" RESETLOGS  ARCHIVELOG
    MAXLOGFILES 16
    MAXLOGMEMBERS 4
    MAXDATAFILES 250
    MAXINSTANCES 4
    MAXLOGHISTORY 292
LOGFILE
  GROUP 1 (
    '/home/oracle/data1/redo-01a.rdo',
    '/home/oracle/data2/redo-01b.rdo'
  ) SIZE 30M,
  GROUP 2 (
    '/home/oracle/data1/redo-02a.rdo',
    '/home/oracle/data2/redo-02b.rdo'
  ) SIZE 30M,
  GROUP 3 (
    '/home/oracle/data1/redo-03a.rdo',
    '/home/oracle/data2/redo-03b.rdo'
  ) SIZE 30M
DATAFILE
  '/home/oracle/data1/system-01.dbf',
  '/home/oracle/data1/undo-01.dbf',  --
  -- Notar que ya no existe el datafile SYSAUX
  --
  '/home/oracle/data1/users-01.dbf',
  '/home/oracle/data1/data-01.dbf',
  '/home/oracle/data1/index-01.dbf',
CHARACTER SET AL32UTF8;

Ahora bien, con la base de datos en modo nomount copiamos el texto resultante de la modificacion desde CREATE CONTROFILE... hasta CHARACTER...; y lo pegamos en el SQLPLUS que tenemos abierto.

Si todo ha sido correcto, nos dirá Control File Created.

2.1  Ahora vamos a recuperar la base de datos utilizando el controlfile que acabamos de crear. Recordar que tras la ejecución de la primer linea, teclearemos cancel y luego pulsamos INTRO para confirmar. Por ultimo hacemos un shutdown immediate:

RECOVER DATABASE USING BACKUP CONTROLFILE;

ORA-00279: change 190712 generated at 21/08/2013 23:54:49 needed for thread 1
ORA-00289: suggestion :
/home/oracle/data1/archive/TEST-s24-t1-r679661814.arc
ORA-00280: change 190712 for thread 1 is in sequence #24
Specify log: {=suggested | filename | AUTO | CANCEL}

cancel

Media recovery cancelled.
shutdown immediate;

3.  Creamos un pfile dentro del sqlplus con el comando create pfile='ruta/init.ora' from spfile y añadimos al final de este con un editor de texto las siguientes lineas:

_allow_resetlogs_corruption = true
_allow_read_only_corruption = true

4.  Ahora vamos a arrancar nuestra BBDD utilizando el comando startup mount:

startup mount pfile='ruta/init.ora';
ALTER DATABASE OPEN RESETLOGS;
Database altered.

5. Necesitamos crear el tablespace TEMP que cuando creamos el controlfile de backup este no está creado:

create temporary tablespace temp tempfile ‘/oradata/ORCL/temp01.dbf’ size 100m autoextend off extent management local uniform size 1m;

Si nos da problemas para crearlo, cambiarle el nombre a temp1 y luego ejecutar el comando alter database default temporary tablespace temp; para que este nuevo tablespace sea el por defecto de la bbdd, luego eliminar el tablespace temporal original corrupto con: drop tablespace temp including contents and datafiles;

6.  Inmediatamente cuando diga base de datos alterada, realizaremos un export completo del usuario o la información que necesitemos exportar y LISTO!!!!!!!!!!!!!!

Espero que les resulte útil :).
Share on Google Plus
    Blogger Comment

0 comentarios: