Amigo, obrigado pelas respostas (que são uma verdadeira aula). Legal poder contar com o pessoal da lista!
>From: "jlchiappa" <[EMAIL PROTECTED]> >Reply-To: oracle_br@yahoogrupos.com.br >To: oracle_br@yahoogrupos.com.br >Subject: [oracle_br] Re: Liberação de Espaço >Date: Tue, 06 Feb 2007 17:10:21 -0000 > >Colega, no bd Oracle vc ABSOLUTAMENTE NÃO TEM controle de qual >informação vai ser armazenada em qual datafile, ok ?? Logicamente >falando, a granularidade de controle do armazenamento vai só até a >tablespace, dentro da tablespace quando um dado é inserido ou >alterado, QUALQUER extent livre vai ser usado, em princípio... Em >muitos casos o bd segue a ordem em que os arquivos foram criados, MAS >nem isso é garantido. > No caso em questão, porém, isso NÃO é relevante, pois para liberar >espaço que vc não quer mais deixar alocado bastaria vc fazer um >shrink do(s) datafile(s) em questão (comando ALTER DATABASE >DATAFILE 'patchcompleto/nomecompletododatafile' RESIZE nnn; onde nnn >é o menor tamanho possível, logo acima do último extent alocado. >Assim, se hoje vc tem usado digamos 543 Mb no datafile, ele está >criado com mais espaço que isso, E vc não quer mais deixar esse >espaço extra alocado (pois sabe que não haverá proximamente mais >inserts que precisarão do espaço), vc poderia pedir um RESIZE para >543 Mb, aí o espaço que está em uso no datafile continua, MAS o >espaço livre é liberado, é isso.... Vc não tem como, mas no caso em >questão ** NÃO PRECISA ** remover, "passar dados", alterar >fisicamente enfim os datafiles afora o resize pra isso. Um script que >pode te ajudar, servir de base pro seu pra encontrar o menor tamanho >possível pra se resizear poderia ser : > >----------- maxshrink.sql ---------------------------------- >REM >REM este script foi criado por Tom Kyte. Serve para checar o >REM MÍNIMO tamanho usado nos datafiles. >REM >accept v_tablespaces CHAR prompt 'Tablespace(s) a Incluir, já contém % >%, [ENTER] = todas:' >set verify off >column file_name format a50 word_wrapped >column smallest format 999,990 heading "Smallest|Size|Poss." >column currsize format 999,990 heading "Current|Size" >column savings format 999,990 heading "Poss.|Savings" >break on report >compute sum of savings on report > >column value new_val blksize NOPRINT > >select value from v$parameter where name = 'db_block_size' >/ > >select tablespace_name, file_name, > ceil( (nvl(hwm,1)*&&blksize)/1024/1024 ) smallest, > ceil( blocks*&&blksize/1024/1024) currsize, > ceil( blocks*&&blksize/1024/1024) - > ceil( (nvl(hwm,1)*&&blksize)/1024/1024 ) savings >from dba_data_files a, > ( select file_id, max(block_id+blocks-1) hwm > from dba_extents > group by file_id ) b >where a.file_id = b.file_id(+) > and a.tablespace_name like upper('%&v_tablespaces%') > order by 1,2 >/ > >column cmd format a200 word_wrapped > >select 'alter database datafile '''||file_name||''' resize ' || > ceil( (nvl(hwm,1)*&&blksize)/1024/1024 ) || 'm;' cmd >from dba_data_files a, > ( select file_id, max(block_id+blocks-1) hwm > from dba_extents > group by file_id ) b >where a.file_id = b.file_id(+) > and a.tablespace_name like upper('%&v_tablespaces%') > and ceil( blocks*&&blksize/1024/1024) - > ceil( (nvl(hwm,1)*&&blksize)/1024/1024 ) > 0 > order by a.tablespace_name, a.file_name >/ > > > >==> OBS : pode haver casos onde o datafile tem extent(s) acima do >extent livre, nesses casos vc só poderá fazer o RESIZE pra um valor >acima do último extent efetivamente usado, os eventuais extents free >abaixo disso vc só recuperaria movendo o segmento. > >[]s > > Chiappa > >--- Em oracle_br@yahoogrupos.com.br, "Everton Dias" ><[EMAIL PROTECTED]> escreveu > > > > > > Pessoal, tenho a seguinte configuração em uma tbs de indices. > > Como podem notar tenho 3 datafiles, contendo 1.5 GB, 1.9 GB e 150 >MB, porém > > se somar os dados dos 3 ocuparia 1 GB. > > > > Como posso passar os dados para apenas 1 datafile e remover os >demais ? > > > > Obrigado. > > > > > > > > total MB Free MB Datafile >name > > Used MB total KB Free KB Used KB > > ---------- ---------- ---------------------------------------------- >---- > > ---------- ---------- ----- > > 1500 >956.13 /u02/app/oracle/oradata/ovdb/cindx01.dbf > > 543.88 1536000 979072 > > 1900 >1383.94 /u02/app/oracle/oradata/ovdb/cindx021.dbf > > 516.06 1945600 1417152 > > 150 >0 /u02/app/oracle/oradata/ovdb/cindx03.dbf > > 0 153600 0 0 > > > > _________________________________________________________________ > > MSN Busca: fácil, rápido, direto ao ponto. http://search.msn.com.br > > > > _________________________________________________________________ MSN Hotmail, o maior webmail do Brasil. http://www.hotmail.com