Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Depois de soltar a partição, o índice ficou inutilizável, o que devo fazer,


  • ANALYZE TABLE não reconstrói o índice, certo?

    Não sei, mas hoje em dia você deveria usar DBMS_STATS.GATHER_TABLE_STATS em vez de ANALYZE TABLE

  • O carregamento direto significa que os dados não são inseridos linha por linha, mas em massa, consulte Carregamento de caminho direto

  • Se o seu índice se tornar UNUSABLE então deve ser um índice global.

  • Use o UPDATE GLOBAL INDEXES cláusula, ou seja, alter table target_table drop partition target_eldest_partition UPDATE GLOBAL INDEXES; ou criar índices locais.

  • Depende de quais colunas você indexou. Em vez da tabela inteira, você também pode executar DBMS_STATS.GATHER_INDEX_STATS . Com DBMS_STATS.GATHER_TABLE_STATS você também pode especificar apenas partições únicas e até colunas únicas.

btw, para muitas perguntas minha resposta deveria ser:"Você consultou a documentação do Oracle"? ou "Você conhece o google"? De acordo com suas capturas de tela, você usa o esquema SYS e tablespace SYSAUX para seus objetos de usuário. Você não deveria fazer isso. Crie seu próprio usuário e crie qualquer objeto neste esquema.

Em geral, existem três tipos de índices particionados:
  1. ÍNDICE GLOBAL:você tem um grande índice que abrange toda a tabela. Isso é obrigatório, por exemplo, para UNIQUE INDEXES se as colunas indexadas não fizerem parte da chave de partição. Na verdade, esse índice não é particionado. (como mostrado em ALL_INDEXES )
  2. LOCAL INDEX:Este índice é particionado da mesma forma que a tabela subjacente. Cada partição de tabela tem uma partição de índice correspondente.
  3. ÍNDICE PARTICIONADO:este índice é particionado, mas diferente do que a tabela subjacente. Acho que é até possível criar um índice particionado em uma tabela não particionada. Índices particionados são limitados apenas a casos de uso muito especiais. Na verdade não consigo imaginar onde tal índice faria sentido.