AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 307427
Accepted
jrdba123
jrdba123
Asked: 2022-02-14 10:14:38 +0800 CST2022-02-14 10:14:38 +0800 CST 2022-02-14 10:14:38 +0800 CST

Oracle - Arquivamento de grandes tabelas

  • 772

Versão: Oracle 12cR2 EE

A tabela contém os seguintes tipos de coluna: NUMBER, CLOB, NVARCHAR2, TIMESTAMP, VARCHAR2

Tamanho da mesa: 95 GB

Contagem de linhas da tabela: 20 milhões

Tabela particionada? Não

Índices na tabela: existe apenas uma chave primária como índice na tabela.

Dependências: existe apenas um gatilho "antes de cada linha (inserir)" como dependência na tabela.

Restrições: existem 3 restrições (1 delas é chave primária e outras são checadas).

Queremos arquivar esta tabela. No entanto, não consegui decidir como o arquivamento deveria ser feito para uma tabela tão grande. Seria um pesadelo mover registros antes de uma determinada data para uma nova tabela com CTAS e, em seguida, excluir esses registros importados na tabela existente.

Acho que a melhor maneira seria fazer o intervalo da tabela particionado por mês (estou aberto a quaisquer ideias se você tiver soluções melhores).

Algumas perguntas pré-operação e sequência:

  1. Existe uma maneira de saber de antemão quanto arquivo irá gerar durante o particionamento de uma tabela desse tamanho?
  2. Temos a possibilidade de calcular antecipadamente a duração do processo?
  3. Seria uma boa opção interromper outros trabalhos de banco de dados que serão carregados durante o processo?
  4. É necessário fazer uma alteração no índice de chave primária para a operação ou outras dependências ou gatilhos?

Para após o processo:

  1. Causa carga pesada no banco de dados quando partições grandes são descartadas?

  2. Por exemplo, é possível configurar um pedido assim; podemos manter apenas os dados dos últimos 3 ou 6 meses na tabela principal e mover as partições mais antigas para a tabela de arquivo todos os meses? É correto usar apenas o método de importação de exportação ao migrar?

  3. A partição migrada será eliminada do processo de migração. Haverá um problema com base no arquivo gerado ao fazer isso?

Obrigada.

Cumprimentos.

oracle partitioning
  • 1 1 respostas
  • 71 Views

1 respostas

  • Voted
  1. Best Answer
    Tuxinose
    2022-04-11T08:39:03+08:002022-04-11T08:39:03+08:00

    O particionamento de intervalo deve ser o método apropriado para isso. Se você puder cuidar para que a maior parte do aplicativo também leve isso em consideração (ou seja: suas consultas devem SEMPRE conter os critérios de partição na cláusula WHERE), então isso acelerará as coisas.

    pré-operação

    1. Na verdade não. Eu criaria um banco de dados clone em outro sistema (semelhante) e o testaria lá - isso deve responder à maioria das suas perguntas.
    2. veja 1, veja v$session_longops. Não que essas previsões sejam 100% precisas, mas podem dar uma ideia.
    3. Se possível, sim. Desde 12.2 você pode particionar uma tabela diretamente online, então na verdade você ainda pode usá-la - mas isso não acelera as coisas, naturalmente
    4. Isso não deve ser necessário

    pós operação:

    1. sem chaves estrangeiras e gatilhos, não. Se você desligá-los, não vai.
    2. Com o particionamento de intervalo no nível do mês, isso não deve ser difícil. O método clássico é mover esses dados para um DWH e o acesso é via link de banco de dados, se necessário. Não use export (espero que você queira dizer expdp), consulte https://docs.oracle.com/en/database/oracle/oracle-database/12.2/vldbg/evolve-nopartition-table.html
    3. não, se você usar alter table drop partition update global indexes.
    • 1

relate perguntas

  • Backups de banco de dados no Oracle - Exportar o banco de dados ou usar outras ferramentas?

  • ORDER BY usando prioridades personalizadas para colunas de texto

  • Interface sqlplus confortável? [fechado]

  • Como encontrar as instruções SQL mais recentes no banco de dados?

  • Como posso consultar nomes usando expressões regulares?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve