Procesamiento completo del espacio de tablas ORACLE 11G SYSAUX y la diferencia entre mover y reducir

Hoy recibí una alarma de que el espacio de tabla 11G SYSAUX supera el 90 %. La idea anterior era simplemente agregar archivos de datos, porque el espacio de almacenamiento es de datos no comerciales y el espacio de tabla se puede comprimir a través de la configuración.

Compruebe lo que está ocupando el tablespace SYSAUX

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;

Espacio ocupado por cada segmento en el tablespace SYSAUX

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

Se encuentra que la tabla con mayor ocupación es WRI$_OPTSTAT_HISTGRM_HISTORY y los dos índices encima

Procesamiento de gran huella SM/OPTSTAT

Se encuentra que SM/OPTSTAT, es decir, la información estadística ocupa un espacio alto.

Tras comprobar que el sistema ha retenido 31 días de información estadística, no es necesario utilizar un valor tan alto:

select dbms_stats.get_stats_history_retention from dual; 

La hora más temprana para ver las estadísticas:

select dbms_stats.get_stats_history_availability from dual;

Para configurar la retención por 10 días:

EXEC dbms_stats.alter_stats_history_retention(10);  

Luego borre los datos antes de diez días:

--对于几十G的数据来说,这个sql比较耗时,需要在业务清闲时执行
exec dbms_stats.purge_stats(sysdate-10);

Tratamiento de agua de alta

Después de la operación de limpieza anterior, se encuentra que la tasa de ocupación de espacio no ha disminuido, porque el procedimiento almacenado de limpieza dbms_stats.purge_stats (sysdate-10) es esencialmente eliminar sql para eliminar datos, y la marca de límite superior debe limpiarse. Consulte el documento oficial de ORACLE Doc ID 454678.1

--业务空闲时间段执行
1- Take a full backup of the database
2- Move the tables:

SQL> alter table WRI$_OPTSTAT_TAB_HISTORY move;
SQL> alter table WRI$_OPTSTAT_OPR move;
SQL> alter table WRI$_OPTSTAT_IND_HISTORY move;
SQL> alter table WRI$_OPTSTAT_HISTHEAD_HISTORY move;
SQL> alter table WRI$_OPTSTAT_HISTGRM_HISTORY move;
SQL> alter table WRI$_OPTSTAT_AUX_HISTORY move;

3- For indexes, find the indexes for the above tables and rebuild them. In case an index is unusable, please see the following example:

SQL> select status from dba_indexes where index_name='I_WRI$_OPTSTAT_IND_OBJ#_ST';
SQL> select status from dba_indexes where index_name='I_WRI$_OPTSTAT_TAB_ST';

Assuming that indexes: I_WRI$_OPTSTAT_IND_OBJ#_ST & I_WRI$_OPTSTAT_TAB_ST are unusable, then, we have to do the following:

a.Determine the DDL's for the indexes using dbms_metadata package as shown in the example below
 SQL> set long 4000
 SQL> select dbms_metadata.get_ddl('INDEX','I_WRI$_OPTSTAT_IND_OBJ#_ST','SYS') from dual;
 SQL> select dbms_metadata.get_ddl('INDEX','I_WRI$_OPTSTAT_TAB_ST','SYS') from dual;
   
b.Then drop and recreate the indexes using the obtained DDL's.
   
c.Once done you can confirm the status by running the following query for example :
SQL> select status from dba_indexes where index_name='I_WRI$_OPTSTAT_IND_OBJ#_ST';
SQL> select status from dba_indexes where index_name='I_WRI$_OPTSTAT_TAB_ST';

4- To ensure that statistics history will be retained for at least 8 days:

SQL> exec dbms_stats.alter_stats_history_retention(8); 

O solo realice una reconstrucción de índice en línea para la tabla WRI$_OPTSTAT_HISTGRM_HISTORY

SQL> alter table WRI$_OPTSTAT_HISTGRM_HISTORY move;
 
Table altered.
 
SQL> alter index I_WRI$_OPTSTAT_H_OBJ#_ICOL#_ST rebuild online;
 
Index altered.
 
SQL> alter index I_WRI$_OPTSTAT_H_ST rebuild online;
 
Index altered.

SQL> exec dbms_stats.alter_stats_history_retention(8); 

P.D. La diferencia entre mover y encoger

encoger

La premisa de la reducción es permitir primero la migración de filas.

 alter table WRI$_OPTSTAT_HISTGRM_HISTORY enable row movement;
 alter table WRI$_OPTSTAT_HISTGRM_HISTORY shrink space cascade;

Pista de gramática:

alter table NOMBRE_TABLA espacio de contracción [compacto|cascada]
Las dos fases de la ejecución de la contracción del segmento:

1. Reorganización de datos (compacto):

Mediante una serie de operaciones de inserción y eliminación, ordene los datos lo más posible delante del segmento. En este proceso, se deben agregar bloqueos RX a la tabla, es decir, solo se bloquean las filas que se deben mover.

