Pedro F. Carvalho Analista de Sistemas [email protected] Problemas Ao atrasar o horário do servidor em 1 hora, e não realizar os procedimentos corretos para efetuar essa atividade, pode trazer diversos impactos ao banco de dados Oracle. E esses impactos podemos listar abaixo: • • • • • • • • • Sobreescrita na geração dos Archived Logs; Problemas de comunicação com o LISTENER do Oracle Server; Problemas de novos registros incluídos atráves da aplicação ou processos de ETL, pois se esses registros trabalham com funções de data como SYSDATE, TIMESTAMP ou SYSTIMESTAMP, podem ser invalidadas por primarys keys e constraints de check no modelo e banco de dados; Para ambientes RAC (Real Application Cluster), mudar o horário pode trazer diversos problemas, desde o CRS (Cluster Registry Services), LISTENER e InterConnect, pois podem ocorrer sobreescritas na gravação dos logs e sincronização dos nós; Para ambientes DataGuard ou Stand-by, podem ocorrer problemas também com sobreescritas dos redo logs, onde pode causar problemas e até mesmo erros do kernel do Oracle Server gerando os ORA-600; Problemas nas mensagens gravadas no alert.log; Problemas no agendamento de JOBS no banco de dados, que seja feito por DBMS_JOB ou DBMS_SCHEDULER; Se ocorre a sobreescrita dos archived logs, terá problemas com o Point-inTime-Recovery do seu banco de dados, e com isso, uma simples troca do horário pode ser uma catástrofe em seu backup e recover; Pode ocorrer problemas com o JVM do Oracle; Todos os impactos citados acima, estão resumidos e que podem ser afetados de imediato, existem outros impactos que podem aparecer depois de 2 ou 3 dias e até mesmo semanas. E para não correr esse risco, existe um procedimento bem básico para os DBAs. Procedimento Antes de realizar a troca do horário do servidor e futuramente do banco de dados, siga os procedimentos abaixo: 1. Realizar um backup full do banco de dados. 2. Parar os serviços do Listener, exemplo: lsnrctl stop ou lsnrctl <nome_listener> stop; 3. Parar o banco de dados, com shutdown immediate, normal ou transactional.; 4. Para ambiente Windows: Depois que descer o banco de dados pelo SQL*PLUS, descer o serviço do windows, exemplo: net stop OracleService<nome_da_base>; 5. Anotar o horário de STOP GERAL, para saber com exatidão o momento da parada de todos os serviços; 6. Alterar o horário do servidor (Windows\Linux\Unix); 7. Após a troca do horário no servidor, esperar 1 hora para subir os bancos. Exemplo, se meu STOP GERAL foi as 00:05AM (antes da troca), anoto esse valor e espero 1 hora, realizo a troca do horário e quando for 01:05AM, meu horário será atrasado para 00:05AM novamente (ajuste para o fim do horário de verão), e a partir desse horário posso subir todos os serviços novamente a partir do horário que desceu, deste modo não regresso no tempo. Pedro F. Carvalho Analista de Sistemas [email protected] 8. Subir todos os serviços novamento, pode ser pela ordem BANCO DE DADOS -> LISTENER -> APLICAÇÃO. E pronto! Já estamos com nossos horários ajustados para o horário de Brasilia (Oficial Brasileiro). Recomendação Nunca deixem os servidores de banco de dados com o ajuste de horário de verão automático, pois a cada ano, as datas são de início e fim podem sofrer alterações e seja necessário patchs para os novos ajustes e fora que isso, pode trazer todos os problemas citados acima no banco de dados, então faça sempre manualmente.