Pular para o conteúdo
  • Este tópico contém 11 respostas, 5 vozes e foi atualizado pela última vez 14 anos, 2 meses atrás por juniorbojr.
Visualizando 12 posts - 1 até 12 (de 12 do total)
  • Autor
    Posts
  • #102062
    juniorbojr
    Participante

      E ai pessoal tudo bem.

      Trabalho com o Oracle 10g Standard Edition
      Estou precisando criar um banco de dados standby Fail Over (sem utilizar o DataGuard).
      Na teoria sera um banco de dados em um outra maquina, no modo standby, que recebera de tempos em tempos o archives do banco de produção e fara a aplicacao. Mantendo banco como um espelho do de producao.

      Alguém já montou algum standby deste tipo?
      Teria alguma documentação, ou dica de como montar?

      Na internet encontrei muito pouco sobre o assunto, a maioria utiliza o DataGuard.

      Vlw

      #102063
      fabiogalera
      Participante

        Você pode facilmente montar um standby database sem usar as features do standby.

        O que você precisa fazer no geral é:

        • Backup de produção;
        • Transfere os backups para uma nova máquina;
        • Restore na Base de Dados nessa nova máquina;

        Depois disso, você irá precisar criar um script para enviar o archives de produção para o standby e depois no standby executar o recover no modo UNTIL CANCEL using backup controlfile, isso fará com que o standby faça o recover sem saber qual é o último archive …

        Na teoria o Oracle acreditará que é um restore simples e um recover de archive log, porém, você sempre irá fazer um recover, nunca irá abrir a Base de Dados (openresetlogs), sempre aplicará os Archives que virão de produção. Pensa como se fosse um duplicate database mas que nunca irá terminar =)

        obs: As duas máquinas precisam ser de mesmo sistema operativo e mesmo binários do Oracle.

        #102066
        msantino
        Participante

          @juniorbojr,

          É bem isso que o @fabiogalera falou. Usamos muito isso aqui na empresa e funciona tranquilo. Mas é muito importante acompanhar o ambiente de STDBY se os archives estão sendo aplicados corretamente, se há espaço suficiente nele pra o crescimento da base principal. Se não, quando precisar pode haver surpresa…

          #102075
          marlontk
          Participante

            Uso algo parecido aqui na empresa.

            Todo dia as 09:00 uma máquina(vm) minha copia o backup do rman e restaura todo o banco de dados nela, poderia fazer isso também apenas copiando os archives e aplicando, só que neste caso deve-se ter um cuidado para não perder nenhum archive senão todo o processo é invalidado necessitando toda volta do backup do rman novamente.

            E como o meu backup via rman não é tão grande (+- 6gb compactado) este processo não é tão demorado.

            Todo o processo é automatizado por crontab, mas deve se ter um cuidado para não termos surpresas.

            #102079
            fabiogalera
            Participante

              marlontk,

              Existe um meio de você fazer um backup incremental apartir de um SCN.
              Por exemplo se você perder os archives do SCN 100 ao 500, você pode ir na Primary fazer um backup incremental FROM SCN 100, cataloga ele no “Standby” e depois fazer o recovery usando ele.

              #102080
              juniorbojr
              Participante

                E ai Pessoal,

                Primeiramente agradeco pela ajuda.
                Para fazer um teste, a partir da desta ideia, criei em uma outra maquina-MV1 uma base BD1 que sera a minha base de producao e na MV2 que sera minha base standby.
                Em BD1 criei uma nova tabela para o usuario HR.
                Fiz a restauracao, com o RMAN na MV2 (com mesmo dbid, name).
                Ate aqui tudo bem.
                Inseri dados em MV1-BD1 e gerei os archives(alter system switch logfile;)
                Copiei os .ARC para MV2 e executei o comandos:
                run {
                set archivelog destination to ‘C:backup ..nomedoaquivo.arc’;
                restore archivelog all }

                Ocorreu o erro RMAN-20242: especificacao nao corresponde a nenhum log de arquivamento no catalogo de recuperacao.

                O que estou fazendo esta correto?

                #102081
                fabiogalera
                Participante

                  O comando que usou: RESTORE ARCHIVE ALL, irá restaurar os archives de um device para o disco e não fazer o recover propriamente dito.

                  Entre no RMAN e digite:

                  recover database using backup controlfile until cancel;

                  Enquanto vai pedindo os archives, vá especificando-os.

                  #102082
                  marlontk
                  Participante

                    @juniorbojr
                    Neste teu caso eu colocaria os archives na Recovery area.
                    No Rman apenas o recover database ja vai identificar os archives e ir aplicando sem precisar catalogar.
                    Isso porque apenas foram gerados novos archives e contando que o banco não seja aberto para read write senao os SCN deixarão de estar sincronizados.
                    Eu fasso isso e abro o banco em read only, possibilitando apenas comando select na base.

                    Este mesmo teste que voce fez eu ja fiz e funcionou.
                    Eu tinha criado um job para inserir em uma table registro e para testar o restore num determinado instante de tempo.

                    @fabiogalera
                    Este recurso eu nunca utilizei, mas em meu caso nao sei se funcionaria devido a eu não manter no server os archives logs e backusets por mais do que um dia. Apenas a posição da noite de todos os em fita.
                    Acho que sem estes dados o banco não vai ter onde consultar o que foi feito no banco desde e SCN 100 até o 500 se estes ja foram backupeados e nao se encontram mais disponiveis no server.

                    #102083
                    fabiogalera
                    Participante

                      Na verdade você terá que realizar um outro backup incremental para fazer isso.

                      Imagine a sua situação com uma base de dados de TB, colocando ela “online”, read only, você não poderia aplicar os archives, fazendo com que o GAP aumente a cada segundo que fica read only.

                      Com backups incrementais, você pode fazer recover no Standby. Se você já faz backup incremental, basta, antes de remover os pieces, copiá-los para a máquina do standby, catalogá-los (ou utiliza catalog centralizado).

                      O que eu fazia em meu trabalho era justamente isso, nossos backups eram via TDPO (Tivoli Data Protection), as Base de Dados ficavam abertas em read only todos os dias, de madrugada aplicacamos o recovery usando os mesmos devices de fita, TDPO, etc, usando os incrementais =).

                      #102092
                      juniorbojr
                      Participante

                        E ai pessoal,

                        Ainda estou com problemas ao restaurar a MV2 (base standby).

                        Apos restaurar o banco na MV2, copiei os Archivelog da MV1 para MV2 que estao na mesma estrutura (C:oracleproduct10.2.0flash_recovery_areaBD1ARCHIVELOG)

                        No sqlplus do MV2 estou aplicando os seguintes comandos:
                        1 – shutdown immediate;
                        2 – startup mount;
                        3 – recover database using backup controlfile until cancel;
                        Exibiu as mensagens:
                        ORA-00280: alterar 573953 para o thread 1 estao na sequencia #1
                        Especificar log: {(RET)=nome de arquiv | sugerido | AUTO | CANCEL}
                        Respondi AUTO
                        Exibiu as mensagens:
                        Log Aplicado
                        Recuperacao de Midia concluida.

                        4 – alter database open read only;

                        Fiz uma select na tabela nova que criei para verificar se o processo deu certo, mas resultou como tabela Não existe.

                        Acredito que ainda esta fazendo algo errado. Alguma dica?

                        Vlw

                        #102097
                        rman
                        Participante

                          @juniorbojr

                          Pela mensagem deu tudo certo…

                          Como você está verificando ? A tabela que você está verificando é de qual usuário ? Lembrando que se você estiver utilizando um usuário que não é dono o mesmo deve ter permissão de SELECT e na clausula FROM deve ser especificado o OWNER.

                          #102314
                          juniorbojr
                          Participante

                            E ai pessoal blz,

                            Primeiramente agradeço novamente os posts.

                            Devido ao erro anterior, decidi montar novamente a MV1 e MV2, e funcionou.

                            Segue um pequeno roteiro que montei.

                            Depois de instalar o MV1 fiz um backup do banco utilizando o RMAN.

                            Na MV2:
                            1 – Com o banco shutdown, defina o ORACLE_SID (set ORACLE_SID=ORCL)
                            2 – Conectar como rman target /;
                            3 – set dbid 123456789 (mesmo da base MV1)
                            4 – startup nomount;
                            5 – restore controlfile from ‘arquivo_backup_.bkp’;
                            6 – alter database mount;
                            7 – catalog backuppiece ‘arquivo_backup_.bkp;
                            8 – run (
                            set until scn 987654; — ultimo scn
                            restore database;
                            switch datafile all;
                            recover database;
                            }
                            9 – alter database open read only;

                            Base de dados restaurada.
                            Para atualizar os dados:
                            Copie os archivelog para MV2 e no RMAN faça:

                            10 – catalog start with ‘local_archivelogs’;
                            Se necessario:
                            10a – list archivelog all;
                            10b – crosscheck archivelog all;
                            10c – delete expired archivelog all;

                            Connect no SQLPLUS e faça:
                            11 – shutdown immediate;
                            12 – startup mount;
                            13 – recover database using backup controlfile until cancel;
                            responder: AUTO
                            14 – alter database open read only;

                            Pronto base de dados da MV2 atualizada.

                            Vlw pessoal pela ajuda….

                            Feliz Natal a todos e até mais….

                            Flw

                          Visualizando 12 posts - 1 até 12 (de 12 do total)
                          • Você deve fazer login para responder a este tópico.