sql >> Base de Datos >  >> RDS >> Oracle

Después de eliminar la partición, el índice se volvió inutilizable, ¿qué debo hacer?

  • ANALYZE TABLE no reconstruye el índice, ¿verdad?

    No sé, pero hoy en día deberías usar DBMS_STATS.GATHER_TABLE_STATS en lugar de ANALYZE TABLE

  • La carga directa significa que los datos no se insertan fila por fila sino de forma masiva, consulte Carga de ruta directa

  • Si su índice se vuelve UNUSABLE entonces debe ser un índice global.

  • Use el UPDATE GLOBAL INDEXES cláusula, es decir, alter table target_table drop partition target_eldest_partition UPDATE GLOBAL INDEXES; o crear índices locales.

  • Depende de las columnas que haya indexado. En lugar de la tabla completa, también puede ejecutar DBMS_STATS.GATHER_INDEX_STATS . Con DBMS_STATS.GATHER_TABLE_STATS también puede especificar solo particiones individuales e incluso columnas individuales.

por cierto, para muchas preguntas, mi respuesta debería ser:"¿Consultó la documentación de Oracle"? o "¿Conoces Google"? De acuerdo con sus capturas de pantalla, usa el esquema SYS y espacio de tablas SYSAUX para sus objetos de usuario. No deberías hacer eso. Cree su propio usuario y cree cualquier objeto en este esquema.

En general, hay tres tipos de índices particionados:

  1. ÍNDICE GLOBAL:tiene un gran índice que abarca toda la tabla. Esto es obligatorio, por ejemplo, para ÚNICOS ÍNDICES si las columnas indexadas no forman parte de la clave de partición. En realidad, dicho índice no está particionado. (como se muestra en ALL_INDEXES )
  2. ÍNDICE LOCAL:este índice se particiona de la misma manera que la tabla subyacente. Cada partición de tabla tiene una partición de índice correspondiente.
  3. ÍNDICE PARTICIONADO:este índice está particionado pero diferente que la tabla subyacente. Creo que incluso es posible crear un índice particionado en una tabla no particionada. Los índices particionados están limitados solo a casos de uso muy especiales. En realidad, no puedo imaginar dónde tendría sentido dicho índice.