Pular para o conteúdo

Fóruns Banco de dados Oracle Duvida DATAPUMP Duvida DATAPUMP

#92354
Anô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=y

    imp 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.