Perfeito !!!

Valeu Chiappa.

On 4/17/06, jlchiappa <[EMAIL PROTECTED]> wrote:
>
>  É que pra esse trabalho de liberar espaço quando vc sabe que não vai
> mais haver DMLs e a hwm está alta e há muitos espaço em branco que só
> seriam re-usados em DMLs , no 10g vc tem a opção de SEGMENT SHRINK,
> como mostrado em http://asktom.oracle.com/pls/ask/f?
> p=4950:8:::::F4950_P8_DISPLAYID:17312316112393 e documentado nos
> manuais 10g, e isso funciona MESMO que o segmento esteja "espalhado"
> em vários datafiles da tablespace, nas versões inferiores não tem
> acordo, é move ou rebuild do segmento pra depois se poder fazer o
> shrink, e se forem muitos datafiles isso é um pouquinho incômodo, é
> isso.
>
> []s
>
> Chiappa
>
> --- Em oracle_br@yahoogrupos.com.br, "Marcelo Cauduro"
> <[EMAIL PROTECTED]> escreveu
>
> >
> > Por que vc diz :
> > " aí num caso desses é bem mais trabalhoso antes do banco 10g " ?
> >
> > O que o banco 10g facilita nesse ultimo caso citado ?
> >
> >
> >
> > On 4/17/06, jlchiappa <[EMAIL PROTECTED]> wrote:
> > >
> > >  Ederson, deixe-me tentar esclarecer e aumentar aí : na verdade,
> é **
> > > MUITO ** fácil vc descobrir o HWM , DESDE que vc conheça os
> conceitos
> > > a respeito e não vá procurar o que não existe. São eles :
> > >
> > > a) hwm não é apenas "o ponto na tablespace onde chegou a escrita
> de
> > > dados", e sim o ponto MAIS ALTO em CADA DATAFILE da tablespace
> onde
> > > já chegou a escrita de dados ** E ** cujos extents ainda não foram
> > > dropados/movidos
> > >
> > > b) NÃO existe um "hwm da tablespace", e sim UM hwm em CADA
> datafile
> > >
> > > c) dentro dum datafile, o espaço é alocado por extents, extents
> são
> > > compostos por blocos, e os blocos num datafile são sequenciais,
> assim
> > > de acordo com o conceito a) , se eu achar o último bloco do extent
> > > mais alto, imediatamente acima fica o hwm.
> > >
> > > Exemplo :
> > >
> > > [EMAIL PROTECTED]:SQL>create tablespace TS_TESTE datafile 'D:\O9IR2
> \O9IR2
> > > \TS_TESTE_01.DBF' size 100M nologging;
> > >
> > > [EMAIL PROTECTED]:SQL>select * from dba_tablespaces where
> > > tablespace_name='TS_TESTE';
> > >
> > > TABLESPACE_NAME                        BLOCK_SIZE
> > > INITIAL_EXTENT        NEXT_EXTENT        MIN_EXTENTS
> > > MAX_EXTENTS       PCT_INCREASE         MIN_EXTLEN STATUS
> CONTENTS
> > > LOGGING   FOR EXTENT_MAN ALLOCATIO PLU SEGMEN
> > > ------------------------------ ------------------ ----------------
> -- -
> > > ----------------- ------------------ ------------------ ----------
> ----
> > > ---- ------------------ --------- --------- --------- --- --------
> -- -
> > > -------- --- ------
> > > TS_TESTE                                     8192
> > > 65536                                     1
> > > 2147483645                                 65536 ONLINE
> PERMANENT
> > > NOLOGGING NO  LOCAL      SYSTEM    NO  MANUAL
> > >
> > > [EMAIL PROTECTED]:SQL>create table TAB1 tablespace TS_TESTE nologging
> as
> > > (select * from scott.emp where 1=2);
> > >
> > > Tabela criada.
> > >
> > > [EMAIL PROTECTED]:SQL>create table TAB2 tablespace TS_TESTE  nologging
> as
> > > (select * from dba_objects where 1=2);
> > >
> > > Tabela criada.
> > >
> > > [EMAIL PROTECTED]:SQL>BEGIN
> > >   2  for i in 1..100 loop
> > >   3     insert into TAB1 (select * from scott.emp);
> > >   4     commit;
> > >   5  end loop;
> > >   6  END;
> > >   7  /
> > >
> > > Procedimento PL/SQL concluído com sucesso.
> > >
> > > [EMAIL PROTECTED]:SQL>select owner, SEGMENT_TYPE, SEGMENT_NAME,
> > > PARTITION_NAME, file_id, max(block_id) from dba_extents where
> > > tablespace_name='TS_TESTE'
> > >   2  group by owner, SEGMENT_TYPE, SEGMENT_NAME, PARTITION_NAME,
> > > file_id
> > >   3* order by file_id, 6 , owner, SEGMENT_TYPE, SEGMENT_NAME,
> > > PARTITION_NAME;
> > >
> > > OWNER            SEGMENT_TYPE
> > > SEGMENT_NAME
> > > PARTITION_NAME                            FILE_ID      MAX
> (BLOCK_ID)
> > > ---------------- ------------------ ------------------------------
> ----
> > > - ------------------------------ ------------------ --------------
> ----
> > > SYSTEM           TABLE
> > > TAB2
> > >               2                 17
> > > SYSTEM           TABLE
> > > TAB1
> > >               2                 25
> > >
> > >
> > > ==> no caso o maior block_id já usado nesse tal datafile número
> dois
> > > (o único da tablespace por enquanto) é o bloco 25, vamos ver
> quantos
> > > blocos tenho nesse extent a partir desse bloco :
> > >
> > > [EMAIL PROTECTED]:SQL>select blocks from dba_extents where
> > > tablespace_name='TS_TESTE' and file_id=2 and block_id=25;
> > >
> > >             BLOCKS
> > > ------------------
> > >                  8
> > >
> > > OK, a partir do bloco 25 tenho mais 8, em bytes isso fica :
> > >
> > > [EMAIL PROTECTED]:SQL>select (25+8) * 8192 from dual;
> > >
> > >        (25+8)*8192
> > > ------------------
> > >             270336
> > >
> > > o datafile que quero shrinkar (digamos) tem :
> > >
> > > [EMAIL PROTECTED]:SQL>select * from dba_data_files where
> > > tablespace_name='TS_TESTE';
> > >
> > > FILE_NAME
> > >           FILE_ID TABLESPACE_NAME
> > > BYTES             BLOCKS STATUS          RELATIVE_FNO AUT
> > > MAXBYTES          MAXBLOCKS       INCREMENT_BY
> > > USER_BYTES        USER_BLOCKS
> > > ------------------------------------------------------------------
> -- -
> > > ----------------- ------------------------------ -----------------
> - --
> > > ---------------- --------- ------------------ --- ----------------
> -- -
> > > ----------------- ------------------ ------------------ ----------
> ----
> > > ----
> > > D:\O9IR2\O9IR2
> > > \TS_TESTE_01.DBF
> > >   2 TS_TESTE                                104857600
> > > 12800 AVAILABLE                  2 NO
> > > 0                  0                  0
> > > 104792064              12792
> > >
> > > ==> inclusive, veja que tenho BYTES=104857600 e
> USER_BYTES=104792064,
> > > por que ?? A diferença de 64 Kb é o BITMAP das tablespaces LMT,
> como
> > > é o caso da minha,algo que o pessoal SEMPRE parecer esquecer de
> levar
> > > em conta... No caso, tenho 104792064 bytes de tamanho efetivo, só
> uso
> > > 270336 bytes, do byte 270337 em diante poderia shrinkar :
> > >
> > > [EMAIL PROTECTED]:SQL>select 65536 + 270336 from dual;
> > >
> > >       65536+270336
> > > ------------------
> > >             335872
> > >
> > > [EMAIL PROTECTED]:SQL>alter database datafile 'D:\O9IR2\O9IR2
> > > \TS_TESTE_01.DBF' resize 335872;
> > >
> > > Banco de dados alterado.
> > >
> > > [EMAIL PROTECTED]:SQL>select * from dba_data_files where
> > > tablespace_name='TS_TESTE';
> > >
> > > FILE_NAME
> > >           FILE_ID TABLESPACE_NAME
> > > BYTES             BLOCKS STATUS          RELATIVE_FNO AUT
> > > MAXBYTES          MAXBLOCKS       INCREMENT_BY
> > > USER_BYTES        USER_BLOCKS
> > > ------------------------------------------------------------------
> -- -
> > > ----------------- ------------------------------ -----------------
> - --
> > > ---------------- --------- ------------------ --- ----------------
> -- -
> > > ----------------- ------------------ ------------------ ----------
> ----
> > > ----
> > > D:\O9IR2\O9IR2
> > > \TS_TESTE_01.DBF
> > >   2 TS_TESTE                                   335872
> > > 41 AVAILABLE                  2 NO
> > > 0                  0                  0
> > > 262144                 32
> > >
> > > [EMAIL PROTECTED]:SQL>
> > >
> > > ==> esse é o limite, se no último extent, na parte que não tem
> dados,
> > > eu tentar diminuir mais, serei desprezado :
> > >
> > > [EMAIL PROTECTED]:SQL>alter database datafile 'D:\O9IR2\O9IR2
> > > \TS_TESTE_01.DBF' resize 335871;
> > >
> > > Banco de dados alterado.
> > >
> > > [EMAIL PROTECTED]:SQL>alter database datafile 'D:\O9IR2\O9IR2
> > > \TS_TESTE_01.DBF' resize 335870;
> > >
> > > Banco de dados alterado.
> > >
> > > [EMAIL PROTECTED]:SQL>select * from dba_data_files where
> > > tablespace_name='TS_TESTE';
> > >
> > > FILE_NAME
> > >           FILE_ID TABLESPACE_NAME
> > > BYTES             BLOCKS STATUS          RELATIVE_FNO AUT
> > > MAXBYTES          MAXBLOCKS       INCREMENT_BY
> > > USER_BYTES        USER_BLOCKS
> > > ------------------------------------------------------------------
> -- -
> > > ----------------- ------------------------------ -----------------
> - --
> > > ---------------- --------- ------------------ --- ----------------
> -- -
> > > ----------------- ------------------ ------------------ ----------
> ----
> > > ----
> > > D:\O9IR2\O9IR2
> > > \TS_TESTE_01.DBF
> > >   2 TS_TESTE                                   335872
> > > 41 AVAILABLE                  2 NO
> > > 0                  0                  0
> > > 262144                 32
> > >
> > > continua com 335872.... Vou tentar diminuir tanto que chega em
> áreas
> > > com dados :
> > >
> > > [EMAIL PROTECTED]:SQL>alter database datafile 'D:\O9IR2\O9IR2
> > > \TS_TESTE_01.DBF' resize 100000;
> > > alter database datafile 'D:\O9IR2\O9IR2\TS_TESTE_01.DBF' resize
> 100000
> > > *
> > > ERRO na linha 1:
> > > ORA-03214: O Tamanho do Arquivo especificado é menor que o mínimo
> > > necessário
> > >
> > >
> > > ===> OBVIAMENTE, o exemplo é muito simples, em Produção vc não só
> vai
> > > ter vários datafiles (cada qual com a sua hwm), como ainda pode
> > > acontecer de ter um segmento (seja tabela, índice, partição, o que
> > > for) espalhado em mais de um datafile, aí num caso desses é bem
> mais
> > > trabalhoso antes do banco 10g, mas o conceito tái demonstrado.
> > >
> > > []s
> > >
> > > Chiappa
> > >
> > >
> > >
> > > --- Em oracle_br@yahoogrupos.com.br, "Ederson" <[EMAIL PROTECTED]>
> escreveu
> > >
> > > >
> > > > Jader,
> > > >
> > > > O que vc quer não será possível, pois o Oracle mantém uma
> > > informação por
> > > > tablespace chamada HWM (High Water Mark) que significa o ponto
> na
> > > tablespace
> > > > onde chegou a escrita de dados.
> > > >
> > > > Por mais que vc remova usuários, a HWM só vai baixar para vc
> fazer
> > > um resize
> > > > no datafile da tablespace, se a remoção de objetos (drop ou
> > > truncate)
> > > > acontecer no objeto que gerou a última HWM, e isto não é
> possível
> > > (bem, eu
> > > > até hoje não encontrei esta informação) descobrir.
> > > >
> > > > Resumindo, vc só conseguirá fazer RESIZE no datafile da
> tablespace
> > > se o
> > > > tamanho desejado ficar acima da HWM, ok?
> > > >
> > > >
> > > > Ederson Elias de Oliveira
> > > > DBA Oracle
> > > > Setransp - Goiânia-GO
> > > > ----------------------------------------------------------------
> ---
> > > > -----Mensagem original-----
> > > > De: oracle_br@yahoogrupos.com.br
> > > [mailto:[EMAIL PROTECTED] Em
> > > > nome de Jader - Suporte Técnico - Engeman EAM
> > > > Enviada em: segunda-feira, 17 de abril de 2006 10:15
> > > > Para: oracle_br@yahoogrupos.com.br
> > > > Assunto: RES: [oracle_br] "Limpar" TableSpaces
> > > >
> > > > André,
> > > >
> > > > No meu caso aqui eu tenho vários usuários amarrados a uma única
> > > tablespace.
> > > > O que eu queria era diminuir o tamanho físico de minha
> tablespace
> > > após matar
> > > > um usuário entendeu? Para liberar espaço em disco.
> > > >
> > > > Atenciosamente,
> > > >
> > > > Jader Resende de Souza
> > > >
> > >
> > >
> > >
> > >
> > >
> > >
> > > ------------------------------------------------------------------
> --------------------------------------------------------
> > > Atenção! As mensagens deste grupo são de acesso público e de
> inteira
> > > responsabilidade de seus remetentes.
> > > Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/
> > >
> > > ------------------------------------------------------------------
> --------------------------------------------------------
> __________________________________________________________________
> > >
> > > Este Grupo recebe o apoio da SQL Magazine -
> > > www.devmedia.com.br/sqlmagazine
> > > __________________________________________________________________
> > > O grupo Oracle_br não aceita anexos. Quando oferecer algum
> arquivo, tenha
> > > o link do mesmo para evitar trafego(pedidos) desnecessário.
> > >
> > >
> > >  *Yahoo! Grupos, um serviço oferecido por:*  PUBLICIDAD
> > >
> <http://br.ard.yahoo.com/SIG=12fkpbrf4/M=399886.8024024.9168513.236989
> 3/D=brclubs/S=2137114689:HM/Y=BR/EXP=1145300394/A=3503032/R=2/SIG=1542
>
> m34g9/*http://lt.dell.com/lt/lt.aspx?
> CID=11982&LID=329182&DGC=BA&DGSeg=DHS&DURL=http://www1.la.dell.com/con
> tent/products/category.aspx/desktops?c%3dbr%26l%3dpt%26s%3ddhs>
> > >
> > > ------------------------------
> > > *Links do Yahoo! Grupos*
>
> > >
> > >    - Para visitar o site do seu grupo na web, acesse:
> > >    http://br.groups.yahoo.com/group/oracle_br/
> > >
> > >    - Para sair deste grupo, envie um e-mail para:
> > >    [EMAIL PROTECTED]<oracle_br-
> [EMAIL PROTECTED]>
>
> > >
> > >    - O uso que você faz do Yahoo! Grupos está sujeito aos Termos
> do
> > >    Serviço do Yahoo! <http://br.yahoo.com/info/utos.html>.
>
> > >
> > >
> >
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
>
>
>
>
>
>
> --------------------------------------------------------------------------------------------------------------------------
>
> Atenção! As mensagens deste grupo são de acesso público e de inteira
> responsabilidade de seus remetentes.
> Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/
>
> --------------------------------------------------------------------------------------------------------------------------__________________________________________________________________
>
> Este Grupo recebe o apoio da SQL Magazine -
> www.devmedia.com.br/sqlmagazine
> __________________________________________________________________
> O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha
> o link do mesmo para evitar trafego(pedidos) desnecessário.
>
>
>
>  *Yahoo! Grupos, um serviço oferecido por:*  PUBLICIDAD
> <http://br.ard.yahoo.com/SIG=12f9nggv0/M=399886.8024024.9168513.2369893/D=brclubs/S=2137114689:HM/Y=BR/EXP=1145302861/A=3503032/R=2/SIG=1542m34g9/*http://lt.dell.com/lt/lt.aspx?CID=11982&LID=329182&DGC=BA&DGSeg=DHS&DURL=http://www1.la.dell.com/content/products/category.aspx/desktops?c%3dbr%26l%3dpt%26s%3ddhs>
> ------------------------------
> *Links do Yahoo! Grupos*
>
>    - Para visitar o site do seu grupo na web, acesse:
>    http://br.groups.yahoo.com/group/oracle_br/
>
>    - Para sair deste grupo, envie um e-mail para:
>    [EMAIL PROTECTED]<[EMAIL PROTECTED]>
>
>    - O uso que você faz do Yahoo! Grupos está sujeito aos Termos do
>    Serviço do Yahoo! <http://br.yahoo.com/info/utos.html>.
>
>


[As partes desta mensagem que não continham texto foram removidas]



--------------------------------------------------------------------------------------------------------------------------
Atenção! As mensagens deste grupo são de acesso público e de inteira 
responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
--------------------------------------------------------------------------------------------------------------------------__________________________________________________________________

Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine 
__________________________________________________________________
O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o 
link do mesmo para evitar trafego(pedidos) desnecessário. 
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/oracle_br/

<*> Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html

 



Responder a