Últimas Actualizaciones del Evento

Recuperación de espacio en SYSAUX mediante limpieza de AWR

Posted on Actualizado enn

En ocasiones dependiendo de la actividad de una base de datos podremos encontrarnos con un tablespace SYSAUX muy grande en relación al tamaño total de la base de datos o simplemente una situación que requiera conseguir liberar espacio en el almacenamiento asignado.

Consultando el tamaño de SYSAUX se ve que este es casi 15 veces mayor que cuando se creó la base de datos:

SQL> select f.tn TABLESPACE,
  2         round(usado/1048576,2) "USADO Mb",
  3         round(total/1048576 ,2) "TOTAL Mb"
  4  from
  5    (select tablespace_name tn, sum(nvl(bytes,0)) usado from dba_segments group by tablespace_name) s,
  6    (select tablespace_name tn, sum(nvl(bytes,0)) total from dba_data_files group by tablespace_name) f
  7  where s.tn=f.tn
  8        and f.tn='SYSAUX';
TABLESPACE                       USADO Mb   TOTAL Mb
------------------------------ ---------- ----------
SYSAUX                           13884.31      14756

En el desglose de ocupación se observa que la mayoría de esta ocupación viene dada por el componente ‘SM/AWR’:

SQL> select occupant_name,
  2         space_usage_kbytes/1024 Mb
  3  from v$sysaux_occupants
  4  order by 2 desc;

Este espacio está dedicado a la recolección de snashots y estadísticas para generar informes AWR, ASH, ADDM … y para el propio sistema de AMM.
Por defecto esta recolección de datos está configurada por defecto para recoger un snapshot cada hora y guardarlos durante 8 dias, confirmamos mediante esta vista:

SQL> select * from dba_hist_wr_control;
      DBID SNAP_INTERVAL          RETENTION              TOPNSQL
---------- ---------------------- ---------------------- ----------
3860690452 +00000 01:00:00.0      +00008 00:00:00.0      DEFAULT

Dependiendo del uso y finalidad de esta base de datos podemos bajar la retención a por ejemplo 3 dias, recuperando así mas de la mitad del espacio consumido.

NOTA: A partir de 11g, previamente hemos de modificar la ‘MOVING_WINDOW’ para evitar un error ORA-13541, esta ventana es utilizada por los Adaptive Thresholds que recogen el comportamiento general para generar alertas predefinidas si el rendimiento de la instancia varia según alertas predefinidas:

SQL> select moving_window_size
  2  from dba_hist_baseline
  3  where baseline_type = 'MOVING_WINDOW';

MOVING_WINDOW_SIZE
------------------
                 8

SQL> exec DBMS_WORKLOAD_REPOSITORY.MODIFY_BASELINE_WINDOW_SIZE(window_size =>3);

PL/SQL procedure successfully completed.

SQL> select moving_window_size
  2  from dba_hist_baseline
  3  where baseline_type = 'MOVING_WINDOW';

MOVING_WINDOW_SIZE
------------------
                 3

Una vez redimensionada la ‘MOVING WINDOW’ ya podemos reducir la retención de los snapshots (especificada en minutos):

SQL> exec DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(retention => 4320);

PL/SQL procedure successfully completed.

Podemos entonces esperar a que se limpien los que superan la nueva retención en la ejecución nocturna de las tareas de mantenimiento de MMON o eliminarlos manualmente ahora, para ello averiguamos el rango de valores concreto que descartamos:

SQL> def DIAS=3
SQL> select snap_id,
  2         dbid,
  3         begin_interval_time SNAPSHOT
  4  from dba_hist_snapshot
  5  where snap_id = (select min(snap_id) from dba_hist_snapshot) or
  6        snap_id = (select max(snap_id) from dba_hist_snapshot where begin_interval_time < sysdate-&DIAS);
   SNAP_ID       DBID SNAPSHOT
---------- ---------- ------------------------------------
     20443 3860690452 21-AUG-16 11.00.14.541 PM
     20573 3860690452 27-AUG-16 09.00.30.899 AM

Y los eliminamos:

exec dbms_workload_repository.drop_snapshot_range(20443,20573);

PL/SQL procedure successfully completed.

Si queremos contener el consumo de espacio, hay que revisar tambien que el modo de recolección es ‘TYPICAL’ y no ‘ALL’:

SQL> show parameter statistics_level

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
statistics_level                     string      TYPICAL

Si no fuese asi podemos bajar el nivel con:

SQL> alter system set statistics_level=TYPICAL;

Se podría optar también por bajar a ‘BASIC’ pero puede afectar a funcionalidades muy interesantes como la gestión automática de la memoria (AMM) o el optimizador de planes de ejecución SQL (CBO).

NOTA: Podemos ver el detalle de lo que se activa/desactiva en cada nivel en ‘v$statistics_level’.

Pero puede suceder que al comprobar de nuevo el espacio en el tablespace vemos que no se ha liberado nada. Esto puede ser debido a que la tabla particionada ‘WRH$_ACTIVE_SESSION_HISTORY’ haya quedado con particiones pertenecientes a rangos de datos antiguos que no se estén eliminando como debieran, dejando registros ‘huérfanos’ ocupando espacio. Comprobamos el tamaño de los principales segmentos de SYSAUX:

SQL> select * from (
  2  select OWNER, SEGMENT_NAME, SEGMENT_TYPE, ROUND(BYTES/1048576,2) "SIZE Mb"
  3  from dba_segments
  4  where tablespace_name = 'SYSAUX'
  5  order by 4 desc
  6  ) where ROWNUM <= 10;
OWNER      SEGMENT_NAME                   SEGMENT_TYPE          SIZE Mb
---------- ------------------------------ ------------------ ----------
SYS        WRH$_ACTIVE_SESSION_HISTORY    TABLE PARTITION          2939
SYS        WRH$_LATCH                     TABLE PARTITION        638.69
SYS        WRH$_EVENT_HISTOGRAM_PK        INDEX PARTITION           544
SYS        WRH$_EVENT_HISTOGRAM           TABLE PARTITION        519.69
SYS        WRH$_SQLSTAT                   TABLE PARTITION        460.31
SYS        WRH$_SYSSTAT_PK                INDEX PARTITION        448.56
SYS        I_WRI$_OPTSTAT_H_OBJ#_ICOL#_ST INDEX                     432
SYS        WRH$_SYSSTAT                   TABLE PARTITION           421
SYS        WRH$_PARAMETER_PK              INDEX PARTITION           384
SYS        WRH$_LATCH_PK                  INDEX PARTITION        382.06

