- Este tópico contém 3 respostas, 2 vozes e foi atualizado pela última vez 15 anos, 10 meses atrás por
VitorLeandro.
-
AutorPosts
-
20 de maio de 2010 às 5:42 pm #94098
mpvargas
ParticipanteCaros Amigos,
Tenho uma tablespace de 50GB (ficou grande assim por causa de uma migração de sistema)… como ela é a tablespace DEFAULT para o usuário principal do sistema, tem muita movimentação.
Fiz um estudo de redistribuição de tabelas e indices, e cheguei a conclusão que posso reduzir para uns 20 à 25GB.
A minha dúvida é a seguinte:
Como faço para diminuir o tamanho da tablespace já que não poderei usar o RESIZE pois existem dados nela?
Pensei em criar uma nova tablespace com um tamanho menor e transferir os dados…
Existe alguma forma de transferir todo o conteudo de uma tablespace para a outra?Obrigado pela ajuda.
20 de maio de 2010 às 7:21 pm #94103VitorLeandro
ParticipanteFala Vargas,
O que sempre faço para transferências de objetos é o move das tabelas e partições, e depois o rebuild dos indexes, para a tablespace desejada. Pode ser feito pontualmente, objeto por objeto se for este o caso.
Pode ser feito também o export, drop dos objetos e depois o import fazendo o remap tablespace, mas precisará de indisponibilizar completamente o sistema alem de ser bastante arriscado
Se quizer, posto o script de geração dos move…
20 de maio de 2010 às 7:49 pm #94105mpvargas
ParticipanteFala Vitor,
Gostaria do script sim, agradeço se puder postar…
Com relação a move, rebuilds, etc. estou fazendo isso, mas estou fazendo somente com as maiores tabelas…
O grande problema é que o ERP cria as tabelas no banco conforme acessa determinado módulo e como foram implantadas diversas filiais, ele separou as tabelas por filiais, sendo assim eu tinha em média umas 3.000 tabelas e depois da mudança tenho mais de 25.000 nessa tablespace…
90% das tabelas estão zeradas, mas não posso apagá-las…
Esse é o grande problema, são muitas tabelas para mover…
Por isso pensei em usar um comando que movesse todos os objetos de uma tablespace para outra.20 de maio de 2010 às 9:07 pm #94106VitorLeandro
ParticipanteMOVE AS TABELAS NAO PARTICIONADAS
SELECT ‘ALTER TABLE || ‘ ‘ || OWNER || ‘ .’ || TABLE_NAME || ‘ MOVE TABLESPACE ;’
FROM DBA_TABLES
WHERE PARTITIONED = ‘NO’
WHERE TABLESPACE_NAME =
— PODE-SE FILTRAR OBEDECENDO CRITÉRIOS COMO TAMANHO, NUMERO DE LINHAS…MOVE AS PARTIÇÕES DE TABEÇAS PARTICIONADAS
SELECT ‘ALTER TABLE ‘ || TABLE_OWNER || ‘.’ || table_name ||’ MOVE PARTITION ‘ ||partition_name ||’ TABLESPACE ;’
FROM all_tab_partitions
WHERE TABLESPACE_NAME =RECRIA OS INDEXES NA TABLESPACE DESEJADA
SELECT ‘ALTER INDEX ‘ || OWNER || INDEX_NAME || ‘ REBUILD TABLESPACE ;’
FROM DBA_INDEXES
WHERE TABLESPACE_NAME = -
AutorPosts
- Você deve fazer login para responder a este tópico.