O ORACLE 11.2.0.3 não para de lidar com o problema que o tablespace SYSAUX vem crescendo

aparência

O espaço da tabela SYSAUX vem crescendo e a taxa de crescimento é de 10 G em um mês, e o espaço da tabela precisa ser mantido regularmente

razão

Causado por bug oracle (Doc ID 1055547.1)

O MMON realiza a limpeza do histórico de estatísticas do otimizador automaticamente. Porém tem um limite interno de 5 minutos para realizar este trabalho. Se a operação demorar mais de 5 minutos, ela será abortada e as estatísticas não serão removidas.
Nenhum rastreamento ou mensagem de alerta é relatado.

Método de processamento - sem patch

desativar estatísticas

Como é necessário inserir dados nas tabelas relacionadas a seguir ao coletar informações estatísticas, os dados estatísticos não podem ser coletados durante a limpeza.

wri$_optstat_tab_history

wri$_optstat_ind_history

wri$_optstat_histhead_history

wri$_optstat_histgrm_history

Faça login no ebs para cancelar os dois (um GL, um ALL) modos de dados estatísticos de solicitação de planejamento (parâmetros de backup de captura de tela antes de cancelar).

Excluir dados históricos

Todos os seguintes sql são executados como sys como dba

Primeiro, calcule quantos dias atrás é a data mais antiga dos dados existentes.

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

Supondo que sejam 190 dias, faça login no sqlplus via área de trabalho remota (o seguinte sql pode levar vários dias e precisa ser executado em segundo plano ou na área de trabalho remota)


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;
/

O sql acima pode ser executado por vários dias. Após a conclusão da execução, shink é usado para encolher a tabela.

executar tabela encolher

--先备份索引数据
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" ;

coletar estatísticas

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

Ver o efeito


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;

Retomar a coleta de informações do modo de estatísticas

Envie imediatamente as estatísticas do modo ALL e, em seguida, defina uma solicitação de plano, modo ALL, coleta de dados todas as sextas-feiras às 22h, os parâmetros referem-se à captura de tela de backup.
Como o tamanho dos dados semanais do modo de razão geral não muda muito, para economizar energia, não há necessidade de definir uma solicitação de plano para ser executada todas as noites.
As bibliotecas não EBS precisam usar a API correspondente para habilitar e desabilitar a coleta de estatísticas.

Acho que você gosta

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