10 rows selected.

Confirmamos la sospecha de que el origen de la ocupación son registros huérfanos:

SQL> select count(1) TOTAL from WRH$_ACTIVE_SESSION_HISTORY;

     TOTAL
----------
   9045188
SQL> select count(1) OBSOLETOS from WRH$_ACTIVE_SESSION_HISTORY where sample_time < sysdate - 3;

 OBSOLETOS
----------
   8970681

Verificamos que existe una partición que contiene los snapshots obsoletos, la propia base de datos debería eliminarla, pero no lo está haciendo, así que siguiendo el documento de Oracle 387914.1 forzamos la creación de una nueva partición con la siguiente variable, a los ocho días (o a los que tengamos establecida la retención) la partición de eliminará de manera natural:

SQL> SELECT owner,
  2         segment_name,
  3         partition_name,
  4         segment_type,
  5         bytes/1024/1024/1024 Size_GB
  6  FROM dba_segments
  7  WHERE segment_name='WRH$_ACTIVE_SESSION_HISTORY';

OWNER      SEGMENT_NAME                   PARTITION_NAME                 SEGMENT_TYPE          SIZE_GB
---------- ------------------------------ ------------------------------ ------------------ ----------
SYS        WRH$_ACTIVE_SESSION_HISTORY    WRH$_ACTIVE_3860690452_0       TABLE PARTITION    2.87011719
SYS        WRH$_ACTIVE_SESSION_HISTORY    WRH$_ACTIVE_SES_MXDB_MXSN      TABLE PARTITION    .000061035
SQL> alter session set "_swrf_test_action" = 72;

Session altered.
SQL> SELECT owner,
  2         segment_name,
  3         partition_name,
  4         segment_type,
  5         bytes/1024/1024/1024 Size_GB
  6  FROM dba_segments
  7  WHERE segment_name='WRH$_ACTIVE_SESSION_HISTORY';

OWNER SEGMENT_NAME PARTITION_NAME SEGMENT_TYPE SIZE_GB
---------- ------------------------------ ------------------------------ ------------------ ----------
SYS WRH$_ACTIVE_SESSION_HISTORY WRH$_ACTIVE_3860690452_0 TABLE PARTITION 2.87011719
SYS WRH$_ACTIVE_SESSION_HISTORY WRH$_ACTIVE_3860690452_20674 TABLE PARTITION .000061035
SYS WRH$_ACTIVE_SESSION_HISTORY WRH$_ACTIVE_SES_MXDB_MXSN TABLE PARTITION .000061035

En cuanto se supera la retención de los snapshots (3 dias en este caso) se elimina la partición y se libera el espacio en el tablespace:

SQL> SELECT owner,
  2         segment_name,
  3         partition_name,
  4         segment_type,
  5         bytes/1024/1024/1024 Size_GB
  6  FROM dba_segments
  7  WHERE segment_name='WRH$_ACTIVE_SESSION_HISTORY';
OWNER      SEGMENT_NAME                   PARTITION_NAME                 SEGMENT_TYPE          SIZE_GB
---------- ------------------------------ ------------------------------ ------------------ ----------
SYS        WRH$_ACTIVE_SESSION_HISTORY    WRH$_ACTIVE_3860690452_20674   TABLE PARTITION      .0390625
SYS        WRH$_ACTIVE_SESSION_HISTORY    WRH$_ACTIVE_SES_MXDB_MXSN      TABLE PARTITION    .000061035
SQL> select f.tn TABLESPACE,
  2         round(usado/1048576,2) "USADO Mb",
  3         round(total/1048576 ,2) "TOTAL Mb"
  4  from
  5    (select tablespace_name tn, sum(nvl(bytes,0)) usado from dba_segments group by tablespace_name) s,
  6    (select tablespace_name tn, sum(nvl(bytes,0)) total from dba_data_files group by tablespace_name) f
  7  where s.tn=f.tn
  8        and f.tn='SYSAUX';
TABLESPACE                       USADO Mb   TOTAL Mb
------------------------------ ---------- ----------
SYSAUX                            2744.31      14756

Si nada de esto funciona podemos optar por el método mas drástico que es eliminar y reconstruir el componente AWR al completo:

SQL> connect / as sysdba
SQL> @?/rdbms/admin/catnoawr.sql
SQL> @?/rdbms/admin/catawrtb.sql
Anuncios

Mi experiencia con el OCA 12c

Posted on

oca12cRecientemente he obtenido la certificación OCA 12c (Oracle Database 12c Administrator Certified Associate), me he decidido ahora a escribir mi experiencia por si pudiese ayudar a alguien ya que en su momento no encontré mucha información de primera mano, al menos en castellano.

Si estáis pensando en sacarla ya sabréis que consta de dos exámenes, uno de SQL, a elegir entre:

1Z0-071 Oracle Database 12c SQL
1Z0-061 Oracle Database 12c: SQL Fundamentals 
1Z0-051 Oracle Database 11g: SQL Fundamentals I 
1Z0-047 Oracle Database SQL Expert

Y uno propio de la administración de Oracle 12c:

1Z0-062 Oracle Database 12c: Installation and Administration 
1Z0-075 Oracle Database 12c Administration

Información oficial actualizada: Oracle Database 12c – Certification Path

Yo en su día, y por las circunstancias del momento, opté por hacer el “Oracle Database 11g: SQL Fundamentals I” (1Z0-051) y el “Oracle Database 12c: Installation and Administration” (1Z0-062), estos exámenes, al igual que las certificaciones, no tienen caducidad por lo que no hay un tiempo máximo entre el primero y el segundo, siempre que Oracle no decida cambiar la “Certification Path” e invalide el uso del primer examen para la certificación que queremos obtener.

Sobre los exámenes es mejor no marcarse una fecha de antemano y esperar a ver como avanza la preparación para poder elegir una fecha.

Oracle Database 11g: SQL Fundamentals I 1Z0-051

Para este examen no estudié ningún libro en concreto, es eminentemente practico por lo que lo mejor es hacerse con un Oracle rápido (tipo Express Edition) y ponerse a picar SQL. Este examen es online pero, aunque inicialmente parezca una ventaja, las preguntas y su tiempo están diseñados para no dejarte lugar a repasos ni pruebas, se pasa volando y es importante ser consciente de que si gastas mas de minuto y medio con una pregunta la marques para revisión y pruebes con la siguiente para al menos poder contestarlas todas.