Debido a que implica el cambio de ID de fila, es necesario habilitar el movimiento de filas. Al mismo tiempo, deshabilitar el activador basado en ID de fila. Este proceso tiene un impacto relativamente pequeño en el negocio.

2. Ajuste HWM: la segunda etapa es ajustar la posición HWM y liberar bloques de datos libres.

Este proceso requiere un bloqueo X en la tabla, lo que hará que se bloqueen todas las instrucciones DML de la tabla. Puede tener un impacto relativamente grande en los sistemas con negocios particularmente ocupados.

Nota: La sentencia de reducción de espacio se ejecuta en ambas fases.

Shrink Space Compact solo realiza la primera etapa. Si el negocio del sistema está relativamente ocupado, puede ejecutar el compacto de espacio reducido para reorganizar los datos primero y luego ejecutar el espacio reducido para reducir HWM para liberar bloques de datos libres cuando el negocio no está ocupado.

ejemplo

alter table TABLE_NAME shrink space compact; –- 只整理碎片 不回收空间,
alter table TABLE_NAME shrink space; –- 整理碎片并回收空间。
alter table TABLE_NAME shrink space cascade; – 整理碎片回收空间 并连同表的级联对象一起整理(比如索引)
alter table pt_table modify PARTITION P1 shrink space cascade; --分区表

Ventajas de encoger

1. Se puede ejecutar en línea

2. La cascada de parámetros se puede usar para reducir los índices en la tabla al mismo tiempo

3. Después de la ejecución, el índice no se invalidará

4. Puede evitar ocupar mucho espacio en la mesa durante la ejecución del movimiento de la mesa (si el tamaño de la mesa es 10G, entonces el movimiento de la mesa necesitará casi 10G de espacio para ejecutarse).

mover

1. La función de mover la mesa:

①: Mover una tabla del tablespace actual a otro tablespace:

②: Para cambiar los parámetros de almacenamiento de los bloques existentes de la tabla, tales como: alterar tabla t mover almacenamiento (inicial 30k siguiente 50k);

③: La operación de movimiento también se puede utilizar para resolver el problema de la migración de filas en la tabla.

2. Algunas precauciones para usar move:

①: El índice de la tabla debe reconstruirse:

Como comentamos anteriormente, después de la operación de movimiento, el ID de fila de los datos ha cambiado. Sabemos que el índice obtiene filas de datos a través del ID de fila, por lo que se debe reconstruir el índice de la tabla.

modificar índice index_name reconstruir en línea;
②: bloquear la tabla al mover

Cuando movemos la tabla, consulte la vista v$locked_objects para encontrar que se agregó un bloqueo exclusivo a la tabla

③: En cuanto al uso del espacio al moverse:

Cuando usamos alterar el movimiento de la tabla para reducir el HWM de la tabla, se debe tener en cuenta una cosa: en este momento, el espacio de tabla actual debe tener 1 vez el espacio libre de la tabla para su uso.

3. La diferencia entre move y hrink es:

1. Después del movimiento, la posición de la mesa en el espacio de la mesa definitivamente cambiará, se puede mover hacia adelante o hacia atrás. En términos generales, si hay suficiente espacio en el espacio de la mesa frente a la mesa para acomodar la mesa, se moverá hacia adelante, de lo contrario se moverá hacia atrás.

2. Después de la reducción, la posición de la tabla en el espacio de la tabla definitivamente no cambiará, es decir, la posición del encabezado del segmento de la tabla no cambiará.

3. Mover moverá la marca de agua alta, pero no liberará el espacio solicitado.Es una operación por debajo de la marca de agua alta (por debajo de HWM).

4. Reducir el espacio también moverá la marca de agua alta, pero también liberará el espacio aplicado, que es una operación tanto por debajo como por encima de la marca de agua alta (por encima y por debajo de HWM).

5. Al usar mover, se cambiará el ROWID de algunos registros, por lo que el índice dejará de ser válido después de MOVER y se requerirá RECONSTRUIR.

6. Cuando se utiliza el espacio reducido, el índice se mantendrá automáticamente. Si realiza la compresión cuando la empresa está ocupada,

Puede reducir el espacio compacto primero para comprimir los datos sin mover el HWM y luego reducir el espacio para mover el HWM cuando no está ocupado.

7. Shrink puede comprimir el índice por separado, modifique el espacio de reducción del índice xxx para comprimir el índice. Además, si se especifica la cascada de reducción del espacio al comprimir la tabla, se comprimirá el índice al mismo tiempo.

Documentos de referencia:

https://blog.csdn.net/csdn201420142015/article/details/100496907
https://blog.csdn.net/renyanjie123/article/details/114832842
https://blog.51cto.com/fengfeng688/1955137
https:/ /www.modb.pro/db/26483

Supongo que te gusta

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