entendi agora, ficou mais claro a explicação. Obrigado e um abraço.

--- Em oracle_br@yahoogrupos.com.br, "jlchiappa" <[EMAIL PROTECTED]> 
escreveu
>
> Segue respostas :
> 
> >>Thu, 07 Feb 2008 03:37:46 -0800
> 
> Bom Dia Chiappa, eu li e reli a sua resposta a minha pergunta. só 
tem 
> mais uma coisa que eu gostaria de entender, no final, você me 
> responde dizendo que este segmento de undo especial 
chamado "system" 
> que reside na tablespace "system" somente é utilizado para 
transações 
> de tabelas internas e não para tabelas de usuários. Sendo assim, 
> temos 2 cenários:
> undo_management=AUTO
> undo_tablespace=UNDOTBS1
> 
> e undo_management=MANUAL
> undo_tablespace=UNDOTBS1.
> 
> No primeiro caso, ele utilizaria o gerenciamento dos segmentos de 
> rollback é feito automaticamente pelo banco e eu não preciso me 
> preocupar com isso, somente com o tamanho da tablespace, de acordo 
> com o tamanho máximo das transações e com o tempo máximo que desejo 
> ter "flashback" no banco, correto? 
> 
> ==> Não só o tamanho das transações mas também quanto tempo ela fica
> ativa, consumindo extents, mas é essencialmente correto, sim.
> 
> >> Mas a tablespace que o banco 
> utiliza continua sendo a UNDOTBS1, correto?
> 
> ==> Certo.
> 
> 
> >> no segundo cenário, eu teria que criar os segmentos de undo e o 
banco 
> utilizaria estes segmentos de rollback ( que foram criados dentro 
da 
> tablespace UNDOTBS1) para o armazenamento de dados de undo.
> 
> ==> Criar e colocar ONLINE, sim.
> 
> >> A minha pergunta ( o que fiquei sem entender na sua resposta 
> anterior) é, no caso de undo_management=auto, ele mesmo assim 
> utilizaria segmentos de rollback de dentro da tablespace system 
para 
> dados das tabelas internas do sistemas, e automaticamente segmentos 
> de rollback dentro da tablespace de undo UNDOTBS1?
> seria isso?
> 
> ==> PRECISAMENTE, a idéia é separar o que é UNDO de usuário do UNDO
> interno do banco. Isso é facílimo de se verificar, veja só :
> 
> -> estou com UNDO automático
> 
> [EMAIL PROTECTED]:SQL>show parameters undo
> 
> NAME                                 TYPE        VALUE
> ------------------------------------ -----------
> ------------------------------
> undo_management                      string      AUTO
> undo_retention                       integer     900
> undo_tablespace                      string      UNDOTBS1
> 
> -> MESMO ASSIM veja lá que há SIM o segmento de rollback SYSTEM 
criado
> e ativo, à disposição do banco, MAS veja lá que ele é não é 
público, é
> PARTICULAR a quem o criou, o usuário SYS no caso, que é o usuário
> interno do banco :
> 
> [EMAIL PROTECTED]:SQL>select * from DBA_ROLLBACK_SEGS;
> 
> SEGMENT_NAME OWNER  TABLESPACE_NAME SEGMENT_ID FILE_ID BLOCK_ID
> INITIAL_EXTENT NEXT_EXTENT  STATUS
> ------------ ------ --------------- ---------- ------- --------
> -------------- -----------  ------
> SYSTEM       SYS    SYSTEM                   0       1        
9      
>   114688              ONLINE
> _SYSSMU1$    PUBLIC UNDOTBS1                 1       2        
9      
>   131072              ONLINE
> _SYSSMU2$    PUBLIC UNDOTBS1                 2       2       
25      
>   131072              ONLINE
> _SYSSMU3$    PUBLIC UNDOTBS1                 3       2       
41      
>   131072              ONLINE
> _SYSSMU4$    PUBLIC UNDOTBS1                 4       2       
57      
>   131072              ONLINE
> _SYSSMU5$    PUBLIC UNDOTBS1                 5       2       
73      
>   131072              ONLINE
> _SYSSMU6$    PUBLIC UNDOTBS1                 6       2       
89      
>   131072              ONLINE
> _SYSSMU7$    PUBLIC UNDOTBS1                 7       2      
105      
>   131072              ONLINE
> _SYSSMU8$    PUBLIC UNDOTBS1                 8       2      
121      
>   131072              ONLINE
> _SYSSMU9$    PUBLIC UNDOTBS1                 9       2      
137      
>   131072              ONLINE
> _SYSSMU10$   PUBLIC UNDOTBS1                10       2      
153      
>   131072              ONLINE
> 
> 11 linhas selecionadas.
> 
> [EMAIL PROTECTED]:SQL> 
> 
> ==> esses caras _SYSxyz$ são os que foram criados pelo undo
> automático, é o que eu te falei na msg anterior, segmento de 
rollback
> existe SEMPRE, o que o undo auto faz é os criar/ativar/desativar
> automaticamente cfrme crescem/diminuem as transações, ok ?
> 
> []s
> 
>  Chiappa
>  
> --- Em oracle_br@yahoogrupos.com.br, "rei_do_delphi"
> <brunomaximomogi@> escreveu
> >
> > Bom Dia Chiappa, eu li e reli a sua resposta a minha pergunta. só 
tem 
> > mais uma coisa que eu gostaria de entender, no final, você me 
> > responde dizendo que este segmento de undo especial 
chamado "system" 
> > que reside na tablespace "system" somente é utilizado para 
transações 
> > de tabelas internas e não para tabelas de usuários. Sendo assim, 
> > temos 2 cenários:
> > undo_management=AUTO
> > undo_tablespace=UNDOTBS1
> > 
> > e undo_management=MANUAL
> > undo_tablespace=UNDOTBS1.
> > 
> > No primeiro caso, ele utilizaria o gerenciamento dos segmentos de 
> > rollback é feito automaticamente pelo banco e eu não preciso me 
> > preocupar com isso, somente com o tamanho da tablespace, de 
acordo 
> > com o tamanho máximo das transações e com o tempo máximo que 
desejo 
> > ter "flashback" no banco, correto? Mas a tablespace que o banco 
> > utiliza continua sendo a UNDOTBS1, correto?
> > 
> > no segundo cenário, eu teria que criar os segmentos de undo e o 
banco 
> > utilizaria estes segmentos de rollback ( que foram criados dentro 
da 
> > tablespace UNDOTBS1) para o armazenamento de dados de undo.
> > 
> > A minha pergunta ( o que fiquei sem entender na sua resposta 
> > anterior) é, no caso de undo_management=auto, ele mesmo assim 
> > utilizaria segmentos de rollback de dentro da tablespace system 
para 
> > dados das tabelas internas do sistemas, e automaticamente 
segmentos 
> > de rollback dentro da tablespace de undo UNDOTBS1?
> > seria isso?
> > 
> > Mais uma vez obrigado.
> > --- Em oracle_br@yahoogrupos.com.br, "jlchiappa" <jlchiappa@> 
> > escreveu
> > >
> > > Intão, os segmentos são um pouco mais que simples "divisões" 
> > lógicas,
> > > eles tem um papel físico também. Antes de falar sobre isso, de 
cara 
> > já
> > > aviso que o que segue é mais conhecimento acadêmico do que  
qquer
> > > outra coisa, a Oracle desencoraja e recomenda contra o controle 
> > manual
> > > de undo nas versões mais recentes de banco, e é o que é praxe, 
então
> > > só mesmo num exercício teórico (como o é o OCP), ou num 
eventual 
> > caso
> > > de banco enorme e ultra-ativo é que vc vai precisa disso . Por 
causa
> > > disso também a documentação atual fala muito pouco deles, ela 
os 
> > > considera como um mecanismo interno que deveria ser controlado
> > > internamente pelo banco, para referência eu indico docs 
antigos, 
> > como
> > > as notas metalink "General Overview of Rollback Segments", doc
> > > id=1011108.6 e "Creating, Optimizing, and Understanding Rollback
> > > Segments", doc id=62005.1 .
> > >  Bem, vamos lá : creio que vc já sabe, mas o conceito básico de
> > > consistência no bd Oracle é que para poder ser alterado
> > > necessariamente o dado foi lido pro cache, e o que é liudo é o 
BLOCO
> > > inteiro aonde o dado reside. Quando há a alteração, é feita uma 
> > CÓPIA
> > > desse bloco antes da alteração , que é o UNDO (ou também 
chamado de
> > > ROLLBACK). Ora, um bloco é bem pequeno, então vc normalmente 
tem **
> > > montes ** deles, se o banco fosse ter uma lista de blocos  de 
undo 
> > ia
> > > ser enrome, além do que ia exigir montes e montes de I/Os
> > > pequeninos,então ele ** agrupa ** isso num EXTENT, que é uma 
série 
> > de
> > > blocos contíguos, aí esse I/O todo pode ser feito duma vez só. O
> > > conjunto de extents de undo em uso é o chamado rollback 
segment. 
> > Notar
> > > que cada transação só pode acessar um único rollback segment 
> > durante a
> > > sua vida, MAS um rollback segment pode atender várias 
transações, um
> > > extent por vez. Suponha que exista um segmento de rollback R1 
online
> > > numa dada tablespace, uma transação T1 inicia-se, ela aloca um 
> > extent
> > > E1 nesse segmento, essa transação enquanto durar só poderá 
pedir por
> > > mais extents nesse segmento R1. Se logo após uma transação T2 
> > inicia,
> > > ela pode alocar um extent E2 nesse mesmo segmento (e daí pra 
frente 
> > só
> > > poderá pedir por mais extents nesse segmento), assim por diante.
> > > Então, logicamente falando, em tese eu poderia ter só um único
> > > segmento de rollback atendendo todo mundo ? Até poderia, mas :
> > >   - há limite na qtdade máxima de extents que um segmento pode 
ter
> > > (bem alto nos releases mais recentes, mas há)
> > >   - há estruturas de controle no cabeçalho (header) dum 
segmento, 
> > cada
> > > transação interessada em o usar/continuar usando um segmento 
precisa
> > > aplicar/esperar por latches nesses caras
> > >   
> > >   ==> então poderia haver forte CONTENÇÃO (competição pela 
chance de
> > > usar) se houvesse um só segmento, além da questão de limites de
> > > extents. Assim, se deve trabalhar em esquema de round-robin, 
ie : vc
> > > cria alguns segmentos de rollback, a primeira transação T1 vê 
que o
> > > segmento R1 tá livre e aloca um extent nele, a  T2 aloca extent 
no
> > > segmento R2, assim por diante, até chegar um momento em que não 
há
> > > segmentos livres, aí a transação Tn aloca um extent do R1, Tn+1 
do 
> > R2,
> > > aí vai. Com isso vc DIMINUI a taxa de interessados num único 
> > segmento,
> > > portanto diminui a concorrência, essa é a idéia. 
> > >    Aí vem as suas perguntas : 
> > >     - qual o tamanho adequado pra extents dum segmento de 
rollback :
> > > tem que ser um tamanho nem muito grande (pois se não uma 
transação 
> > que
> > > altere poucos bytes vai causar um tamanhão de I/O), nem muito 
> > pequeno
> > > senão sub-utiliza o hardware de I/O, normalmente 1 Mb é 
considerado
> > > razoável
> > >     - qtdade de segmentos : tem que ser uma qtdade tal que 
> > não "force"
> > > muitas transações a quererem usar o mesmo segmento ao mesmo 
tempo, 
> > mas
> > > também não desperdice muito espaço em disco, normalmente se ter 
> > umas 3
> > > ou 4 transações ativas pra cada segmento de rollback é ok. 
> > >     
> > >     ==> essas recomendações vêm da aplicação do citado em
> > > http://asktom.oracle.com/pls/asktom/f?
> > p=100:11:0::::P11_QUESTION_ID:275215756923
> > > , mas na época de rollback manual a gente tinha mesmo que fazer 
os
> > > testes cfrme o link cita.
> > >     
> > >     - quando vc seta undo_management para AUTO, o que ele faz é 
ir
> > > criando/removendo/colocando ONLINE e OFFLINE os segmentos de 
> > rollback
> > > conforme as transações vão chegando, ok ? Então SIM, a partir do
> > > momento que vc desliga a feature com undo_management=MANUAL, 
fica 
> > POR
> > > SUA CONTA não só criar como ativar/colocar ONLINE os segmentos, 
> > então
> > > é natural que se vc não o fez levou erro....
> > >     
> > >     - o erro da msg em questão : quando vc cria o banco de 
dados por
> > > conta própria ele cria um segmento de rollback especial, chamado
> > > SYSTEM, na tablespace de sistema também chamada SYSTEM : esse 
cara
> > > porém só pode ser usada para as transações *** INTERNAS ***, 
feitas
> > > nas tabelas INTERNAS do banco por ele próprio, se vc não tiver
> > > segmentos de rollback de usuário criados, no caso de transação 
em
> > > tabelas não-internas o banco vai olhar, só achará o SYSTEM, 
esse é
> > > RESERVADO, pumba, levas o erro em questão, ok ? É como eu 
falei, a
> > > partir do momento que vc desativa o undo automático, fica POR 
SUA
> > > CONTA criar segmentos, os ter online, os ter offline quando não
> > > estiverem sendo usados, definir o tamanho de extent, etc....
> > >     
> > >     []s
> > >     
> > >      Chiappa
> > >      
> > > --- Em oracle_br@yahoogrupos.com.br, "rei_do_delphi"
> > > <brunomaximomogi@> escreveu
> > > >
> > > > Chiappa e Companhia, boa tarde,
> > > > Gostaria de entender um conceito importante no Db Oracle. 
Estava 
> > > > lendo um material da sybex sobre Oracle e no capítulo de 
> > > > gerenciamento de undo, fui fazendo os exercícios. A versão do 
> > Oracle 
> > > > é a 10.2.0.1.0 - 64 bits, rodando em um Centos 5.0 64 bits 
por 
> > > > vmware. Quando alterei o parâmetro undo_management para 
manual ( 
> > > > utilizando spfile) e iniciei novamente a instance, recebi o 
erro: 
> > > > ORA-01552: cannot use system rollback segment for non-system 
> > > > tablespace 'yyy' ao tentar fazer um update na base. Aí, 
voltei o 
> > > > parâmetro para auto e reiniciei a instância e tentei efetuar 
o 
> > mesmo 
> > > > update e ele deu certo. Voltei o parâmetro para o manual e 
voltou 
> > a 
> > > > dar o mesmo erro ( p.s: parâmetro undo_tablespace setado para 
uma 
> > > > tablespace de UNDO corretamente e undo_retention=900, para 
> > guardar 
> > > > por 15 minutos). aí dando uma olhada a mais no material que 
> > possuo, 
> > > > eu vi que aparentemente( digo isso, pois ainda não entendi o 
> > conceito 
> > > > de "segmento de rollback") "segmento de rollback" é como se 
fosse 
> > > > divisórias na tablespace de undo? Este erro me ocorreu 
porque? 
> > Quando 
> > > > consultei a v$undotbs ele havia me retornado que os segmentos 
de 
> > > > rollback estavam na system, seria por isso que estava dando o 
> > erro 
> > > > então? 
> > > > criei então um novo segmento de rollback através do dbconsole 
( 
> > pois 
> > > > não conhecia esse conceito até então): 
> > > > create rollback segment "rollbs2" tablespace "undotbs1" 
storage ( 
> > > > inicial 1M next 5M)/
> > > > alter rollback segment "rollbs2" online;
> > > > 
> > > > pelo que entendi, este comando me criou um "novo" segmento de 
> > > > rollback e o ativou em seguida correto?
> > > > 
> > > > sendo assim, minhas perguntas são:
> > > > O que é segmento de rollback? é como eu "presumi" agora pouco 
> > como 
> > > > sendo divisórias na tablespace de undo?
> > > > quando o tamanho que devo definir em initial, next e optimal 
> > size ?
> > > > é possível ter mais que 1 segmento de undo?
> > > > Obrigado.
> > > >
> > >
> >
>


Responder a