ORACLE 11.2.0.3 no se detiene para lidiar con el problema de que el espacio de tablas SYSAUX ha ido creciendo

apariencia

El espacio de tablas SYSAUX ha estado creciendo, y la tasa de crecimiento es de 10G en un mes, y el espacio de tablas debe mantenerse regularmente

razón

Causado por un error de Oracle (Doc ID 1055547.1)

MMON realiza la purga del historial de estadísticas del optimizador automáticamente. Sin embargo tiene un límite interno de 5 minutos para realizar este trabajo. Si la operación tarda más de 5 minutos, se aborta y no se eliminan las estadísticas.
No se informa ningún mensaje de seguimiento o alerta.

Método de procesamiento: sin parches

deshabilitar estadísticas

Debido a que es necesario insertar datos en las siguientes tablas relacionadas al recopilar información estadística, los datos estadísticos no se pueden recopilar durante la limpieza.

wri$_optstat_tab_history

wri$_optstat_ind_history

wri$_optstat_histhead_history

wri$_optstat_histgrm_history

Inicie sesión en ebs para cancelar los dos modos de datos estadísticos de solicitud de planificación (uno GL, uno TODOS) (captura de pantalla de los parámetros de respaldo antes de cancelar).

Eliminar datos históricos

Todos los siguientes sql se ejecutan como sys como dba

Primero calcule cuántos días hace la fecha más antigua de los datos existentes.

SELECT TRUNC(SYSDATE) - TO_DATE(to_char(MIN(savtime), 'YYYY-MM-DD'), 'yyyy-mm-dd')
  FROM sys.WRI$_OPTSTAT_HISTHEAD_HISTORY;

Suponiendo que sean 190 días, inicie sesión en sqlplus a través del escritorio remoto (el siguiente sql puede tardar varios días y debe ejecutarse en segundo plano o en el escritorio remoto)


set serveroutput on
BEGIN
DBMS_OUTPUT.ENABLE(buffer_size => null);
for i in reverse 10..190
loop
dbms_output.put_line(to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') || '-Begin    delete Day ' || i );
dbms_stats.purge_stats(sysdate-i);
COMMIT;
dbms_output.put_line(to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') || '-Complete delete Day ' || i );
end loop;
end;
/

El sql anterior puede ejecutarse durante varios días. Una vez que se completa la ejecución, se usa shink para reducir la tabla.

realizar reducción de tabla

--先备份索引数据
select dbms_metadata.get_ddl('INDEX','I_WRI$_OPTSTAT_HH_OBJ_ICOL_ST','SYS') from dual;
select dbms_metadata.get_ddl('INDEX','I_WRI$_OPTSTAT_HH_ST','SYS') from dual;

-- Drop indexes 
drop index I_WRI$_OPTSTAT_HH_OBJ_ICOL_ST;
drop index I_WRI$_OPTSTAT_HH_ST;

--开启行迁移
alter table WRI$_OPTSTAT_HISTHEAD_HISTORY enable row movement; 

--进行收缩(此处没有用move是为了节省空间)
alter table WRI$_OPTSTAT_HISTHEAD_HISTORY shrink space cascade;

--收缩完毕后进行索引重建
CREATE UNIQUE INDEX "SYS"."I_WRI$_OPTSTAT_HH_OBJ_ICOL_ST" ON "SYS"."WRI$_OPTSTAT_HISTHEAD_HISTORY" ("OBJ#", "INTCOL#", SYS_EXTRACT_UTC("SAVTIME"), "COLNAME") 
  PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "SYSAUX" ;


CREATE INDEX "SYS"."I_WRI$_OPTSTAT_HH_ST" ON "SYS"."WRI$_OPTSTAT_HISTHEAD_HISTORY" (SYS_EXTRACT_UTC("SAVTIME")) 
  PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "SYSAUX" ;

recopilar estadísticas

EXEC dbms_stats.gather_table_stats(ownname => ‘SYS’,tabname => ‘WRI$_OPTSTAT_HISTHEAD_HISTORY’,cascade => TRUE);

Ver el efecto


SELECT *
  FROM (SELECT owner, segment_name, segment_type, SUM(bytes) / 1024 / 1024 / 1024 GB
          FROM dba_segments
         WHERE tablespace_name = 'SYSAUX'
         GROUP BY owner, segment_name, segment_type
         ORDER BY 4 DESC)
 WHERE rownum < 10;

SELECT occupant_name "Item",
       space_usage_kbytes / 1048576 "Space Used (GB)",
       schema_name "Schema",
       move_procedure "Move Procedure"
  FROM v$sysaux_occupants
 ORDER BY space_usage_kbytes DESC;

Reanudar la recopilación de información del modo de estadísticas

Inmediatamente envíe las estadísticas del modo TODO y luego configure una solicitud de plan, modo TODO, recopilación de datos todos los viernes a las 10:00 p.m., los parámetros se refieren a la captura de pantalla de respaldo.
Debido a que el tamaño de los datos semanales del modo de contabilidad general no cambia mucho, para ahorrar energía, no es necesario configurar una solicitud de plan para que se ejecute todas las noches.
Las bibliotecas que no son de EBS deben usar la API correspondiente para habilitar y deshabilitar la recopilación de estadísticas.

Supongo que te gusta

Origin blog.csdn.net/x6_9x/article/details/124400511
Recomendado
Clasificación