Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

jOliveira

redimensionar datafile

Recommended Posts

Olá galera, tenho um datafile com 10GB, já movi várias tabelas e indices para outra tablespace para tentar diminuir este datafile, mas quando vou redimensionar ocorre esta mensagem.ALTER DATABASE DATAFILE 'c:\ORACLE\DADOS\DADOS.dbf' RESIZE 9000M*ERRO na linha 1:ORA-03297: o arquivo contém dados usados além do valor solicitado de RESIZEnão sei se teria que reorganizar o arquivo.se alguém tiver uma luz agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Existem um script no Laboratório de scripts (Oracle) aqui mesmo no fórum do Oracle que mostra como reorganizar as tabelas.

Pode ser que reorganizando todas as tabelas a tabelspace diminua (pode ser...). Isso depende muito de como os blocos do seu datafile estão organizados para a diminuição.

Caso não diminua, uma maneira pode ser apagando e recriando a tablespace.

 

http://forum.imasters.com.br/public/style_emoticons/default/assobiando.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seu datafile irpa contar muito com a fragmentação da tablespaces, na verdade o que diz ao datafile se o valor pode ser reduzido é o HWM (High Water Mark), isso diz ao datafile seus limites e onde está a última extensão de algum segmento.Para conseguir reduzir, como o Montilla disse, no laboratório de Scripts existe um SELECT (Lembra-se de alterar o db_block_size) que diz até quanto o datafile pode ser reduzido com segurança.Para conseguir ganhar mais espaço, depende da sua versão do Oracle, tu poderá realizar um COALESCE na tablespace e UNDEALLOCATED, SHRINK SPACE e SHRINK COMPACT nos segmentos que estão na tablespace.Abraços,

Compartilhar este post


Link para o post
Compartilhar em outros sites

Exatamente Rodrigo!O script para reorganizar as tabelas estão no laboratório de scripts e serve exatamente para fazer o que o Rodrigo falou.É bom estudar um pouco como funciona os tipos de compactação para realizar as melhorias. :rolleyes:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu galera vou me interar sobre o que vcs me passaram, qualquer coisa peço um help.

Exatamente Rodrigo!O script para reorganizar as tabelas estão no laboratório de scripts e serve exatamente para fazer o que o Rodrigo falou.É bom estudar um pouco como funciona os tipos de compactação para realizar as melhorias. :rolleyes:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Datafile é o arquivo físico , Tablespace é uma estrutura lógica , assim as ts vão aumentar a medida que houvem dados nela, o datafile todavia é pre-definido.

 

http://www.devmedia.com.br/administrando-tablespaces-e-datafiles-no-oracle-revista-sql-magazine-89/21487

 

https://docs.oracle.com/cd/B19306_01/server.102/b14220/physical.htm

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu dou comando num datafile que tem 100M -> alter database datafile 'teste2.dbf' resize 200M

 

ok

 

depois quando vou verificar SELECT TABLESPACE_NAME,USED_SPACE,TABLESPACE_SIZE,USED_PERCENT FROM DBA_TABLESPACE_USAGE_METRICS

 

a tablespace associada a este datafile continua 100M. ELA somente fica 200M quando dou um

ALTER TABLESPACE "xxx" ADD DATAFILE 'D:XXX.DBF' SIZE 100M AUTOEXTENTED ON NEXT 100M MAXSIZE 120M;

Estou usando oracle 10.0.2 e ele só aumenta a tablespace se adicionar mais data file, e não funciona o resize. No oracle 12C quando faço resize no datafile a tablespace aumenta. Por que no oracle 10 tal resize não reflete no tamanho da tablespace ? grato!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

São estruturas distintas um datafile pode ter n tablespaces ,masnão sou DBA minha resposta tem um quê de orelhada todavia.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O datafile é uma estrutura física alocada nos discos, você não consegue redimensionar ele para um tamanho menor, porque mesmo que seja um tamanho que não esteja em uso, o DBWR processo que grava da sua tablespace em memória para o seu datafile em disco de maneira aleatória nos blocos do recorrente datafile, os datablocks a menor quantidade que possa ser gravado algum dado, portanto ao tentar redimensionar negativamente o datafile, ele pode se encontrar com um datablock usado, no fim do datafile, assim entendemos que, o Oracle só vai redimensionar tal datafile, até o ponto do ultimo datablock gravado, concluímos que o redimensionamento é aleatório, você pode conseguir redimensionar negativamente 50% da sua tablespace, ou pode conseguir redimensionar apenas uma pequena fração da quantidade total de bytes do seu datafile.

 

Espero ter ajudado.

 

Regards Amaro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.