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.