Mi consejo es saberse de memoria todas las mascaras de conversión de TO_CHAR y TO_DATE, tener muy claras todas las combinaciones de funciones de cadena y de control (NVL, NVL2, NULLIF, DECODE, TRIM …) y especialmente los joins y los distintos operadores de unión.

En cuanto a la teoría, Tahití (mejor dicho: el anteriormente conocido como Tahití) será tu aliado y para la practica yo confié en el tester recomendado por Oracle: SelfTest Kaplan y no me fue mal aunque es mas bien caro.

Oracle Database 12c: Installation and Administration 1Z0-062

Este examen, aunque es mas denso y con una nota de corte mayor (95 preguntas, 2.5h, 67%), se me hizo mas llevadero que el de SQL, quizás a alguien que provenga del mundo de desarrollo le resulte al revés. Aqui si opté por un libro que recomiendo encarecidamente, no solo porque es relativamente ameno si no porque por el precio viene con un tester en DVD de 170 preguntas bastante completo.

OCA Oracle Database 12c Installation and Administration Exam Guide (Exam 1Z0-062) de John Watson editado por Oracle Press

Ademas del libro que ayuda a sentar las bases, en la fase final compré dos examinadores ademas del que venia en el DVD del libro:

oraclestudy.com

Sin duda el mas barato que he encontrado, con garantía de devolución y con mas de 400 preguntas actualizadas, pero en general de muy baja calidad y con algunos problemas como:

  • Incluye mucha materia que no entra en examen como tecnología Multitenant o Database Vault, lo que hace bajar la nota de las pruebas si no estás de usarlo o no lo has estudiado.
  • Algunas preguntas son sobre entornos 11g y algunas de ellas incluso incorrectas en 12c por cambios en la tecnología, por ejemplo en 12c el registro de la instancia en el listener lo lleva a cabo el nuevo proceso LREG, mientras que en anteriores versiones lo hacia el PMON, si la pregunta está anticuada te la dará por inválida aunque este correcta.
  • Tras realizar el examen de prueba da una nota e indica las respuestas fallidas pero no se explica el porque del error, lo que hace que no tenga mucho valor didáctico.
  • En algunas preguntas te indican marcar dos respuestas validas, pero el selector solo deja una e irremediablemente es imposible que la de por buena.
  • Aunque el inglés no es mi fuerte, me da la sensación de que algunas frases tienen una composición extraña y hay bastantes faltas de ortografía/mecanografía, así como ‘imágenes’ (fotografías de papeles) de dudosa procedencia con marcas de agua borradas.

En definitiva, te devuelven el dinero si suspendes siempre que hayas realizado tests en los últimos 15 dias y al menos tres de ellos con al menos una nota de 80, quizás esto sea la explicación de algunos de los ‘problemas’ descritos para conseguir notas altas. Asi que si buscáis algo barato y con muchísimas preguntas es vuestro test, pero yo no lo escogería almenos como único método.

SelfTest Kaplan

Es el recomendado por Oracle, es sensiblemente mas caro y solo tiene 130 preguntas, aunque los detalles están mas cuidados, por ejemplo un histórico de tus notas, el entorno es casi idéntico al que te encontrarás en el examen, tras la revisión da una explicación de porque has fallado cada pregunta…

Sin duda si fuese algo mas barato o tuviese mas preguntas seria la opción ideal junto con el DVD del libro. Y si tuviera que quedarme con solo un método eligiria sin duda el libro y su DVD.

 

Nada mas, animaos, y espero que este resumen le haya podido ser de ayuda a alguien.

Capacidad de UNDO

Posted on Actualizado enn

Ocupación en el tablespace de UNDO a nivel de bloques usados en los datafiles, lo que no indica que esté ‘lleno’ si no que de haber muchos bloques libres el tablespace está sobredimensionado.

--
-- Tamaño de tablespace de UNDO (ocupación de bloques)
--   Javier Castro - 09/09/2016
--   https://cuandoeldbanoesta.wordpress.com
--

select f.tn TABLESPACE,
       round(usado/1048576,2) "USADO (Mb)",
       round(total/1048576,2) "TOTAL (Mb)",
       round(usado/total*100,2) "PCT (%)"
from
  (select tablespace_name tn, sum(nvl(bytes,0)) usado from dba_segments group by tablespace_name) s,
  (select tablespace_name tn, sum(nvl(bytes,0)) total from dba_data_files where online_status='ONLINE' group by tablespace_name) f
where s.tn=f.tn and f.tn=(select value from v$parameter where name = 'undo_tablespace');
TABLESPACE                     USADO (Mb) TOTAL (Mb)    PCT (%)
------------------------------ ---------- ---------- ----------
UNDOTBS1                          3007.63       3072       97.9

 

Ocupación en el tablespace de UNDO a nivel de tipo de segmentos, pueden ocurrir errores en las transacciones DML si hay demasiados activos, o errores en operaciones de lectura si hay demasiados ‘unexpired’ y no quedan libres.

 --
 -- Ocupación de UNDO por tipo de extents
 --   Javier Castro - 07/10/2016
 --   https://cuandoeldbanoesta.wordpress.com
 --

 set feedback off
 break on tablespace_name
 select tablespace_name, 
        status, 
        blocks,
        round(blocks/(select sum(blocks)
                      from dba_data_files 
                      where online_status='ONLINE' and 
                            tablespace_name=(select value from v$parameter where name = 'undo_tablespace')
                      group by tablespace_name)*100,2) "OCUPACION DE TS (%)"
 from (select tablespace_name, status, sum(blocks) blocks
       from dba_undo_extents
       group by tablespace_name, status
       union
       select tablespace_name, 'FREE', (select sum(blocks)
                                        from dba_data_files 
                                        where online_status='ONLINE' and 
                                              tablespace_name=(select value from v$parameter where name = 'undo_tablespace')
                                        group by tablespace_name) - sum(blocks) blocks
       from dba_undo_extents
       group by tablespace_name)
 order by blocks desc;
TABLESPACE_NAME                STATUS        BLOCKS OCUPACION DE TS (%)
------------------------------ --------- ---------- -------------------
UNDOTBS1                       UNEXPIRED     566376               72,02
                               EXPIRED       156008               19,84
                               FREE           63024                8,01
                               ACTIVE          1024                 ,13

 

En que momento se generan mayor cantidad de bloques de UNDO activos.

 --
 -- Periodo de maximo ritmo de generación de undo
 --   Javier Castro - 29/09/2016
 --   https://cuandoeldbanoesta.wordpress.com
 --

