{"id":3022,"date":"2014-06-16T08:37:14","date_gmt":"2014-06-16T10:37:14","guid":{"rendered":"http:\/\/fabriciolima.net\/blog\/?p=3022"},"modified":"2018-07-18T18:18:44","modified_gmt":"2018-07-18T21:18:44","slug":"cliente-diz-tenho-backups-e-meu-banco-esta-seguro-sera","status":"publish","type":"post","link":"https:\/\/fabriciolima.net\/blog\/2014\/06\/16\/cliente-diz-tenho-backups-e-meu-banco-esta-seguro-sera\/","title":{"rendered":"Cliente diz: &#8220;Tenho Backups e meu banco est\u00e1 seguro&#8221;. Ser\u00e1???"},"content":{"rendered":"<p>Ol\u00e1 Pessoal,<\/p>\n<p>O objetivo desse post \u00e9 fazer um alerta a todos voc\u00eas que s\u00e3o respons\u00e1veis por um banco de dados SQL Server, seja voc\u00ea um desenvolvedor, um analista de banco de dados, um coordenador ou gerente de TI.<\/p>\n<p>J\u00e1 atendi muitos clientes na minha <a href=\"https:\/\/www.fabriciolima.net\/blog\/consultoria-remota\/\" target=\"_blank\" rel=\"noopener\">Consultoria SQL Server<\/a> que contrataram um pacote de Tuning comigo, mas n\u00e3o quiseram contratar o pacote de reestrutura\u00e7\u00e3o das rotinas de backups e alertas, pois ele j\u00e1 tinha um backup rodando no banco de dados ou tinha um servidor na nuvem onde existe uma garantia de alta disponibilidade do servidor virtual ou por outros motivos.<\/p>\n<p><span style=\"color: #ff0000;\">Acontece que mesmo com uma excelente rotina de backups voc\u00ea pode perder dados no SQL Server.<\/span> Isso n\u00e3o \u00e9 um problema exclusivo do SQL Server, dados tamb\u00e9m podem se corromper nos outros SGBDs do mercado (Oracle, DB2 e etc).<\/p>\n<p>Em um exemplo real, um cliente me ligou pedindo ajuda depois que sua base estava corrompida. Ao fazer uma an\u00e1lise do n\u00edvel de corrup\u00e7\u00e3o desse cliente, n\u00e3o seria poss\u00edvel recuperar essa base, pois p\u00e1ginas de estruturas internas da \u00fanica tabela existente na base estavam corrompidas. Nem o comando CHECKDB com\u00a0REPAIR_ALLOW_DATA_LOSS era poss\u00edvel ser executado nessa base dado o n\u00edvel de corrup\u00e7\u00e3o. <em>Solicitei os backups ao cliente e ele disse que tinha apenas um backup feito na semana anterior, mas que j\u00e1 tinha restaurado e o backup tamb\u00e9m j\u00e1 estava com a base corrompida.<\/em><\/p>\n<p><span style=\"color: #ff0000;\"><strong>Nesse caso, o backup era executado com sucesso, mas a base possu\u00eda p\u00e1ginas corrompidas.\u00a0<\/strong><\/span>A \u00fanica solu\u00e7\u00e3o poss\u00edvel foi realizar um SELECT nos dados que ainda estavam sendo retornados e inserir esses dados em uma nova Base\/Tabela.<\/p>\n<p><span style=\"color: #ff0000;\"><strong>Resultado: Perda de dados para a empresa.<\/strong><\/span><\/p>\n<p><strong>Imagina se isso acontece com o banco de dados da sua empresa e com a tabela mais importante que existe?<\/strong><\/p>\n<p>Outro caso real e mais grave \u00e9 contado pelo <a href=\"http:\/\/www.sqlskills.com\/blogs\/paul\/\" target=\"_blank\" rel=\"noopener\">Paul Randal<\/a>\u00a0(cara que escreveu o CHECKDB). Um Banco dos EUA teve um problema de corrup\u00e7\u00e3o em um \u00edndice nonclustered. A princ\u00edpio essa \u00e9 uma corrup\u00e7\u00e3o simples de resolver, mas o DBA tomou uma s\u00e9rie de a\u00e7\u00f5es erradas que aumentou ainda mais o problema. Chamaram o Paul Randal e ap\u00f3s an\u00e1lise do ambiente ele pediu os backups para recuperar a base. O Banco tinha um backup FULL de 4 meses atr\u00e1s e backups do Log at\u00e9 o dia do problema, tudo em fita.\u00a0Milagrosamente, todos os backups foram restaurados com sucesso, mas o banco ficou parado por 2 dias para concluir essa opera\u00e7\u00e3o. Os clientes que n\u00e3o conseguiram tirar extratos ou sacar seu dinheiro por dois dias mudaram de banco e logo em seguida o banco quebrou.<\/p>\n<p><strong><span style=\"color: #ff0000;\">Resultado: Empresa falida e com uma contribui\u00e7\u00e3o significativa do DBA. Para verem o poder que esse profissional tem em m\u00e3os e muitas vezes isso n\u00e3o \u00e9 valorizado at\u00e9 que um desastre como esse aconte\u00e7a.<\/span><\/strong><\/p>\n<p>Mas o que pode ser feito para evitar ou amenizar esses problemas de corrup\u00e7\u00e3o?<\/p>\n<ul>\n<li>A primeira dica \u00e9 cuidar muito bem do seu sistema de I\/O (discos, drives, controladoras e etc).<\/li>\n<li>Cuidar do seu fornecimento de energia para evitar quedas inesperadas do seu servidor.<\/li>\n<li>Monitorar a tabela suspect_pages no MSDB.<\/li>\n<li>Monitorar os alertas 823, 824 e 825.<\/li>\n<li>Executar o CHECKDB com a maior frequencia poss\u00edvel, mas em hor\u00e1rios n\u00e3o produtivos pois \u00e9 um procedimento muito pesado. Em caso de encontrar uma corrup\u00e7\u00e3o, um alerta deve ser enviado imediatamente.<\/li>\n<li>Ter um Database Mirroring ou AlwaysOn\u00a0Availability Groups\u00a0configurado. Como essas tecnologias replicam log de transa\u00e7\u00e3o, uma corrup\u00e7\u00e3o de p\u00e1gina n\u00e3o \u00e9 replicada para os servidores secund\u00e1rios. Al\u00e9m disso, em alguns casos, a p\u00e1gina corrompida \u00e9 recuperada automaticamente do servidor secund\u00e1rio para o servidor prim\u00e1rio. \u00a0Isso j\u00e1 seria um grande motivo para convencer seu gerente a investir nessas tecnologias.<\/li>\n<li>Ter uma rotina de backup adequada com backups redundantes e realizar testes de restore com esses backups. N\u00e3o adianta ter backup e o mesmo n\u00e3o funcionar na hora de restaurar por estar corrompido.<\/li>\n<\/ul>\n<p>Evitar 100% uma corrup\u00e7\u00e3o n\u00e3o \u00e9 poss\u00edvel, mas voc\u00ea deve ter meios de identificar essa corrup\u00e7\u00e3o o mais r\u00e1pido poss\u00edvel para poder atuar e diminuir os impactos causados por essa corrup\u00e7\u00e3o.<\/p>\n<p><strong>Corrup\u00e7\u00f5es em banco de dados acontecem com mais frequ\u00eancia do que imaginamos<\/strong>, basta dar uma busca nos f\u00f3runs que encontrar\u00e1 v\u00e1rias threads com algu\u00e9m solicitando ajuda em uma corrup\u00e7\u00e3o. Tamb\u00e9m vejo esses relatos em muitas listas de e-mail e agora at\u00e9 dos clientes que atendo como consultoria.<\/p>\n<p>Para finalizar esse post, <strong>se voc\u00ea \u00e9 respons\u00e1vel pela TI da sua empresa<\/strong>, possui um banco SQL Server e n\u00e3o tem ningu\u00e9m com conhecimento para administr\u00e1-lo, <strong>voc\u00ea tem duas op\u00e7\u00f5es<\/strong>:<\/p>\n<ul>\n<li>Contratar um especialista SQL Server para analisar seu ambiente e criar os procedimentos necess\u00e1rios para alertar rapidamente em caso de corrup\u00e7\u00e3o.<\/li>\n<li>Treinar um de seus colaboradores para que possam realizar essas tarefas de administra\u00e7\u00e3o do ambiente.<\/li>\n<\/ul>\n<p>Espero ter contribu\u00eddo para evitar que esse problema aconte\u00e7a com voc\u00eas. Corrup\u00e7\u00e3o \u00e9 o problema que mais me d\u00e1 medo nos bancos de dados SQL Server que sou respons\u00e1vel.<\/p>\n<p><strong>Para refletir:<\/strong><\/p>\n<p><em>Backups, Alertas e Monitoramento \u00e9 igual seguro de carro, tenho seguro de carro h\u00e1 5 anos e nunca usei, contudo, o dia que meu carro for roubado, minhas perdas ser\u00e3o m\u00ednimas. Eu pago o seguro para ficar mais tranquilo.<\/em><\/p>\n<p><em>O mesmo vale para um banco de dados de uma empresa que vale muito mais que um carro. Seu banco de dados pode estar h\u00e1 5 anos sem nenhum problema, contudo, o dia que acontecer um problema grave e voc\u00ea n\u00e3o estiver preparado, suas perdas podem ser muito maiores do que seria se seu carro fosse roubado.<\/em><\/p>\n<p><em>Vale a pena fazer um \u201cseguro\u201d do banco de dados da sua empresa?<\/em><\/p>\n<p><b>Gostou desse Post?<\/b><\/p>\n<p>Cadastre seu e-mail para receber novos Posts e curta minha <a href=\"https:\/\/www.facebook.com\/FabricioLimaSolucoesemBancodeDados\/\" target=\"_blank\" rel=\"noopener\">P\u00e1gina no Facebook<\/a> para receber Dicas de Leituras e Eventos sobre SQL Server.<\/p>\n<p>Abra\u00e7os,<\/p>\n<p>Fabr\u00edcio Lima<\/p>\n<p>MCITP \u2013 Database Administrator<\/p>\n<p>Consultor e Instrutor SQL Server<\/p>\n<p>Trabalha com SQL Server desde 2006<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ol\u00e1 Pessoal, O objetivo desse post \u00e9 fazer um alerta a todos voc\u00eas que s\u00e3o respons\u00e1veis por um banco de dados SQL Server, seja voc\u00ea um desenvolvedor, um analista de banco de dados, um coordenador ou gerente de TI. J\u00e1 atendi muitos clientes na minha Consultoria SQL Server que contrataram um pacote de Tuning comigo, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[3,6,942,991,33,280],"tags":[1151,954,1011,942,1114,422,23,1154,1153,1152,1150,33,385],"class_list":["post-3022","post","type-post","status-publish","format-standard","hentry","category-administracao-de-bd","category-casos-do-dia-a-dia","category-consultoria-sql-server","category-dba-remoto","category-sql-server","category-virtual-pass-br","tag-alertas-banco-de-dados","tag-backup","tag-checkdb","tag-consultoria-sql-server","tag-corrupcao","tag-corruption","tag-dba","tag-especialista-banco-de-dados","tag-problema-sql-server","tag-repair_allow_data_loss","tag-restore","tag-sql-server","tag-suspect_pages"],"jetpack_featured_media_url":"","jetpack-related-posts":[{"id":3628,"url":"https:\/\/fabriciolima.net\/blog\/2015\/11\/12\/casos-do-dia-a-dia-corrupcao-de-dados-alertas-backup-log-dba-salvo\/","url_meta":{"origin":3022,"position":0},"title":"Casos do Dia a Dia: Corrup\u00e7\u00e3o de dados + Alertas + Backup Log = DBA Salvo!","author":"Fabr\u00edcio Lima","date":"12 de novembro de 2015","format":false,"excerpt":"Ol\u00e1 Pessoal, Estou aqui para compartilhar com voc\u00eas mais um caso do dia a dia que aconteceu comigo no dia de ontem. Estava eu feliz da vida trabalhando em meu home office, quando recebi um e-mail de alerta indicando corrup\u00e7\u00e3o de dados em um dos meus 12 clientes que realizo\u2026","rel":"","context":"Em &quot;Administra\u00e7\u00e3o de Banco de Dados&quot;","block_context":{"text":"Administra\u00e7\u00e3o de Banco de Dados","link":"https:\/\/fabriciolima.net\/blog\/category\/sql-server\/administracao-de-bd\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":3305,"url":"https:\/\/fabriciolima.net\/blog\/2015\/03\/11\/casos-do-dia-a-dia-mais-um-caso-real-de-perdas-de-dados-em-uma-empresa\/","url_meta":{"origin":3022,"position":1},"title":"Casos do Dia a Dia: Mais um caso real de perdas de dados em uma Empresa","author":"Fabr\u00edcio Lima","date":"11 de mar\u00e7o de 2015","format":false,"excerpt":"Ol\u00e1 Pessoal, Um cliente me procurou dizendo que precisava muito da minha ajuda pois estava com um problema grave no SQL Server. Ele teve um problema com o servidor e s\u00f3 conseguiu salvar os arquivos .mdf e .ldf da base de dados. Contudo, ao tentar dar um attach nesses arquivos,\u2026","rel":"","context":"Em &quot;Administra\u00e7\u00e3o de Banco de Dados&quot;","block_context":{"text":"Administra\u00e7\u00e3o de Banco de Dados","link":"https:\/\/fabriciolima.net\/blog\/category\/sql-server\/administracao-de-bd\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2015\/03\/Attach.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":2281,"url":"https:\/\/fabriciolima.net\/blog\/2013\/08\/20\/detalhes-da-minha-consultoria-sql-server\/","url_meta":{"origin":3022,"position":2},"title":"Detalhes da minha Consultoria SQL Server","author":"Fabr\u00edcio Lima","date":"20 de agosto de 2013","format":false,"excerpt":"Ol\u00e1 Pessoal, Como \u00e9 poss\u00edvel ver no banner do Blog, realizo um servi\u00e7o de consultoria remota conforme descrito nessa p\u00e1gina: Consultoria Remota Ap\u00f3s receber o feedback abaixo de um cliente de S\u00e3o Paulo, verifiquei que existia uma necessidade de dar mais detalhes do meu trabalho para que possa atrair mais\u2026","rel":"","context":"Em &quot;Carreira&quot;","block_context":{"text":"Carreira","link":"https:\/\/fabriciolima.net\/blog\/category\/carreira\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2013\/08\/FeedbackConsultoria1.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":3129,"url":"https:\/\/fabriciolima.net\/blog\/2014\/11\/03\/treinamento-sql-server-tarefas-do-dia-a-dia-de-um-dba\/","url_meta":{"origin":3022,"position":3},"title":"Treinamento SQL Server: Tarefas do dia a dia de um DBA","author":"Fabr\u00edcio Lima","date":"3 de novembro de 2014","format":false,"excerpt":"\u00a0 Ol\u00e1 Pessoal, Um amigo quer entrar para a \u00e1rea de administra\u00e7\u00e3o de banco de dados e me solicitou um treinamento que abordasse as atividades de um DBA no seu dia a dia de trabalho. Diante disso, resolvi preparar um treinamento para ele, mas abrirei o treinamento para mais 4\u2026","rel":"","context":"Em &quot;Administra\u00e7\u00e3o de Banco de Dados&quot;","block_context":{"text":"Administra\u00e7\u00e3o de Banco de Dados","link":"https:\/\/fabriciolima.net\/blog\/category\/sql-server\/administracao-de-bd\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2014\/11\/Treinamento.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":3413,"url":"https:\/\/fabriciolima.net\/blog\/2015\/06\/08\/consultoria-sql-server-marca-de-50-clientes-atingida\/","url_meta":{"origin":3022,"position":4},"title":"Consultoria SQL Server: Marca de 50 clientes atingida!!!","author":"Fabr\u00edcio Lima","date":"8 de junho de 2015","format":false,"excerpt":"Ol\u00e1 Pessoal, Esse \u00e9 um post r\u00e1pido para compartilhar com voc\u00eas que a Fabricio Lima Solu\u00e7\u00f5es em BD chega ao seu cliente de n\u00famero 50!!! \u00c9 isso mesmo, 50 clientes!!! Atualmente (Jun\/2015), temos\u00a010 clientes fixos com contratos mensais de suporte e monitoramento do banco de dados e outros 40 clientes\u2026","rel":"","context":"Em &quot;Carreira&quot;","block_context":{"text":"Carreira","link":"https:\/\/fabriciolima.net\/blog\/category\/carreira\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2015\/06\/50Clientes.jpg?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":7491,"url":"https:\/\/fabriciolima.net\/blog\/2017\/03\/10\/podcast-databasecast-76-manutencao-de-banco-de-dados\/","url_meta":{"origin":3022,"position":5},"title":"Podcast DatabaseCast 76: Manuten\u00e7\u00e3o de Banco de Dados","author":"Fabr\u00edcio Lima","date":"10 de mar\u00e7o de 2017","format":false,"excerpt":"\u00a0 Fala Pessoal, Hoje quero compartilhar mais uma novidade com voc\u00eas. Sempre fui um ouvinte do podcast DatabaseCast, o Mauro Pichiliani (Twitter | Blog) e o Wagner Crivelini (@wcrivelini) mandam muito bem nesse podcast\u00a0que j\u00e1 est\u00e1 na edi\u00e7\u00e3o 76. O Wagner assistiu minha palestra no \u00faltimo SQL Saturday em S\u00e3o\u2026","rel":"","context":"Em &quot;Administra\u00e7\u00e3o de Banco de Dados&quot;","block_context":{"text":"Administra\u00e7\u00e3o de Banco de Dados","link":"https:\/\/fabriciolima.net\/blog\/category\/sql-server\/administracao-de-bd\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2017\/03\/databasecast.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2017\/03\/databasecast.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2017\/03\/databasecast.jpg?resize=525%2C300&ssl=1 1.5x"},"classes":[]}],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/posts\/3022","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/comments?post=3022"}],"version-history":[{"count":2,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/posts\/3022\/revisions"}],"predecessor-version":[{"id":9227,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/posts\/3022\/revisions\/9227"}],"wp:attachment":[{"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/media?parent=3022"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/categories?post=3022"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/tags?post=3022"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}