{"id":3714,"date":"2015-12-17T14:45:13","date_gmt":"2015-12-17T16:45:13","guid":{"rendered":"http:\/\/www.fabriciolima.net\/blog\/?p=3714"},"modified":"2016-07-23T22:20:54","modified_gmt":"2016-07-24T01:20:54","slug":"corrupcao-de-dados-incorrect-pfs-free-space-information","status":"publish","type":"post","link":"https:\/\/fabriciolima.net\/blog\/2015\/12\/17\/corrupcao-de-dados-incorrect-pfs-free-space-information\/","title":{"rendered":"Corrup\u00e7\u00e3o de Dados: Incorrect PFS free space information"},"content":{"rendered":"<p>Ol\u00e1 Pessoal,<\/p>\n<p>Essa semana iniciei mais uma <a href=\"https:\/\/www.fabriciolima.net\/blog\/consultoria-remota\/\" target=\"_blank\">Consultoria Remota<\/a> em um cliente e uma das atividades mais importante desse servi\u00e7o \u00e9 criar uma rotina para validar diariamente se existe corrup\u00e7\u00e3o nos bancos. Na grande maioria das vezes o banco est\u00e1 abandonado e n\u00e3o tem uma rotina dessa.<\/p>\n<p>Ao executar essa valida\u00e7\u00e3o, peguei o erro abaixo em uma das bases de dados:<\/p>\n<p><span style=\"color: #ff0000;\">Executed as user: XXXX. Incorrect PFS free space information for page (1:9434) in object ID 1458104235, <\/span><br \/>\n<span style=\"color: #ff0000;\">index ID 0, partition ID 72057594051100672, alloc unit ID 72057594055229440 (type In-row data). <\/span><br \/>\n<span style=\"color: #ff0000;\">Expected value 80_PCT_FULL, actual value 50_PCT_FULL. [SQLSTATE 42000] (Error 8914)<\/span><\/p>\n<p><span style=\"color: #ff0000;\">CHECKDB found 0 allocation errors and 1 consistency errors in table &#8216;XXXX&#8217;\u00a0<\/span><\/p>\n<p><span style=\"color: #ff0000;\">CHECKDB found 0 allocation errors and 1 consistency errors in database &#8216;XXXX&#8217;<\/span><\/p>\n<p><span style=\"color: #ff0000;\">repair_allow_data_loss is the minimum repair level for the errors found by DBCC CHECKDB<\/span><\/p>\n<p>__________<\/p>\n<p>Antes de sair executando\u00a0repair_allow_data_loss, dei uma pesquisada sobre o erro.<\/p>\n<p>Esse erro n\u00e3o \u00e9 exatamente de dados corrompidos. Segundo meu amigo <a href=\"https:\/\/social.msdn.microsoft.com\/Forums\/sqlserver\/en-US\/e34bbbab-6413-4377-9bcb-29abb9af543d\/dbcc-checkdb-errors?forum=sqldisasterrecovery\" target=\"_blank\">Paul Randal<\/a>, isso quer dizer que a informa\u00e7\u00e3o dessa p\u00e1gina (1:9434), na <strong>PFS (Page Free Space)<\/strong>, \u00a0est\u00e1 com um valor errado para a quantidade de espa\u00e7o livre que ela tem. Essa p\u00e1gina tem 50% de espa\u00e7o livre ao inv\u00e9s dos 80% informado na PFS.<\/p>\n<p>O Repair iria apenas corrigir essa configura\u00e7\u00e3o de espa\u00e7o livre, mas teria que deixar a base em single user mode (offline).<\/p>\n<p>Isso normalmente ocorre com bases que s\u00e3o migradas do SQL 2000, onde existiam alguns bugs no algoritmo que gerava essa informa\u00e7\u00e3o.<\/p>\n<p>Olhando o erro \u00e9 poss\u00edvel ver que ele estava afetando uma tabela:<\/p>\n<p><span style=\"color: #ff0000;\">CHECKDB found 0 allocation errors and 1 consistency errors in table &#8216;XXXX&#8217;\u00a0<\/span><\/p>\n<p>Como eu n\u00e3o queria deixar a base OFFLINE, pois a tabela com problema era bem pequena, fiz os procedimentos abaixo:<\/p>\n<p>1) Gerei o script dessa tabela e criei com outro nome (lembre de manter \u00edndices, identity e constraints)<\/p>\n<p>2) Migrei os dados da tabela com erro para a nova tabela<\/p>\n<p>3) Exclu\u00ed a tabela que estava dando erro<\/p>\n<p><strong><span style=\"color: #008000;\">Feito isso, o CHECKDB executou novamente sem nenhum problema.<\/span><\/strong><\/p>\n<p>Mais um caso de erro no CHECKDB para contar aos netos. E eles est\u00e3o ficando bem constantes nesse meu trabalho de consultor SQL Server.<\/p>\n<p>At\u00e9 o pr\u00f3ximo erro.<\/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\">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, Essa semana iniciei mais uma Consultoria Remota em um cliente e uma das atividades mais importante desse servi\u00e7o \u00e9 criar uma rotina para validar diariamente se existe corrup\u00e7\u00e3o nos bancos. Na grande maioria das vezes o banco est\u00e1 abandonado e n\u00e3o tem uma rotina dessa. Ao executar essa valida\u00e7\u00e3o, peguei o erro abaixo [&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,373,991,33,280],"tags":[1205,1151,1210,1179,954,1012,1011,1220,1216,1219,1208,942,1114,373,1206,422,250,23,24,1215,1218,1222,1214,1217,1154,1204,1213,1203,1153,1212,1209,1211,1152,1207,1150,33,385,1221],"class_list":["post-3714","post","type-post","status-publish","format-standard","hentry","category-administracao-de-bd","category-casos-do-dia-a-dia","category-consultoria-sql-server","category-corrupcao-de-dados","category-dba-remoto","category-sql-server","category-virtual-pass-br","tag-actual-value","tag-alertas-banco-de-dados","tag-allocation-error","tag-attach","tag-backup","tag-base-corrompida","tag-checkdb","tag-checkdb-error","tag-checkdb-found-allocation-errors","tag-checkdb-repair","tag-consistence-error","tag-consultoria-sql-server","tag-corrupcao","tag-corrupcao-de-dados","tag-corrupcao-sql-server","tag-corruption","tag-database-corruption","tag-dba","tag-dbcc-checkdb","tag-dbcc-checkdb-consistency-errors","tag-dbcc-checkdb-example","tag-dbcc-checkdb-repair_fast","tag-dbcc-checkdb-repair_rebuild","tag-dbcc-checkdb-with-no_infomsgs-dbcc-checkdb-repair_allow_data_loss","tag-especialista-banco-de-dados","tag-expected-value-80_pct_full","tag-how-to-fix-dbcc-checkdb-errors","tag-incorrect-pfs-free-space-information","tag-problema-sql-server","tag-repair-checkdb","tag-repair-database","tag-repair-dbcc","tag-repair_allow_data_loss","tag-repair_rebuild","tag-restore","tag-sql-server","tag-suspect_pages","tag-what-does-dbcc-checkdb-do"],"jetpack_featured_media_url":"","jetpack-related-posts":[{"id":942,"url":"https:\/\/fabriciolima.net\/blog\/2011\/08\/15\/casos-do-dia-a-dia-corrupcao-de-dados-e-database-suspect\/","url_meta":{"origin":3714,"position":0},"title":"Casos do Dia a Dia: Corrup\u00e7\u00e3o de Dados e Database Suspect","author":"Fabr\u00edcio Lima","date":"15 de agosto de 2011","format":false,"excerpt":"Fala Pessoal, Gostaria de fazer deste post como se fosse uma thread de um f\u00f3rum com uma discus\u00e3o sobre alta disponibilidade no SQL Server. S\u00e1bado, dia 13\/08 eu tive um problema em uma database que deixa qualquer DBA com o cora\u00e7\u00e3o disparado(DBA n\u00e3o pode ter problema card\u00edaco!!!). Uma database de\u2026","rel":"","context":"Em &quot;Casos do Dia a Dia&quot;","block_context":{"text":"Casos do Dia a Dia","link":"https:\/\/fabriciolima.net\/blog\/category\/sql-server\/casos-do-dia-a-dia\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":564,"url":"https:\/\/fabriciolima.net\/blog\/2011\/03\/17\/casos-do-dia-a-dia-erro-ao-executar-o-comando-dbcc-checkdb\/","url_meta":{"origin":3714,"position":1},"title":"Casos do Dia a Dia: Erro ao executar o comando DBCC CHECKDB","author":"Fabr\u00edcio Lima","date":"17 de mar\u00e7o de 2011","format":false,"excerpt":"Casos do Dia a Dia: Erro ao executar o comando DBCC CHECKDB","rel":"","context":"Em &quot;Casos do Dia a Dia&quot;","block_context":{"text":"Casos do Dia a Dia","link":"https:\/\/fabriciolima.net\/blog\/category\/sql-server\/casos-do-dia-a-dia\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1046,"url":"https:\/\/fabriciolima.net\/blog\/2011\/11\/07\/casos-do-dia-a-dia-databases-online-e-inacessiveis-para-select\/","url_meta":{"origin":3714,"position":2},"title":"Casos do Dia a Dia &#8211; Databases ONLINE e inacess\u00edveis para SELECT","author":"Fabr\u00edcio Lima","date":"7 de novembro de 2011","format":false,"excerpt":"Fala Pessoal, O tempo est\u00e1 bem curto e por isso faz tempo que n\u00e3o posto por aqui. Semana passada passei por um problema e gostaria de deixar registrado aqui para voc\u00eas. Possuo um servidor SQL Server de homologa\u00e7\u00e3o que \u00e9 virtualizado. Algumas databases menores ficam dentro do pr\u00f3prio VHD e\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":2534,"url":"https:\/\/fabriciolima.net\/blog\/2013\/12\/11\/casos-do-dia-a-dia-databases-em-modo-suspect-e-pendente-recovery\/","url_meta":{"origin":3714,"position":3},"title":"Casos do Dia a Dia &#8211; Databases em modo Suspect e Pendente Recovery","author":"Fabr\u00edcio Lima","date":"11 de dezembro de 2013","format":false,"excerpt":"Ol\u00e1 Pessoal, Compartilhando mais uma experi\u00eancia do meu Dia a Dia com voc\u00eas (fazia tempo que n\u00e3o fazia um post assim), tive um problema em um servidor onde o servi\u00e7o do SQL Server foi iniciado sem que a LUN onde estavam as bases de usu\u00e1rios tivesse dispon\u00edvel para utiliza\u00e7\u00e3o. Pouco\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":77,"url":"https:\/\/fabriciolima.net\/blog\/2010\/10\/08\/casos-do-dia-a-dia-database-em-modo-suspect\/","url_meta":{"origin":3714,"position":4},"title":"Casos do Dia a Dia: Database em modo Suspect","author":"Fabr\u00edcio Lima","date":"8 de outubro de 2010","format":false,"excerpt":"Gostaria de compartilhar com voc\u00eas uma experi\u00eancia que tive no ambiente de banco de dados que administro. Realizando um boot em um dos meus servidores SQL Server devido as atualiza\u00e7\u00f5es de seguran\u00e7a do windows, uma de minhas databases subiu em modo Suspect. Como essa database \u00e9 restaurada diariamente do servidor\u2026","rel":"","context":"Em &quot;Casos do Dia a Dia&quot;","block_context":{"text":"Casos do Dia a Dia","link":"https:\/\/fabriciolima.net\/blog\/category\/sql-server\/casos-do-dia-a-dia\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1070,"url":"https:\/\/fabriciolima.net\/blog\/2011\/12\/05\/casos-do-dia-a-dia-e-mails-de-eventos-com-erros-criticos-no-banco-de-dados\/","url_meta":{"origin":3714,"position":5},"title":"Casos do Dia a Dia &#8211; E-mails de eventos com erros cr\u00edticos no Banco de Dados","author":"Fabr\u00edcio Lima","date":"5 de dezembro de 2011","format":false,"excerpt":"Fala Pessoal, Na semana passada passei por uma experi\u00eancia que gostaria de compartilhar aqui no Blog. Em meus servidores SQL Server, eu configuro o envio de alertas quando acontece algum erro com severidade entre 20 e 25 (cr\u00edticos). Um certo dia, precisei reiniciar o servi\u00e7o do SQL Server. Como n\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\/2011\/12\/EventLogCorrupt.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2011\/12\/EventLogCorrupt.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2011\/12\/EventLogCorrupt.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2011\/12\/EventLogCorrupt.png?resize=700%2C400&ssl=1 2x"},"classes":[]}],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/posts\/3714","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=3714"}],"version-history":[{"count":0,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/posts\/3714\/revisions"}],"wp:attachment":[{"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/media?parent=3714"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/categories?post=3714"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/tags?post=3714"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}