set heading off
 set feedback off
 alter session set NLS_DATE_FORMAT='DD/MM/YYYY HH24:MI:SS';
 select 'Inicio periodo monitorizado ...: '||min(begin_time) from dba_hist_undostat;
 select 'Final periodo monitorizado ....: '||max(end_time) from dba_hist_undostat;
 set heading on
 select begin_time "INICIO PERIODO", end_time "FIN PERIODO", ritmo "RITMO (Blk/s)"
 from (select begin_time, end_time, undoblks/((end_time-begin_time)*(60*60*24)) ritmo from dba_hist_undostat)
 where ritmo = (select max(undoblks/((end_time-begin_time)*(60*60*24))) from dba_hist_undostat);
 Inicio periodo monitorizado ...: 22/09/2016 15:18:37
 Final periodo monitorizado ....: 29/09/2016 15:14:15
 INICIO PERIODO        FIN PERIODO           RITMO (Blk/s)
--------------------- --------------------- -------------
 26/09/2016 21:58:37   26/09/2016 22:08:37          295,26

 

Principales transacciones consumidoras de UNDO

 --
 -- Transacciones actuales consumidoras de UNDO
 --   Javier Castro - 07/10/2016
 --   https://cuandoeldbanoesta.wordpress.com
 --

alter session set NLS_DATE_FORMAT='DD/MM/YYYY HH24:MI:SS'; 
set linesize 200
select s.username,
       s.sid, s.serial#,
       s.status,
       t.start_date "INICIO TRANSACCION",
       t.used_ublk "BLOQUES UNDO ACTIVOS",
       round(t.used_ublk / ((select sum(blocks)
                             from dba_data_files 
                             where online_status='ONLINE' and 
                                   tablespace_name=(select value from v$parameter where name = 'undo_tablespace')
                             group by tablespace_name))*100,2) "OCUPACION DE TS (%)"
from v$transaction t, v$session s
where t.ses_addr=s.saddr
order by used_ublk desc;
USERNAME            SID    SERIAL# STATUS   INICIO TRANSACCION    BLOQUES UNDO ACTIVOS OCUPACION DE TS (%)
------------ ---------- ---------- -------- --------------------- -------------------- -------------------
TRINIDAD           1146      10013 INACTIVE 14/10/2016 09:43:52                      4                   0
COVADONGA          1153      33721 INACTIVE 14/10/2016 13:44:42                      4                   0
MARIA               808      31297 ACTIVE   14/10/2016 14:20:04                      4                   0
JAVIER              924       2197 INACTIVE 14/10/2016 14:18:59                      3                   0
PABLO               241      19555 INACTIVE 14/10/2016 09:26:06                      3                   0
EMILIO              919      25389 INACTIVE 14/10/2016 12:10:47                      3                   0
ALMUDENA            235      14029 INACTIVE 14/10/2016 11:00:39                      3                   0
IRENE               237      58327 INACTIVE 14/10/2016 09:31:13                      3                   0
CARMEN             1603      17667 INACTIVE 14/10/2016 13:10:13                      3                   0
AUGUSTA            1503      19435 INACTIVE 14/10/2016 14:07:23                      2                   0
MARIA              1045      44833 INACTIVE 14/10/2016 13:45:49                      2                   0
CELIA               582       4101 INACTIVE 14/10/2016 10:01:08                      2                   0
VERONICA           1043      43537 INACTIVE 14/10/2016 13:07:39                      1                   0
MARIA              1372      37981 INACTIVE 14/10/2016 14:24:06                      1                   0
ALBERTA             929      32001 INACTIVE 14/10/2016 14:24:22                      1                   0
LUISA               249       8685 INACTIVE 14/10/2016 13:30:07                      1                   0
ISMAEL             1264      55657 INACTIVE 14/10/2016 13:57:16                      1                   0
JAVIER             1724      40971 INACTIVE 14/10/2016 14:26:56                      1                   0
MARIOM             1380      23969 INACTIVE 14/10/2016 14:10:24                      1                   0
BEATRIZ            1150      23261 INACTIVE 14/10/2016 13:06:48                      1                   0
ELENA                 4      49911 INACTIVE 14/10/2016 13:50:57                      1                   0

 

Sesiones con mayor consumo de UNDO desde que se inició la instancia

--
-- Sesiones con mayor ritmo de generación de UNDO
--   Javier Castro - 14/10/2016
--   https://cuandoeldbanoesta.wordpress.com
--

alter session set NLS_DATE_FORMAT='DD/MM/YYYY HH24:MI:SS'; 
set linesize 200
select s.sid,
       s.serial#,
       s.username,
       s.program,
       s.logon_time "LOGON",
       i.block_changes "BLOCK CHANGES",
       round(i.block_changes/((sysdate-s.logon_time)*24*60),2) "BLOCK CHANGES / min"
from v$session s, v$sess_io i
where s.sid = i.sid
order by 7 desc;
       SID    SERIAL# USERNAME    PROGRAM                     LOGON                 BLOCK CHANGES BLOCK CHANGES / min
---------- ---------- ----------- --------------------------- --------------------- ------------- -------------------
       359      37895 ESTEBAN     Toad.exe                    13/10/2016 11:13:14        19805583            12032,31
       815      41927 FELIX       java.exe                    14/10/2016 14:36:37            1688              636,98
       118      55751 LUISMIGUEL  java.exe                    14/10/2016 09:18:47           91479              285,44
       123      42203 MANUEL      java.exe                    14/10/2016 10:45:14           38521               164,6
      1145      30233 MARISA      java.exe                    14/10/2016 09:27:36           45605              146,33
        18      61001 BEATRIZ     java.exe                    14/10/2016 09:20:04           31022               97,19
      1597          1             oracle@ov01sun105 (SMON)    06/09/2016 19:58:38         5053854                92,9
      1503      19435 AUGUSTA     java.exe                    14/10/2016 13:39:17            3924               65,42
      1150      23261 ROBERTO     java.exe                    14/10/2016 13:06:04            5238                56,2
      1265      38885 PATRICIA    java.exe                    14/10/2016 13:46:20            2441               46,11
       246      43729 ALBERTA     sqlplus.exe                 14/10/2016 09:27:58           13738               44,13

 

Tamaño optimo del tablespace de UNDO en base a la máxima actividad reciente

--
-- Tamaño optimo del tablespace de UNDO en base a la máxima actividad reciente
--   Javier Castro - 04/10/2016
--   https://cuandoeldbanoesta.wordpress.com
--

