Aqui tem um conceito importantérrimo que eu passei no e-mail original e vc não captou pelo jeito, vou o repetir : o atributo de NOLOG de uma tablespace **** NÂO SERVE PARA NADA **** além de servir como default se vc não especificar nada na hora de vc criar a tabela dentro da tablespace, o que vale para uma operação é o atributo de log/nolog DA TABELA, rigorosamente ****** NÂO EXISTE ****** o conceito de tablespace em modo nologging, é A TABELA que vai estar ou não com atributo nolog, tá bem ?? Esse atributo pode ter sido herdado na tablespace na hora do CREATE TABLE, mas em si o atributo da tablespace NÂO SERVE PRA NADA MAIS, Captado ? Então a sua frase "Pois tanto os segmentos quanto a tablespace estarão em nologging" não faz sentido algum , ok ? O que vai acontecer portanto é que apenas os blocos desses segmentos/tabelas que estão marcados como NOLOG ativo (OU porque vc assim especificou num CREATE ou ALTER TABLE, OU porque a tablespace assim estava definida e na hora de criar a tabela dentro da tablespace vc não disse nada, ele assumiu/herdou o atributo da tablespace).... ESQUEÇA a idéia de "tablespace em modo nolog" isso NÂO EXISTE, é segmento a segmento que vc indica para estar em nolog, ok ?
Quanto ao backup : veja, SE vc estiver em modo noarchive nesse banco, evidentemente não tem conversa, é o último backup cold COMPLETO que vc tem que voltar, não existe a figura do archived log nesse cenário, vc NÂO CONSEGUE recuperar uma tablespace só nem um datafile só, o banco inteiro será recuperado, volta à posição do backup, VAI PERDER todas as transações feitas após esse backup, sejam em modo log, seja em nolog, não importa. Já se o banco está em archived log mode e vc teve um crash com perda de um datafile qquer, vc PODE optar voltar o último backup DESSE DATAFILE (certamente num banco em archive mode isso deve ser um backup hot), mas aí o banco vai (corretamente) perceber que esse arquivo está defasado no tempo em relação aos demais, ele vai portanto pedir a aplicação dos archived logs, que serão aplicados na ordem nesse datafile deixando-o sincronizado - ocorre que como eu disse em msg anterior as operações NOLOG foram feitas em blocos virgens, com certeza ZERADOS/vazios nesse arquivo que vc voltou, e não foi gerado log, então essa operação NOLOG vc ** perdeu **, sem possibilidade de recuperação. O que fazer nesse caso ? Aí é o que eu falei, o normal é que não haja nenhum tipo de dependência lógica entre os dados entrados via NOLOG e os dados processados após, aí é muito simples, após recuperado o datafile (pois vc *** VAI TER SIM *** os logs gerados pelas operações log), vc simplesmente re-executa a carga e boa, tá tudo bem. INCLUSIVE, há diversos autores que defendem que nesse cenário de archived mode IMEDIATEMENTE após a operação nolog vc faça um backup, se for o caso apenas dos datafiles que contém o segmento que operou em NOLOG, nesse caso em caso de crash vc voltaria esses datafiles, voltaria o(s) datafile(s) que crasharam e recuperaria via aplicação do log normalmente.... Esse é o caso NORMAL, COMUM e ROTINEIRO, ok ? A sugestão de voltar o banco inteiro pra posição imediatamente anterior à operação de nolog só seria necessária em exceções, quando há alguma dependência lógica contra o objeto nolog por parte dos objetos log que o simples reprocesso da carga não cobre, é algo excepcional... []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Alexandre Brum <alexandre_b...@...> escreveu > > Chiappa > > Estou pretendendo deixar a tablespace da carga sempre em nologging. Sendo assim, não irá gerar log, pois conforme teu e-mail anterior, irei criar os segmentos também como nologging. Não entedi direito com a mensagem que você disse: "MAS se houver em caso de crash vc voltará um backup anterior dos datafiles dessa tablespace e irá aplicar os logs até o momento imediatamente anterior ao início NOLOG, que é o que vc tem." Eu não terei esses logs. Pois tanto os segmentos quanto a tablespace estarão em nologging. > > > Fique com Deus. > Um grande abraço. > > Att. > Alexandre Brum > > > > > ________________________________ > De: jlchiappa <jlchia...@...> > Para: oracle_br@yahoogrupos.com.br > Enviadas: Quarta-feira, 4 de Fevereiro de 2009 22:32:21 > Assunto: Res: [oracle_br] Re: Recuperação de Tablespace em no logging > > > Só complementando : como eu disse, normalmente operações NOLOG ocorrem > em período de carga, então via de regra não há outras transações > gravando/alterando na mesma tablespace, normalmente não há > considerações necessárias, MAS se houver em caso de crash vc voltará > um backup anterior dos datafiles dessa tablespace e irá aplicar os > logs até o momento imediatamente anterior ao início NOLOG, que é o que > vc tem - ou seja, na prática o banco VOLTA à situação que estava nessa > ocasião, as transações outras que estavam ocorrendo em paralelo à > operação NOLOG serão perdidas, também terão que ser > re-executadas. ..São coisas do tipo que vc TEM que estabelecer/ combinar > muito muito direitinho com o DBA e com os OUTROS desenvolvedores , ok ? > > []s > > Chiappa > > > > Colegas, vamos botar uns detalhes aí nessa thread : Brum, primeiro de > > tudo se vc pedir um ALTER TABLESPACE nn NOLOGGING (ou a criar como > > NOLOGGING), o que vc conseguiu nesse momento com isso foi NADA, ZERO, > > NIENTE, ** COISA ALGUMA ** - somente quando vc ** CRIAR ** e/ou mover > > segmentos/tabelas pra dentro dessa tablespace sem especificar cláusula > > de log é que esse atributo da tablespace vai ser assumido pelo > > segmento/tabela, e isso é CRUCIAL, pois operações NOLOGGING são ** > > sempre ** a nível de tabela/segmento, esse atributo NOLOG da > > tablespace serve apenas como default quando vc cria a > > tabela/segmento. ..O manual mesmo já nos diz : > > > > "When an existing tablespace logging attribute is changed by an ALTER > > TABLESPACE statement, all tables, indexes, and partitions created > > after the statement will have the new default logging attribute (which > > you can still subsequently override). The logging attribute of > > existing objects is not changed." > > > > Continuando, para que uma operação não gere log, *** absolutamente não > > basta *** que o atributo de NOLOG esteja ativo, há uma SEGUNDA > > exigência , é EXIGIDO que a operação esteja na lista de operações que > > são permitidas nesse modo : UPDATE por exemplo não é, e já cansei de > > ver "expertos" recomendarem ou debaterem contra a conveniência de > > UPDATE em tabelas nolog, o que não faz o MENOR SENTIDO... Ok ? Isto > > deve ficar escrupulosamente claro, o fato de vc ativar o atributo de > > NOLOG numa tabela por si *** NÂO QUER DIZER NADA **, não fará COISA > > ALGUMA se a operação não permite modo nolog, apenas umas poucas > > operações (como INSERT /*+ APPEND */ , CREATE TABLE, etc) permitem... > > Há uma TERCEIRA condição, que é a de que o modo NOLOG de operação > > SEJA permitido nesse banco, vc pode ativar o atributo FORCE LOGGING no > > seu banco, aí esse cara tem precedência sobre os anteriores, num banco > > com FORCELOGGING vc pode ativar o atributo num dado segmento e tentar > > uma operação que normalmente permite nolog que o log será SIM > > gerado...A Oracle criou isso para os casos em que há replicação > > lógica/standby, streams ou coisas do tipo, aonde o log é exigido > > sempre para que tais features funcionem a contento. > > > > Muito bem, agora sobre o backup : realmente, se vc tem um dado > > segmento com atributo NOLOG e o banco não está em FORCELOGGING, se vc > > iniciar uma operação que permita NOLOG às (digamos) 09:00h , não será > > gerado log desse ponto em diante para esse segmento, então a coisa é > > assim : necessariamente esse recurso é usado para cargas em ambiente > > DW, á noite, onde o segmento em questão ** NÃO ** está sendo usado por > > ninguém , NÂO HÁ absolutamente outras transações usando a tal > > tablespace ativamente (só consultas), então SE durante a operação, ou > > mesmo imediatamente após a operação vc tiver um crash, vc volta o > > backup anterior do(s) datafile(s) (que óbvio, está com SCN ** anterior > > ** à operação) e aplica os logs ** até ** às 09:00h, que vc tem,vc > > perde só a operação NOLOG, yes ??? Simples... O que vc faz também é , > > imediatamente após a operação NOLOG, é fazer um novo backup ** DO(s) > > DATAFILE(S) que sofreram a operação, aí sim com esse backup se depois > > dele vc tiver um crash é ELE que vc vai recuperar, cfrme citado na > > thread não há log gerados na operação, então NUNCA vc conseguirá fazer > > um recover com os logs apenas E o datafile do backup anterior está > > antigo, vc TEM que ter backup dos datafiles APÓS A OPERAÇÃO, mesmo... > > O manual de Backup nos diz textualmente isso : > > > > "The presence of NOLOGGING operations must be taken into account when > > devising the backup and recovery strategy. When a database relies on > > NOLOGGING operations, the conventional recovery strategy (of > > recovering from the latest tape backup and applying the archived > > logfiles) is no longer applicable because the log files cannot recover > > the NOLOGGING operation." > > > > É claro, isso ainda tem que ser joeirado com a sua estratégia de uso > > : por exemplo, num cliente anterior (DW) o particionamento era por dia > > do mês, e cada partição ficava numa tablespace diferente, assim era > > feita a carga NOLOG na partição do dia de hoje, que era uma tablespace > > só pra ela, SE eu tivesse problema eu simplesmente ** dropava ** a > > tablespace, recriava VAZIA e re-executava o procedimento de carga do > > dia... > > > > []s > > > > Chiappa > > > > --- Em oracle...@yahoogrup os.com.br, Alexandre Brum > > <alexandre_brum@ > escreveu > > > > > > Obrigado Carlos > > > > > > Com relação aos dados não haverá problema, pois tenho como reiniciar > > a carga dos dados. O meu receio maior é quanto a recuperar o datafile > > dessa tablespace em no logging. Se o BD por exemplo, iria reconhecer > > um datafile de um cold backup anterior, mesmo com os datafiles das > > outras tablespaces, controlfile estarem numa nova versão. > > > > > > > > > Fique com Deus. > > > Um grande abraço. > > > > > > Att. > > > Alexandre Brum > > > > > > > > > > > > > > > ____________ _________ _________ __ > > > De: Carlos E. Gorges <carlos.gorges@ > > > > Para: oracle...@yahoogrup os.com.br > > > Enviadas: Terça-feira, 3 de Fevereiro de 2009 16:59:07 > > > Assunto: Re: [oracle_br] Re: Recuperação de Tablespace em no logging > > > > > > > > > Boa tarde, > > > > > > Depende do tipo de backup que você faz. > > > > > > Em um cold backup, termine o banco com immediate, não com abort (ou ao > > > menos force um checkpoint e espere ele terminar)... o abort faz com > > > que o banco execute o restore no startup e com nologging não há dados > > > no redo para o restore. > > > Em um hot backup (expdb/export, etc) não há problema, pois os blocos > > > são lidos logicamente (datafiles, undo e buffer cache) e não > > > fisicamente do disco, pegando as informações corretas via leitura > > > consistente. > > > Em um backup baseado em archive, você NÃO terá as informações dessas > > > alterações, já que o archive é na verdade o redolog que encheu e com > > > nologging as informações dos blocos de dados alterados não vão para o > > > redolog... você conseguirá fazer o recover: os datafiles ficarão > > > legiveis pelo oracle mas em nível de dados eles provavelmente ficarão > > > inconsistentes, além da estrutura dos metadados e índices que ficarão > > > incorretas de acordo com os dados da tabela. > > > > > > cya[]; > > > Carlos E. Gorges <carlos.gorges@ gmail.com> > > > > > > 2009/2/3 alexandre_brum <alexandre_brum@ yahoo.com. br>: > > > > Carlos > > > > > > > > Sim. Sei que irei perder esses dados. Mas no caso do datafile dessa > > > > tablespace se corromper, como seria o processo de restore do > backup a > > > > fim de que eu possa novamente ter essa tablespace disponível? > > > > > > > > Obrigado. > > > > > > > > Att. > > > > Alexandre Brum > > > > > > > > --- Em oracle...@yahoogrup os.com.br, "Carlos E. Gorges" > > > > <carlos.gorges@ ...> escreveu > > > > > > > >> > > > >> Boa tarde, > > > >> > > > >> O nologging irá desligar parte da geração do redolog, incluindo os > > > >> blocos de dados alterados no DML. Como esses dados ficarão em > memória > > > >> até ser descarregados para os datafiles em um checkpoint e não > estão > > > >> em redo (disco), em caso de crash na máquina/banco os dados em > > memória > > > >> (SGA->Buffer cache) serão perdidos e consequentemente esses blocos > > > >> alterados também serão perdidos. O resultado será um segmento > em uma > > > >> versão (SCN) anterior ou parcial... Note que se algum datafile seja > > > >> corrompido, por bug ou problema no subsistema de I/O por exemplo, o > > > >> log não vai adiantar nada de qualquer modo... > > > >> > > > >> Em resumo: não há recuperação :-) > > > >> > > > >> cya[]; > > > >> Carlos E. Gorges <carlos.gorges@ ...> > > > >> > > > >> 2009/2/3 Alexandre Brum <alexandre_brum@ ...>: > > > >> > Prezados > > > >> > > > > >> > Durante um processo de carga pretendo colocar a tablespace desse > > > > usuário da > > > >> > carga em no logging para agilizar a carga. Entretanto, tenho > > > > dúvidas de como > > > >> > seria a recuperação dessa tablespace, se por algum motivo, > durante > > > > a carga, > > > >> > os datafiles dessa tablespace se corrompam. Como seria a > > > > recuperação dessa > > > >> > tablespace? > > > >> > > > > >> > Muito obrigado. > > > >> > Fique com Deus. > > > >> > Um grande abraço. > > > >> > > > > >> > Att. > > > >> > Alexandre Brum > > > > > > > > > > > > Veja quais são os assuntos do momento no Yahoo! +Buscados > > > http://br.maisbusca dos.yahoo. com > > > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > > > > > > > > Veja quais são os assuntos do momento no Yahoo! +Buscados > http://br.maisbuscados.yahoo.com > > [As partes desta mensagem que não continham texto foram removidas] >