Re: [oracle_br] Tabelas com espaço perdido.
E é Óbvio, mas só pra deixar Claro : se a necessidade é reaproveitar quase que CADA grãozinho de espaço disponível, a idéia é usar TUDO que foi sugerido, ie : Analisar as possibilidades de compactação de tabelas e índices, Analisar a chance de liberar espaço sem dados depois de DELETE, Analisar a possibilidade de mexer no controle de espaço dentro de cada bloco, checar se é possível baixar HWM, se é indicado ter extents menores e/ou de tamanho múltiplo entre si, etc... É o CONJUNTO []s Chiappa
Re: [oracle_br] Tabelas com espaço perdido.
Nesse cenário, vamos RECRIAR os extents, de forma que os extents reservados sejam liberados : SYSTEM@O11GR2>create tablespace TS_MOVTO datafile 'C:\APP\ORACLE\ORADATA\O11GR2\O11GR2\TS_MOVTO_01.DBF' size 10M autoextend on maxsize unlimited EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE MANAGEMENT AUTO; Tablespace criado. SYSTEM@O11GR2>alter table SCOTT.TAB_TESTE_ESPACO move tablespace TS_MOVTO; Tabela alterada. SYSTEM@O11GR2>select sum(bytes), count(*) from DBA_EXTENTS where segment_name='TAB_TESTE_ESPACO'; SUM(BYTES) COUNT(*) -- 159.383.552 90 1 linha selecionada. SYSTEM@O11GR2>select count(*) from SCOTT.TAB_TESTE_ESPACO; COUNT(*) -- 55280 1 linha selecionada. SYSTEM@O11GR2> ==> AGORA SIM, menos linhas estão ocupando menos espaço... c.q.d. . []s Chiappa
Re: [oracle_br] Tabelas com espaço perdido.
Sem dúvida, vc PODE remover o espaço acima da hwm, vc PODE também alterar pctfree/pctused pra que MENOS espaço dentro dos blocos fique reservado para futuros UPDATEs, vc PODE compactar tabelas e índices, vc PODE recriar um extent com um tamanho menor para que o último extent não usado até o fim seja menor, sim, como eu havia dito... Porém, via de regra, a quota do leão de espaço "desperdiçado" é o espaço ABAIXO da hwm que ficou em branco após DELETEs : como eu disse, esse espaço NÂO está desperdiçado pro si só, está reservado para futuros INSERTs/UPDATEs, mas se a pessoa SOUBER que aconteceram DELETEs em massa e não virão mais INSERTs/UPDATEs, aí sim, essa alocação passa a ser questionável Desse jeito : => primeiro, vamos criar uma tabespace LMT com extent sizes restritos E com controle de espaço dentro dos blocos automático, pra não precisarmos se preocupar com isso : SYSTEM@O11GR2>create tablespace TS_LMT_AUTO_FULL datafile 'C:\APP\ORACLE\ORADATA\O11GR2\O11GR2\TS_LMT_AUTO_FULL_01.DBF' size 100M autoextend on maxsize unlimited EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE MANAGEMENT AUTO; Tablespace criado. SYSTEM@O11GR2>alter user scott quota unlimited on TS_LMT_AUTO_FULL; Usuário alterado. => crio uma tabela com mais do que um punhado de extents : SCOTT@O11GR2>create table TAB_TESTE_ESPACO( c1 number, c2 varchar2(2000)) tablespace TS_LMT_AUTO_FULL; Tabela criada. SCOTT@O11GR2>create sequence SEQ_TESTe_ESPACO; Sequência criada. SCOTT@O11GR2>insert into TAB_TESTE_ESPACO (select seq_teste_espaco.nextval, lpad(object_name, 2000, '*') from all_objects); 68267 linhas criadas. SCOTT@O11GR2>commit; Commit concluído. SCOTT@O11GR2>select count(*) from TAB_TESTE_ESPACO; COUNT(*) -- 68267 1 linha selecionada. SCOTT@O11GR2> ==> Veja que cada extent está 'grudado' um no outro, o próximo começa onde o anterior terminou, não há 'GAPS' entre eles : SYSTEM@O11GR2>select owner, file_id, extent_id, block_id, bytes, block_id+blocks as PROXIMO from dba_extents where tablespace_name='TS_LMT_AUTO_FULL'; OWNER FILE_ID EXTENT_ID BLOCK_ID BYTES PROXIMO -- -- -- -- --- SCOTT 5 0128 65536 136 SCOTT 5 1136 65536 144 SCOTT 5 2144 65536 152 SCOTT 5 3152 65536 160 SCOTT 5 4160 65536 168 SCOTT 5 5168 65536 176 SCOTT 5 6176 65536 184 SCOTT 5 7184 65536 192 SCOTT 5 8192 65536 200 SCOTT 5 9200 65536 208 SCOTT 5 10208 65536 216 SCOTT 5 11216 65536 224 SCOTT 5 12224 65536 232 SCOTT 5 13232 65536 240 SCOTT 5 14240 65536 248 SCOTT 5 15248 65536 256 SCOTT 5 162561048576 384 SCOTT 5 173841048576 512 vários e vários mais SCOTT 5 78 819210485768320 SCOTT 5 79 832083886089344 SCOTT 5 80 93448388608 10368 SCOTT 5 81 103688388608 11392 SCOTT 5 82 113928388608 12416 SCOTT 5 83 124168388608 13440 SCOTT 5 84 134408388608 14464 SCOTT 5 85 144648388608 15488 SCOTT 5 86 154888388608 16512 SCOTT 5 87 165128388608 17536 SCOTT 5 88 175368388608 18560 SCOTT 5 89 185608388608 19584 SCOTT 5 90 195848388608 20608 SCOTT 5 91 206088388608 21632 SCOTT 5 92 216328388608 22656 SCOTT 5 93 226568388608 23680 94 linhas selecionadas. => ok, consumiu quase 200 MB para armazenar as 68 mil e tantas linhas : SYSTEM
Re: [oracle_br] Tabelas com espaço perdido.
Ednilson, Você conseguirá recuperar algum espaço se houver lacunas em sua tablespace (marca d'água além do que realmente é usado). Abcs, Braga. Em qua, 3 de abr de 2019 às 08:37, 'Ednilson Silva' ednilson.si...@jbs.com.br [oracle_br] escreveu: > > > Marcos, > > Mas fazendo este expdp/drop table/impdp, em uma nova tablespace, irei > conseguir recuperar alguma coisa em filesystem? > > São tabelas com campos LONGs > > > > Obrigado, > > Ednilson > > > > > > > > *De:* sentto-1682896-122824-15542334...@returns.groups.yahoo.com [mailto: > sentto-1682896-122824-15542334...@returns.groups.yahoo.com] *Em nome de > *Marcos > Braga braga.mar...@gmail.com [oracle_br] > *Enviada em:* terça-feira, 2 de abril de 2019 16:30 > *Para:* oracle_br@yahoogrupos.com.br > *Assunto:* Re: [oracle_br] Tabelas com espaço perdido. > > > > > > Oi Edinilson, boa tarde. > > > > Quando o tempo me permite, gosto muito de usar exportação e importação > (expdp/impdp) para recriar tablespaces e recomeçar tudo limpo e sem os > vícios que vêm se acumulando no banco atual. > > > > Claro que esse tipo de procedimento depende do tempo, tamanho, espaço > disponível em storage e rede para que tudo corra bem dentro da janela > proposta para a migração. > > > > Só uma dica. > > > > Abcs, Braga. > > > > Em ter, 2 de abr de 2019 às 13:33, 'Ednilson Silva' > ednilson.si...@jbs.com.br [oracle_br] > escreveu: > > > > Bom dia, > > Tenho um banco aqui Oracle 10g – release 10.2.0.5, que será migrado para > 11g – release 11.2.0.4 ate final do primeiro semestre ainda. > > Ocorre que tem algumas tabelas que já gostaria de recuperar o espaço > perdido. Algumas tem campo LONG RAW, BLOB, CLOB, RAW, XMLTYPE > > > > Como faço para recuperar o espaço dessas tabelas? > > > > SQL> select tablespace_name as "TABLESPACE", > > 2 num_rows, > > 3 to_char(LAST_ANALYZED, 'dd/mm/ hh24:mi') LAST_ANALYZED, > > 4 OWNER, > > 5 table_name, > > 6 round((blocks * 8) / 1024, 0) "size (mb)", > > 7 round((num_rows * avg_row_len / 1024 / 1024), 0) "actual_data > (mb)", > > 8 (round((blocks * 8) / 1024, 0) - > > 9 round((num_rows * avg_row_len / 1024 / 1024), 0)) > "wasted_space (mb)" > > 10from dba_tables > > 11 where (round((blocks * 8) / 1024, 0) > > > 12 round((num_rows * avg_row_len / 1024 / 1024), 0)) > > 13 and tablespace_name not in ('SYSTEM', 'SYSAUX') > > 14 order by 8 desc > > 15 / > > TABLESPACE NUM_ROWS OWNER TABLE_NAME size (mb) > actual_data (mb) wasted_space (mb) > > -- -- - --- -- > - > > AEFCD 104028 PRODUCAO ANX_OBRIGACAO_FSC_FIL_MES > 1664328166424 > > CFVJD 5804240 PRODUCAO SMW_PRECO_CLIENTE > 45849 653 45196 > > LCTED53315173 PRODUCAO INVENTTI_ARQUIVOS > 47789 5237 42552 > > PSUID19542948 PRODUCAO ESANMOVANIMAIS > 36767 1454 35313 > > SNACD21183099 PRODUCAO ARQ_XML_ENV_RTN_WBS_MCD_ELE > 37557 2404 35153 > > LMDFD 8965655 PRODUCAO INVENTTI_ARQUIVOS > 31695 881 30814 > > ICTCA 37531 PRODUCAO CORE_ARQUIVO > 293311 29330 > > USERS 570982788 PRODUCAO MLOG$_ORDEM_PRODUCAO > 3996711435 28532 > > LTCCD 674743472 PRODUCAO LANCAMENTO_CTB_ITEM_CTRC > 11764089444 28196 > > > > Obrigado, > > Ednilson Silva > > > > > -- > > *Marcos Braga* > > -- .- -.-- - . ..-. --- .-. -.-. . > > Star Wars > > -... . .-- .. - . -.-- --- ..- > > > -- *Marcos Braga* -- .- -.-- - . ..-. --- .-. -.-. . Star Wars -... . .-- .. - -.-- --- ..-
RES: [oracle_br] Tabelas com espaço perdido.
Marcos, Mas fazendo este expdp/drop table/impdp, em uma nova tablespace, irei conseguir recuperar alguma coisa em filesystem? São tabelas com campos LONGs Obrigado, Ednilson De: sentto-1682896-122824-15542334...@returns.groups.yahoo.com [mailto:sentto-1682896-122824-15542334...@returns.groups.yahoo.com] Em nome de Marcos Braga braga.mar...@gmail.com [oracle_br] Enviada em: terça-feira, 2 de abril de 2019 16:30 Para: oracle_br@yahoogrupos.com.br Assunto: Re: [oracle_br] Tabelas com espaço perdido. Oi Edinilson, boa tarde. Quando o tempo me permite, gosto muito de usar exportação e importação (expdp/impdp) para recriar tablespaces e recomeçar tudo limpo e sem os vícios que vêm se acumulando no banco atual. Claro que esse tipo de procedimento depende do tempo, tamanho, espaço disponível em storage e rede para que tudo corra bem dentro da janela proposta para a migração. Só uma dica. Abcs, Braga. Em ter, 2 de abr de 2019 às 13:33, 'Ednilson Silva' ednilson.si...@jbs..com.br [oracle_br] escreveu: Bom dia, Tenho um banco aqui Oracle 10g – release 10.2.0.5, que será migrado para 11g – release 11.2.0.4 ate final do primeiro semestre ainda. Ocorre que tem algumas tabelas que já gostaria de recuperar o espaço perdido. Algumas tem campo LONG RAW, BLOB, CLOB, RAW, XMLTYPE Como faço para recuperar o espaço dessas tabelas? SQL> select tablespace_name as "TABLESPACE", 2 num_rows, 3 to_char(LAST_ANALYZED, 'dd/mm/ hh24:mi') LAST_ANALYZED, 4 OWNER, 5 table_name, 6 round((blocks * 8) / 1024, 0) "size (mb)", 7 round((num_rows * avg_row_len / 1024 / 1024), 0) "actual_data (mb)", 8 (round((blocks * 8) / 1024, 0) - 9 round((num_rows * avg_row_len / 1024 / 1024), 0)) "wasted_space (mb)" 10from dba_tables 11 where (round((blocks * 8) / 1024, 0) > 12 round((num_rows * avg_row_len / 1024 / 1024), 0)) 13 and tablespace_name not in ('SYSTEM', 'SYSAUX') 14 order by 8 desc 15 / TABLESPACE NUM_ROWS OWNER TABLE_NAME size (mb) actual_data (mb) wasted_space (mb) -- -- - --- -- - AEFCD 104028 PRODUCAO ANX_OBRIGACAO_FSC_FIL_MES 166432 8166424 CFVJD 5804240 PRODUCAO SMW_PRECO_CLIENTE45849 653 45196 LCTED53315173 PRODUCAO INVENTTI_ARQUIVOS47789 5237 42552 PSUID19542948 PRODUCAO ESANMOVANIMAIS 36767 1454 35313 SNACD21183099 PRODUCAO ARQ_XML_ENV_RTN_WBS_MCD_ELE 37557 2404 35153 LMDFD 8965655 PRODUCAO INVENTTI_ARQUIVOS31695 881 30814 ICTCA 37531 PRODUCAO CORE_ARQUIVO 29331 1 29330 USERS 570982788 PRODUCAO MLOG$_ORDEM_PRODUCAO 39967 11435 28532 LTCCD 674743472 PRODUCAO LANCAMENTO_CTB_ITEM_CTRC117640 89444 28196 Obrigado, Ednilson Silva -- Marcos Braga -- .- -.-- - . ..-. --- .-. -.-. . Star Wars -... . .-- .. - . -.-- --- ..-
Re: [oracle_br] Tabelas com espaço perdido.
Oi Edinilson, boa tarde. Quando o tempo me permite, gosto muito de usar exportação e importação (expdp/impdp) para recriar tablespaces e recomeçar tudo limpo e sem os vícios que vêm se acumulando no banco atual. Claro que esse tipo de procedimento depende do tempo, tamanho, espaço disponível em storage e rede para que tudo corra bem dentro da janela proposta para a migração. Só uma dica. Abcs, Braga. Em ter, 2 de abr de 2019 às 13:33, 'Ednilson Silva' ednilson.si...@jbs.com.br [oracle_br] escreveu: > > > Bom dia, > > Tenho um banco aqui Oracle 10g – release 10.2.0.5, que será migrado para > 11g – release 11.2.0.4 ate final do primeiro semestre ainda. > > Ocorre que tem algumas tabelas que já gostaria de recuperar o espaço > perdido. Algumas tem campo LONG RAW, BLOB, CLOB, RAW, XMLTYPE > > > > Como faço para recuperar o espaço dessas tabelas? > > > > SQL> select tablespace_name as "TABLESPACE", > > 2 num_rows, > > 3 to_char(LAST_ANALYZED, 'dd/mm/ hh24:mi') LAST_ANALYZED, > > 4 OWNER, > > 5 table_name, > > 6 round((blocks * 8) / 1024, 0) "size (mb)", > > 7 round((num_rows * avg_row_len / 1024 / 1024), 0) "actual_data > (mb)", > > 8 (round((blocks * 8) / 1024, 0) - > > 9 round((num_rows * avg_row_len / 1024 / 1024), 0)) > "wasted_space (mb)" > > 10from dba_tables > > 11 where (round((blocks * 8) / 1024, 0) > > > 12 round((num_rows * avg_row_len / 1024 / 1024), 0)) > > 13 and tablespace_name not in ('SYSTEM', 'SYSAUX') > > 14 order by 8 desc > > 15 / > > TABLESPACE NUM_ROWS OWNER TABLE_NAME size (mb) > actual_data (mb) wasted_space (mb) > > -- -- - --- -- > - > > AEFCD 104028 PRODUCAO ANX_OBRIGACAO_FSC_FIL_MES > 1664328166424 > > CFVJD 5804240 PRODUCAO SMW_PRECO_CLIENTE > 45849 653 45196 > > LCTED53315173 PRODUCAO INVENTTI_ARQUIVOS > 47789 5237 42552 > > PSUID19542948 PRODUCAO ESANMOVANIMAIS > 36767 1454 35313 > > SNACD21183099 PRODUCAO ARQ_XML_ENV_RTN_WBS_MCD_ELE > 37557 2404 35153 > > LMDFD 8965655 PRODUCAO INVENTTI_ARQUIVOS > 31695 881 30814 > > ICTCA 37531 PRODUCAO CORE_ARQUIVO > 293311 29330 > > USERS 570982788 PRODUCAO MLOG$_ORDEM_PRODUCAO > 3996711435 28532 > > LTCCD 674743472 PRODUCAO LANCAMENTO_CTB_ITEM_CTRC > 11764089444 28196 > > > > Obrigado, > > Ednilson Silva > > > -- *Marcos Braga* -- .- -.-- - . ..-. --- .-. -.-. . Star Wars -... . .-- .. - -.-- --- ..-
[oracle_br] Tabelas com espaço perdido.
Bom dia, Tenho um banco aqui Oracle 10g release 10.2.0.5, que será migrado para 11g release 11.2.0.4 ate final do primeiro semestre ainda. Ocorre que tem algumas tabelas que já gostaria de recuperar o espaço perdido. Algumas tem campo LONG RAW, BLOB, CLOB, RAW, XMLTYPE Como faço para recuperar o espaço dessas tabelas? SQL> select tablespace_name as "TABLESPACE", 2 num_rows, 3 to_char(LAST_ANALYZED, 'dd/mm/ hh24:mi') LAST_ANALYZED, 4 OWNER, 5 table_name, 6 round((blocks * 8) / 1024, 0) "size (mb)", 7 round((num_rows * avg_row_len / 1024 / 1024), 0) "actual_data (mb)", 8 (round((blocks * 8) / 1024, 0) - 9 round((num_rows * avg_row_len / 1024 / 1024), 0)) "wasted_space (mb)" 10from dba_tables 11 where (round((blocks * 8) / 1024, 0) > 12 round((num_rows * avg_row_len / 1024 / 1024), 0)) 13 and tablespace_name not in ('SYSTEM', 'SYSAUX') 14 order by 8 desc 15 / TABLESPACE NUM_ROWS OWNER TABLE_NAME size (mb) actual_data (mb) wasted_space (mb) -- -- - --- -- - AEFCD 104028 PRODUCAO ANX_OBRIGACAO_FSC_FIL_MES 166432 8166424 CFVJD 5804240 PRODUCAO SMW_PRECO_CLIENTE45849 653 45196 LCTED53315173 PRODUCAO INVENTTI_ARQUIVOS47789 5237 42552 PSUID19542948 PRODUCAO ESANMOVANIMAIS 36767 1454 35313 SNACD21183099 PRODUCAO ARQ_XML_ENV_RTN_WBS_MCD_ELE 37557 2404 35153 LMDFD 8965655 PRODUCAO INVENTTI_ARQUIVOS31695 881 30814 ICTCA 37531 PRODUCAO CORE_ARQUIVO 29331 1 29330 USERS 570982788 PRODUCAO MLOG$_ORDEM_PRODUCAO 39967 11435 28532 LTCCD 674743472 PRODUCAO LANCAMENTO_CTB_ITEM_CTRC117640 89444 28196 Obrigado, Ednilson Silva