set heading off
set feedback off
set linesize 200
alter session set NLS_DATE_FORMAT='DD/MM/YYYY HH24:MI:SS'; 
select 'Inicio periodo monitorizado ...: '||min(begin_time) from v$undostat;
select 'Final periodo monitorizado ....: '||max(end_time) from v$undostat;
set heading on
select round(UNDOBL_S,2) "MAX BLOQUES UNDO/s", 
       TIEMPO "SQL DE MAYOR DURACION (s)", 
       round((TAM_BL * UNDOBL_S * TIEMPO) / (1024*1024),2) "TAMAÑO OPTIMO UNDO (Mb)"
from (select (select to_number(value) from v$parameter where name = 'db_block_size') TAM_BL,
             (select max(undoblks/((end_time-begin_time)*(60*60*24)))from v$undostat) UNDOBL_S,
             (select max(maxquerylen) from v$undostat) TIEMPO
      from dual);
Inicio periodo monitorizado ...: 01/10/2016 14:49:41
Final periodo monitorizado ....: 05/10/2016 14:46:58

MAX BLOQUES UNDO/s SQL DE MAYOR DURACION (s) TAMAÑO OPTIMO UNDO (Mb)
------------------ ------------------------- -----------------------
             82,68                     24669                15934,31

 

Tamaño optimo del tablespace de UNDO en base a la retención configurada (parámetro UNDO_RETENTION)

--
-- Tamaño optimo del tablespace de UNDO en base a la retención configurada
--   Javier Castro - 06/10/2016
--   https://cuandoeldbanoesta.wordpress.com
--

set heading off
set feedback off
set linesize 200
alter session set NLS_DATE_FORMAT='DD/MM/YYYY HH24:MI:SS'; 
select 'Inicio periodo monitorizado ...: '||min(begin_time) from v$undostat;
select 'Final periodo monitorizado ....: '||max(end_time) from v$undostat;
set heading on
select round(UNDOBL_S,2) "MAX BLOQUES UNDO/s", 
       UNDO_RETENTION "UNDO_RETENTION (s)", 
       round((TAM_BL * UNDOBL_S * UNDO_RETENTION) / (1024*1024),2) "TAMAÑO OPTIMO UNDO (Mb)"
from (select (select to_number(value) from v$parameter where name = 'db_block_size') TAM_BL,
             (select max(undoblks/((end_time-begin_time)*(60*60*24)))from v$undostat) UNDOBL_S,
             (select to_number(value) from v$parameter where name = 'undo_retention') UNDO_RETENTION
      from dual);
Inicio periodo monitorizado ...: 02/10/2016 13:59:41
Final periodo monitorizado ....: 06/10/2016 13:54:52

MAX BLOQUES UNDO/s UNDO_RETENTION (s) TAMAÑO OPTIMO UNDO (Mb)
------------------ ------------------ -----------------------
             85,07               1500                  996,93

 

Tiempo máximo de retención de UNDO en base a la máxima actividad reciente detectada

--
-- Tiempo máximo de retención de UNDO en base a la máxima actividad reciente
--   Javier Castro - 06/10/2016
--   https://cuandoeldbanoesta.wordpress.com
--

set heading off
set feedback off
set linesize 200
alter session set NLS_DATE_FORMAT='DD/MM/YYYY HH24:MI:SS'; 
select 'Inicio periodo monitorizado ...: '||min(begin_time) from v$undostat;
select 'Final periodo monitorizado ....: '||max(end_time) from v$undostat;
set heading on
select round(TAM_TS / (1024*1024),2) "TAMAÑO UNDO (Mb)",
       round(UNDOBL_S,2) "MAX BLOQUES UNDO/s", 
       (select to_number(value) from v$parameter where name = 'undo_retention') "UNDO_RETENTION (s)",
       round(TAM_TS / (TAM_BL * UNDOBL_S), 0) "MAXIMA RETENCION DE UNDO (s)"
from (select (select sum(nvl(bytes,0)) from dba_data_files
              where online_status='ONLINE' and
                    tablespace_name=(select value from v$parameter where name = 'undo_tablespace')
              group by tablespace_name) TAM_TS,
             (select to_number(value) from v$parameter where name = 'db_block_size') TAM_BL,
             (select max(undoblks/((end_time-begin_time)*(60*60*24)))from v$undostat) UNDOBL_S
      from dual);
Inicio periodo monitorizado ...: 02/10/2016 13:39:41
Final periodo monitorizado ....: 06/10/2016 13:31:50

TAMAÑO UNDO (Mb) MAX BLOQUES UNDO/s UNDO_RETENTION (s) MAXIMA RETENCION DE UNDO (s)
---------------- ------------------ ------------------ ----------------------------
            8192              85,07               1500                        12326

Oracle 12cR2 saliendo del horno, principales novedades

Posted on

Tras la salida de Oracle 12c en Julio de 2014 llega ahora su segunda Release (12.2) por el momento solo disponible en Oracle Cloud. Viene cargada de novedades, aquí expongo un resumen de las mas interesantes:

  • Particionado de tablas usando un único comando de ALTER TABLE.
  • Oracle “In-Memory”, este nuevo sistema para combinar una base de datos transaccional (OLTP) con una analítica (DWH) ya está disponible desde 12cR1, pero ahora cuenta con mejoras como poder acceder desde una instancia standby, redimensionamiento dinámico de la memoria (solo para ampliar) o el volcado de esta en un segmento LOB para tener disponible dicha memoria en un reinicio de instancia y evitar tener que recalcularla (Fast Start).
  • En cuanto a seguridad se añade el cifrado para los tablespaces de sistema además de poder cifrar en caliente datafiles ya existentes.
  • En Database Vault se incorpora la posibilidad de realizar una simulación para observar y confirmar el correcto funcionamiento de las aplicaciones antes de aplicarlo de manera real. En este modo no se denegará el acceso a los datos, pero si se produce un acceso indebido quedará registrado para su estudio y resolución.
  • Una muy interesante: se amplia el limite de los identificadores de objeto y columna de los históricos 30 bytes a 128 bytes.
  • Muchos cambios en la estrella de Oracle 12c: el modo Multitenant, continua existiendo el modo clásico ‘Non-PDB’ pero no se dará mas soporte, la idea es eliminarlo completamente en la siguiente versión y remplazarlo por una CBD  (Container Database) con una única PDB (Pluggable Database) sin coste adicional, aunque si se quieren incorporar más PDBs será necesario un licenciamiento aparte. Otros cambios son la gestión de recursos de las PDBs pudiendo limitar el número máximo de IOPs por cada una, clonado en caliente de PDBs, posibilidad de que cada PDB tenga su propio UNDO o realizar flashback de un PDB sin afectar a las demás.
  • Motorización mas completa sobre estadísticas de uso e idoneidad de indices.
  • Refresco de vistas materializadas en tiempo real.
  • Particionado para tablas externas (usando varios ficheros).

