- Este tópico contém 11 respostas, 5 vozes e foi atualizado pela última vez 16 anos, 1 mês atrás por
diegolenhardt.
-
AutorPosts
-
27 de janeiro de 2010 às 11:07 pm #92338
Doug
ParticipantePessoal, uma duvida cruel.
Eu tenho um datapump de 84MB. Criei um usuario e importei em uma tablespace de 500MB.
No total a tablespace ficou com 293,8M utilizados.Acessando com esse novo usuário, deleto as informações de algumas tabelas, na verdade, muitas informações.
Gero o datapump e o mesmo fica com 80MB. Crio um novo usuario,uma nova tablespace e importo o dump, e a bendita tablespace utiliza 340MB.
Nao deveria utilizar menos espaço?
27 de janeiro de 2010 às 11:44 pm #92339Marcos Braga
ParticipanteOlá Doug,
Minha sugestão é que consulte a view DBA_SEGMENTS para levantar o que e onde está todo esse espaço consumido.
Agora um detalhe importante, na exportação através do datapump (expdp) é possível observar o tamanho físico e quantidade de registros de cada tabela exportada, é bom para efetuar um prévio levantamento de consumo.
Levando em consideração que está criando outro usuário (schema) para importar os dados utilizando datapump, deve estar utilizando REMAP_SCHEMA; portanto é importante observar se está criando uma tablespace diferente também para efetuar a carga (utilizar REMAP_TABLESPACE).
Bom…., são só hipóteses. Verifique primeiramente a DBA_SEGMENTS para ver o real consumo e onde estão alocados os objetos.
[]s
Braga27 de janeiro de 2010 às 11:57 pm #92340Doug
ParticipanteEntão Braga, realmente estou usando o remap.
Ao meu entender mesmo que eu delete dados, a tablespace continua gigante, sendo assim eu teria que fazer um reorg na mesma, estou errado?
28 de janeiro de 2010 às 12:06 am #92341Marcos Braga
Participante[quote=”Doug”:3ge87caz]Então Braga, realmente estou usando o remap.
Ao meu entender mesmo que eu delete dados, a tablespace continua gigante, sendo assim eu teria que fazer um reorg na mesma, estou errado?[/quote]
Quando você importa, você utiliza o REMAP_TABLESPACE?
Se não, utilize. Crie uma tablespace somente para o novo schema e utilize o REMAP_TABLESPACE. Se não utilizar o REMAP_TABLESPACE os dados irão para a tablespace utilizada pelo usuário da exportação (schema antigo).
Creio que esse procedimento vai tirar qualquer dúvida quando a utilização do espaço.
[]s
Braga28 de janeiro de 2010 às 12:08 am #92343Doug
ParticipanteUtilizo sim.
Um amigo dba me disse que apos deletar os dados, eu devo fazer rebuild nos indices e move nas tabelas. Depois gero o DUMP e importo no novo banco.
28 de janeiro de 2010 às 12:21 am #92344Marcos Braga
Participante[quote=”Doug”:3edpwkyk]Utilizo sim.
Um amigo dba me disse que apos deletar os dados, eu devo fazer rebuild nos indices e move nas tabelas. Depois gero o DUMP e importo no novo banco.[/quote]
Utilizando o export esse procedimento é desnecessário.
Com export e import os dados são criados sequencialmente, não há fragmentação nesse processo.
A fragmentação ocorre após muito uso do banco onde há um crescimento e depois apaga-se dados da tabela, isso faz com que a marca d’água da tablespace não volte, sendo necessário o procedimento informado (alguém me corrija se errei em algo aqui, não lembro direito).
Creio que é isso.
[]s
Braga28 de janeiro de 2010 às 12:24 am #92345Doug
ParticipanteEntão posso fazer o seguinte:
Pegar a base clonada de 400GB, deletar as informações.
Após o trabalho de delete executo o EXP e nao EXPDP, correto ?28 de janeiro de 2010 às 1:14 am #92346Marcos Braga
ParticipanteDesculpe se fiz confusão, tanto faz o exp ou o expdp.
Pode utilizar tanto o exp quanto o expdp, o processo de extração dos dados é basicamente o mesmo. A importação também é sequencial para ambos os casos (não há fragmentação).
Agora, meu conselho é criar tablespace distinta para verificar o tamanho, e depois utilizar a view DBA_SEGMENTS.
[]s
Braga28 de janeiro de 2010 às 1:16 am #92347burga
ParticipanteNa verdade o export e o import só vão criar os dados sequencialmente se você fizer apenas a importação dos dados.
Você deve criar o esquema e os objetos com os parâmetros de storage definidos adequadamente e aí sim importar os dados com o comando IMP e o parâmetro IGNORE=Y.
Se você importar tudo de uma vez no import (metadados+dados) você não vai liberar o espaço não utilizado…
28 de janeiro de 2010 às 2:33 pm #92354Anônimo
Olá DOUG
Não sei já conseguiu resolver esse problema mas já aconteceu algo semelhante comigo e consegui resolver usando rebuild em index e move nas tables.
Eu tinha um schema com várias tabelas já definido seu storage initial 500mb e mesmo que no exp colocasse o parâmetro rows=n sempre me criava todas as tabelas com seu initial a 500mb e somente depois de o imp realizado eu reorganizava os index e as tables assim já definia todas as tabelas com 100kb desta forma conseguia diminuir.
Vou postar o meu procedimento de como consegui resolver esse problema.Obs: Só usar o parâmetro IGNORE=y se seu schema já tiver as tabelas identicas as que vai importar.
exp schema/schema@db file=file_name.dump log=exp_file_name.log full=yimp schema/schema@db file=file_name.dump log=imp_file_name.log tablespaces=n trasport_tablespace=n ignore=y
Após importação use o select abaixo para diminuir e organizar as tabelas e index.
— Este select vai te retornar a informação do tamanho de todas as suas Tabelas e Index referente ao schema definido, eguarde o valor todal que aparece na coluna MB para comparar no fuinal.
SELECT t1.owner, SUM (t1.BYTES / 1024 / 1024) MB
FROM dba_segments t1
WHERE t1.BYTES / 1024 / 1024 > 5
AND t1.segment_type IN (‘TABLE’, ‘INDEX’)
AND owner = ‘SCHEMA’ — Definir aqui o schema
GROUP BY t1.owner
ORDER BY 2 DESC— Este select vai gerar os comando DDL para Tabelas
SELECT ‘ALTER TABLE ‘
||owner||’.’||segment_name
||’ move STORAGE (INITIAL 100K);’
FROM dba_segments
WHERE owner=’SCHEMA’ — Qui coloque o nome do seu schema
AND segment_name NOT LIKE ‘%0%’
AND segment_type=’TABLE’;— Este select vai gerar os comando DDL para Index
SELECT ‘ALTER INDEX ‘
||owner||’.’|| segment_name
||’ rebuild STORAGE (INITIAL 100K);’
FROM dba_segments
WHERE owner = ‘SCHEMA’ — Qui coloque o nome do seu schema
AND segment_name NOT LIKE ‘%0%’
AND segment_type = ‘INDEX’Agora é só executar os scrips gerados por esses selects e assim poderá fazer novamente o exp com os tamanhos redefinidos.
Execute novamente o select para ter ver o quanto de espaço foi diminuido
Foi assim que consegui resolver o problema de espaço em schemas.
28 de janeiro de 2010 às 5:49 pm #92363Doug
ParticipanteMidianet, muito obrigado. Vou testar aqui e assim q puder posto o resultado. Muito obrigado tbm ao restante do pessoal.
29 de janeiro de 2010 às 5:30 pm #92375diegolenhardt
ParticipanteUsando o exp veja o parametro compress,
pois deve estar sendo criada a tabela novamente no banco com o initial definido como o tamanho anterior dela, deve criar com initial 32k, 10M , etc
e não os 400GB,
-
AutorPosts
- Você deve fazer login para responder a este tópico.