Hay muchas mas novedades, quedamos a la espera de que se publique para descarga la versión instalable y poder jugar un poco.

Fuente y mas info: amitzil.wordpress.com

Limpiar juegos de backup RMAN de una base de datos ya eliminada

Posted on Actualizado enn

En ocasiones, al dar de baja una base de datos puede suceder que se elimine sin haber limpiado previamente sus juegos de backup de RMAN. Esto puede ser útil para una recuperación posterior, pero si la intención es una eliminación definitiva nos encontramos con que ya no disponemos de su instancia para administrarlos, o peor, podrían quedar estos juegos de backup fuera de la vista ocupando almacenamiento ‘huérfano’ de una manera no controlada al pasar a estado OBSOLETE pero sin eliminarse definitivamente.

En cualquier caso es una buena practica revisar que juegos de backup están almacenados en RMAN con una fecha superior a la retención estándar definida para comprobar si son necesarios, si pertenecen a antiguas bases de datos o encarnaciones obsoletas, o si están fallando las medidas definidas de retención y limpieza.

Para ello nos podemos valer de una consulta como la siguiente lanzada directamente contra la instancia del catálogo de RMAN, en este caso particular busco juegos de backup con mas de dos meses de antigüedad (con la variable OLDER_THAN) y reviso no que no se traten de juegos de backup con retención especial mediante la columna de KEEP_UNTIL:

SQL> DEF OLDER_THAN=62
SQL> set pagesize 100
SQL> set linesize 200
SQL> col type format a6
SQL> col completion_time format a18
SQL> col status format a18
SQL> col keep_until format a18
SQL> col device_type format a14
SQL> col tag format a30
SQL> col gigabytes format 9999.99
SQL> break on name on db_id skip page on report
SQL> compute sum label TOTAL of GIGABYTES on report
SQL> SELECT
  2    D.NAME,
  3    BS.DB_ID,
  4    DECODE(BS.BACKUP_TYPE,'D','Full','I','Inc','L','Arch') TYPE,
  5    TO_CHAR(BS.COMPLETION_TIME,'DD/MM/YYYY HH24:MI') COMPLETION_TIME,
  6    DECODE(BS.STATUS,'A','Available','D','BckPieces deleted','O','Other') STATUS,
  7    TO_CHAR(BS.KEEP_UNTIL,'DD/MM/YYYY HH24:MI') KEEP_UNTIL,
  8    BP.DEVICE_TYPE,
  9    BP.TAG,
 10    ROUND(NVL(BP.BYTES,0)/1073741824,2) GIGABYTES
 11  FROM RC_BACKUP_SET BS, RC_BACKUP_PIECE_DETAILS BP, RC_DATABASE D
 12  WHERE BS.DB_ID = D.DBID
 13    AND BS.BS_KEY = BP.BS_KEY (+)
 14    AND BS.COMPLETION_TIME < SYSDATE - &OLDER_THAN
 15  ORDER BY NAME, BS.COMPLETION_TIME;
NAME          DB_ID TYPE   COMPLETION_TIME    STATUS             KEEP_UNTIL         DEVICE_TYPE    TAG                            GIGABYTES
-------- ---------- ------ ------------------ ------------------ ------------------ -------------- ------------------------------ ---------
INTE046   855721479 Full   19/03/2016 02:20   Available                             SBT_TAPE       TAG20160319T022051                   .01
                    Full   19/03/2016 02:20   Available                             SBT_TAPE       COLD_BCK                            4.64
                    Full   02/04/2016 09:00   Available                             SBT_TAPE       COLD_BCK                            4.65
                    Full   02/04/2016 09:01   Available                             SBT_TAPE       TAG20160402T090037                   .01
                    Full   06/04/2016 07:17   Available                             SBT_TAPE       TAG20160406T071741                   .01
                    Full   06/04/2016 07:17   Available                             SBT_TAPE       COLD_BCK                            4.66
                    Full   07/04/2016 06:33   Available                             SBT_TAPE       TAG20160407T063353                   .01
                    Full   07/04/2016 06:33   Available                             SBT_TAPE       COLD_BCK                            4.66
                    Full   08/04/2016 02:41   Available                             SBT_TAPE       COLD_BCK                            4.66
                    Full   08/04/2016 02:41   Available                             SBT_TAPE       TAG20160408T024153                   .01
                    Full   09/04/2016 11:21   Available                             SBT_TAPE       COLD_BCK                            4.66
                    Full   09/04/2016 11:22   Available                             SBT_TAPE       TAG20160409T112202                   .01
                    Full   11/04/2016 02:28   Available                             SBT_TAPE       TAG20160411T022851                   .01
                    Full   11/04/2016 02:28   Available                             SBT_TAPE       COLD_BCK                            4.66
                    Full   12/04/2016 07:03   Available                             SBT_TAPE       COLD_BCK                            4.66
                    Full   12/04/2016 07:04   Available                             SBT_TAPE       TAG20160412T070407                   .01
                    Full   16/04/2016 07:53   Available                             SBT_TAPE       COLD_BCK                             .17
                    Full   16/04/2016 07:54   Available                             SBT_TAPE       COLD_BCK                             .79
                    Full   16/04/2016 07:54   Available                             SBT_TAPE       COLD_BCK                            1.56
                    Full   16/04/2016 07:55   Available                             SBT_TAPE       TAG20160416T075528                   .01
                    Full   16/04/2016 07:55   Available                             SBT_TAPE       COLD_BCK                            2.13
                    Full   24/04/2016 06:17   Available                             SBT_TAPE       COLD_BCK                             .79
                    Full   24/04/2016 06:17   Available                             SBT_TAPE       COLD_BCK                             .17
                    Full   24/04/2016 06:18   Available                             SBT_TAPE       COLD_BCK                            2.13
                    Full   24/04/2016 06:18   Available                             SBT_TAPE       COLD_BCK                            1.56
                    Full   24/04/2016 06:18   Available                             SBT_TAPE       TAG20160424T061822                   .01
                    Full   01/05/2016 07:53   Available                             SBT_TAPE       COLD_BCK                             .17
                    Full   01/05/2016 07:54   Available                             SBT_TAPE       COLD_BCK                             .80
                    Full   01/05/2016 07:55   Available                             SBT_TAPE       COLD_BCK                            1.57
                    Full   01/05/2016 07:55   Available                             SBT_TAPE       TAG20160501T075557                   .01
                    Full   01/05/2016 07:55   Available                             SBT_TAPE       COLD_BCK                            2.13

NAME          DB_ID TYPE   COMPLETION_TIME    STATUS             KEEP_UNTIL         DEVICE_TYPE    TAG                            GIGABYTES
-------- ---------- ------ ------------------ ------------------ ------------------ -------------- ------------------------------ ---------
TST014   1881841775 Full   12/12/2015 02:05   Available                             SBT_TAPE       COLD_BCK                            2.81
                    Full   12/12/2015 02:05   Available                             SBT_TAPE       TAG20151212T020508                   .01
                    Full   02/01/2016 02:06   Available                             SBT_TAPE       TAG20160102T020632                   .01
                    Full   02/01/2016 02:06   Available                             SBT_TAPE       COLD_BCK                            2.83
                    Full   09/01/2016 02:26   Available                             SBT_TAPE       COLD_BCK                            2.83
                    Full   09/01/2016 02:27   Available                             SBT_TAPE       TAG20160109T022701                   .01
                    Full   16/01/2016 02:07   Available                             SBT_TAPE       TAG20160116T020727                   .01
                    Full   16/01/2016 02:07   Available                             SBT_TAPE       COLD_BCK                            2.84

NAME          DB_ID TYPE   COMPLETION_TIME    STATUS             KEEP_UNTIL         DEVICE_TYPE    TAG                            GIGABYTES
-------- ---------- ------ ------------------ ------------------ ------------------ -------------- ------------------------------ ---------
******** **********                                                                                                               ---------
TOTAL                                                                                                                                 62.68

41 rows selected.

Se observan aquí diversos juegos de backup de dos bases de datos que están consumiendo algo mas de 60Gb en el gestor de backups. El problema es que para eliminar estos juegos y dar de baja definitiva la base de datos ya no disponemos de las instancias originales para poder abrir un cliente de RMAN desde ellas.

Por tanto para solucionar esto levantaremos una instancia ‘falsa’ para poder conectar desde ella al catalogo de RMAN con su identificador de base de datos.

Para levantar una instancia Oracle en modo NO-MOUNT solo es necesario un ‘pfile’ con el único parámetro obligatorio (DB_NAME) de todas formas también puede ser interesante limitar la memoria ya que esta es variable en función de nuestro sistema.

Por tanto, desde el sistema operativo creamos un pfile e iniciamos la instancia sin montarla:

$ vi $ORACLE_HOME/dbs/initDUMMY.ora
$ cat $ORACLE_HOME/dbs/initDUMMY.ora
 db_name='DUMMY'
 memory_target=256M

$ export ORACLE_SID=DUMMY
$ sqlplus / as sysdba

Connected to an idle instance.

SQL> startup nomount;
 ORACLE instance started.

Total System Global Area 267304960 bytes
 Fixed Size 2158456 bytes
 Variable Size 125833352 bytes
 Database Buffers 134217728 bytes
 Redo Buffers 5095424 bytes

SQL> quit

Ya tememos una instancia Oracle desde la cual conectar a RMAN y emular la base de datos con la que queremos operar:

$ export NLS_DATE_FORMAT="dd-MM-YYYY hh24:mi:ss"
$ rman target=/

Recovery Manager: Release 11.2.0.3.0 - Production on Mon Sep 5 14:43:56 2016

Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.

connected to target database: DUMMY (not mounted)

RMAN> connect catalog rmansch/******@RMAN

connected to recovery catalog database

Establecemos el DB_ID obtenido previamente en la consulta sobre la base de datos del catálogo y veremos los juegos de backup:

RMAN> set dbid 855721479;

executing command: SET DBID
 database name is "INTE046" and DBID is 855721479

RMAN> list backup summary;

List of Backups
===============
Key     TY LV S Device Type Completion Time     #Pieces #Copies Compressed Tag
------- -- -- - ----------- ------------------- ------- ------- ---------- ---
3524544 B  F  A SBT_TAPE    19-03-2016 02:20:21 1       1       NO         COLD_BCK
3524559 B  F  A SBT_TAPE    19-03-2016 02:20:27 1       1       NO         TAG20160319T022051
3653399 B  F  A SBT_TAPE    02-04-2016 09:00:27 1       1       NO         COLD_BCK
3653414 B  F  A SBT_TAPE    02-04-2016 09:01:25 1       1       NO         TAG20160402T090037
3683228 B  F  A SBT_TAPE    06-04-2016 07:17:30 1       1       NO         COLD_BCK
3683243 B  F  A SBT_TAPE    06-04-2016 07:17:58 1       1       NO         TAG20160406T071741
3700763 B  F  A SBT_TAPE    07-04-2016 06:33:39 1       1       NO         COLD_BCK
3700778 B  F  A SBT_TAPE    07-04-2016 06:33:07 1       1       NO         TAG20160407T063353
3712198 B  F  A SBT_TAPE    08-04-2016 02:41:07 1       1       NO         COLD_BCK
3712213 B  F  A SBT_TAPE    08-04-2016 02:41:12 1       1       NO         TAG20160408T024153
3740391 B  F  A SBT_TAPE    09-04-2016 11:21:59 1       1       NO         COLD_BCK
3740406 B  F  A SBT_TAPE    09-04-2016 11:22:11 1       1       NO         TAG20160409T112202
3744317 B  F  A SBT_TAPE    11-04-2016 02:28:38 1       1       NO         COLD_BCK
3744332 B  F  A SBT_TAPE    11-04-2016 02:28:31 1       1       NO         TAG20160411T022851
3754186 B  F  A SBT_TAPE    12-04-2016 07:03:43 1       1       NO         COLD_BCK
3754201 B  F  A SBT_TAPE    12-04-2016 07:04:31 1       1       NO         TAG20160412T070407
3810153 B  F  A SBT_TAPE    16-04-2016 07:53:44 1       1       NO         COLD_BCK
3810154 B  F  A SBT_TAPE    16-04-2016 07:54:45 1       1       NO         COLD_BCK
3810155 B  F  A SBT_TAPE    16-04-2016 07:54:18 1       1       NO         COLD_BCK
3810156 B  F  A SBT_TAPE    16-04-2016 07:55:28 1       1       NO         COLD_BCK
3810174 B  F  A SBT_TAPE    16-04-2016 07:55:39 1       1       NO         TAG20160416T075528
3905900 B  F  A SBT_TAPE    24-04-2016 06:17:17 1       1       NO         COLD_BCK
3905901 B  F  A SBT_TAPE    24-04-2016 06:17:55 1       1       NO         COLD_BCK
3905902 B  F  A SBT_TAPE    24-04-2016 06:18:38 1       1       NO         COLD_BCK
3905903 B  F  A SBT_TAPE    24-04-2016 06:18:45 1       1       NO         COLD_BCK
3905921 B  F  A SBT_TAPE    24-04-2016 06:18:58 1       1       NO         TAG20160424T061822
3950137 B  F  A SBT_TAPE    01-05-2016 07:53:00 1       1       NO         COLD_BCK
3950138 B  F  A SBT_TAPE    01-05-2016 07:54:38 1       1       NO         COLD_BCK
3950139 B  F  A SBT_TAPE    01-05-2016 07:55:58 1       1       NO         COLD_BCK
3950140 B  F  A SBT_TAPE    01-05-2016 07:55:04 1       1       NO         COLD_BCK
3950158 B  F  A SBT_TAPE    01-05-2016 07:55:59 1       1       NO         TAG20160501T075557

Tras confirmar que son los que esperamos procedemos a su eliminación:

RMAN> run {
 2> allocate channel sbt type 'SBT_TAPE';
 3> delete backup;
 4> }

allocated channel: sbt
 channel sbt: SID=86 device type=SBT_TAPE
 channel sbt: Data Protection for Oracle: version 6.3.0.0
 List of Backup Pieces
 BP Key BS Key Pc# Cp# Status Device Type Piece Name
 ------- ------- --- --- ----------- ----------- ----------
 3524547 3524544 1 1 AVAILABLE SBT_TAPE INTE046_6cr0r7vd_1_1_906862573
 3524567 3524559 1 1 AVAILABLE SBT_TAPE c-855721479-20160319-00
 3653402 3653399 1 1 AVAILABLE SBT_TAPE INTE046_6er20sri_1_1_908096370
 3653422 3653414 1 1 AVAILABLE SBT_TAPE c-855721479-20160402-00
 3683231 3683228 1 1 AVAILABLE SBT_TAPE INTE046_6gr2b89u_1_1_908435774
 3683251 3683243 1 1 AVAILABLE SBT_TAPE c-855721479-20160406-00
 3700766 3700763 1 1 AVAILABLE SBT_TAPE INTE046_6ir2dq2s_1_1_908519516
 3700786 3700778 1 1 AVAILABLE SBT_TAPE c-855721479-20160407-00
 3712201 3712198 1 1 AVAILABLE SBT_TAPE INTE046_6kr2g0p1_1_1_908591905
 3712221 3712213 1 1 AVAILABLE SBT_TAPE c-855721479-20160408-00
 3740394 3740391 1 1 AVAILABLE SBT_TAPE INTE046_6mr2jjmr_1_1_908709595
 3740414 3740406 1 1 AVAILABLE SBT_TAPE c-855721479-20160409-00
 3744320 3744317 1 1 AVAILABLE SBT_TAPE INTE046_6or2nt8b_1_1_908850443
 3744340 3744332 1 1 AVAILABLE SBT_TAPE c-855721479-20160411-00
 3754189 3754186 1 1 AVAILABLE SBT_TAPE INTE046_6qr2r1od_1_1_908953357
 3754209 3754201 1 1 AVAILABLE SBT_TAPE c-855721479-20160412-00
 3810159 3810153 1 1 AVAILABLE SBT_TAPE INTE046_6vr35m6s_1_1_909301980
 3810160 3810154 1 1 AVAILABLE SBT_TAPE INTE046_6ur35m6s_1_1_909301980
 3810161 3810155 1 1 AVAILABLE SBT_TAPE INTE046_6tr35m6s_1_1_909301980
 3810162 3810156 1 1 AVAILABLE SBT_TAPE INTE046_6sr35m6r_1_1_909301979
 3810176 3810174 1 1 AVAILABLE SBT_TAPE c-855721479-20160416-00
 3905906 3905900 1 1 AVAILABLE SBT_TAPE INTE046_74r3qjjl_1_1_909987445
 3905907 3905901 1 1 AVAILABLE SBT_TAPE INTE046_73r3qjjl_1_1_909987445
 3905908 3905902 1 1 AVAILABLE SBT_TAPE INTE046_72r3qjjk_1_1_909987444
 3905909 3905903 1 1 AVAILABLE SBT_TAPE INTE046_71r3qjjk_1_1_909987444
 3905923 3905921 1 1 AVAILABLE SBT_TAPE c-855721479-20160424-00
 3950143 3950137 1 1 AVAILABLE SBT_TAPE INTE046_79r4fs7q_1_1_910684410
 3950144 3950138 1 1 AVAILABLE SBT_TAPE INTE046_78r4fs7q_1_1_910684410
 3950145 3950139 1 1 AVAILABLE SBT_TAPE INTE046_77r4fs7q_1_1_910684410
 3950146 3950140 1 1 AVAILABLE SBT_TAPE INTE046_76r4fs7p_1_1_910684409
 3950160 3950158 1 1 AVAILABLE SBT_TAPE c-855721479-20160501-00

Do you really want to delete the above objects (enter YES or NO)? y
 deleted backup piece
 backup piece handle=INTE046_6cr0r7vd_1_1_906862573 RECID=203 STAMP=906862574
 deleted backup piece
 backup piece handle=c-855721479-20160319-00 RECID=204 STAMP=906862851
 [...]
 Deleted 31 objects

released channel: sbt

En este momento ya se puede ‘desregistrar’ definitivamente la base de datos:

RMAN> unregister database;

database name is "INTE046" and DBID is 855721479

Do you really want to unregister the database (enter YES or NO)? y
 database unregistered from the recovery catalog

RMAN> quit

Recovery Manager complete.

Limpiamos el entorno deteniendo y eliminando la instancia dummy:

SQL> shu abort
 ORACLE instance shut down.

SQL> quit

$ rm $ORACLE_HOME/dbs/initDUMMY.ora

 

Una vuelta de tuerca mas

En el caso de usar IBM Tivoli Storage Manager, puede suceder que se generen discrepancias entre el catálogo de RMAN y los backupset realmente almacenados en cinta, produciéndose backups huérfanos si RMAN elimina un backup y TSM por algún error no llega a eliminarlo. Para revisar esto IBM provee la herramienta ‘tdposync’ para detectar y poder eliminar estos juegos huérfanos: IBM Knowledge Center > Programa de utilidad tdposync