Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как узнать что SQL сервер корректно загрузился?  [new]
Kaktus_
Member

Откуда: Ростов-на-Дону
Сообщений: 315
Описываю в двух словах ситуацию.
Имеется SQL Server 2000. RAID контроллеры с батарейками.
Сегодня была интересная ситуацию для парашюта на сервере с отключением сервера и он завершил работу некорректно. Видимо была проблема в том, что ИБП неправильно рассчитал свои силы и питание пропало раньше чем сервер корректно завершил работу.

После загрузки все было хорошо за исключеним того, что полетели индексы в таблице с историей джобов в msdb. Это мы увидели в протоколе событий сервера и при непосредственно интерактивном кнопании View Job History.
Индексы починили.
После этого было решено проверить базу на ошибки DBCC CHECKDB ('ИмяБазы')

Проверка показала
CHECKDB found 0 allocation errors and 0 consistency errors in database 'ИмяБазы'.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.

Т.е. получается что все в порядке.

В нашем случае системный администратор получил сообщение в контроллере
SmartArray P410 in Slot 2 had valid data stored in its battery/capacitor backed write cache the last time it was reset or was powered up. This indicates that the system may not have been shut down gracefully. The array controller has automatically writen, or has attempted to write, this data to the drives. This message will continue to be displayed untill the next reset or power-cycle of the array controller.

Насколько я понимаю - это сообщение просто говорит о том, что была использована память с батарейками и само по себе не является критичным. Я так понимаю что из-за этого индексы слетать не должны.

Вопрос в том как после отключения света (у нас бывает это раз в неделю хаотично) системному администратору понять что с базой все в порядке?

Я так понимаю что в логах sql сисадмин должен что-то увидеть что должно его насторожить и он должен не пускать пользователей в базу пока не запустит проверку?
Еще проблему сразу обозначу - база работает круглосуточно, а системные администраторы нет. После включения света и достижения батареями определенных процентов заряда - сервер включается и работа продолжается.
27 май 13, 11:23    [14352913]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать что SQL сервер корректно загрузился?  [new]
gang
Member

Откуда:
Сообщений: 1394
Kaktus_
После загрузки все было хорошо за исключеним того, что полетели индексы в таблице с историей джобов в msdb.

Что это значит. Что конкретно проверяли и какие тексты ошибок видели?
Kaktus_
Индексы починили.

Как чинили?
Kaktus_
После этого было решено проверить базу на ошибки DBCC CHECKDB ('ИмяБазы')

Для msdb CHECKDB прогоняли?

В первом приближении после рестарта SQL должен поднять все базы, т.е. как минимум выполнить для них процесс recovery. Его окончание знаменуется строчкой в Errorlog вида:2013-01-07 00:13:46.71 spid11s Recovery is complete. (Может немного отличаться по виду для Вашего 2000-ка). До этой строки в Errorlog могут быть "чудеса": ошибки подключения клиентов, конкуренции за файлы баз и т.п. После нее ошибок быть не должно, если есть - значит имеете проблем. Если есть подозрения на целостность БД - чекайте. Хотя бы CHECKALLOC и CHECKCATALOG за неимением в 2000 PHYSICAL_ONLY, но лучше полностью.
27 май 13, 12:53    [14353583]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать что SQL сервер корректно загрузился?  [new]
Kaktus_
Member

Откуда: Ростов-на-Дону
Сообщений: 315
Date	Source	Message
2013-05-26 08:48:32.01 	server	Logging SQL Server messages in file 'C:\Program Files (x86)\Microsoft SQL Serve'
2013-05-26 08:48:32.01 	server	Server Process ID is 1508.
2013-05-26 08:48:32.01 	server	All rights reserved.
2013-05-26 08:48:32.01 	server	Copyright (C) 1988-2002 Microsoft Corporation.
2013-05-26 08:48:32.01 	server	Microsoft SQL Server  2000 - 8.00.760 (Intel X86) ...
2013-05-26 08:48:32.09 	server	SQL Server is starting at priority class 'normal'(8 CPUs detected).
2013-05-26 08:48:32.17 	server	Address Windowing Extensions enabled.
2013-05-26 08:48:44.28 	server	Using dynamic lock allocation. [2500] Lock Blocks, [5000] Lock Owner Blocks.
2013-05-26 08:48:44.28 	server	SQL Server configured for thread mode processing.
2013-05-26 08:48:44.42 	server	Attempting to initialize Distributed Transaction Coordinator.
2013-05-26 08:48:45.37 	server	Failed to obtain TransactionDispenserInterface: Result Code = 0x8004d01b
2013-05-26 08:48:45.40 	spid3	Starting up database 'master'.
2013-05-26 08:48:46.10 	spid8	Starting up database 'msdb'.
2013-05-26 08:48:46.10 	spid5	Starting up database 'model'.
2013-05-26 08:48:46.10 	server	Using 'SSNETLIB.DLL' version '8.0.766'.
2013-05-26 08:48:46.10 	spid3	Server name is 'SERVERNAME'.
2013-05-26 08:48:46.14 	spid14	Starting up database 'ИмяБазы_260413'.
2013-05-26 08:48:46.14 	spid13	Starting up database 'OlapGlobal'.
2013-05-26 08:48:46.14 	spid12	Starting up database 'ОП Самара'.
2013-05-26 08:48:46.14 	spid11	Starting up database 'ИмяБазы'.
2013-05-26 08:48:46.14 	spid10	Starting up database 'Northwind'.
2013-05-26 08:48:46.14 	spid9	Starting up database 'pubs'.
2013-05-26 08:48:46.26 	server	SQL server listening on 127.0.0.1: 1433.
2013-05-26 08:48:46.26 	server	SQL server listening on 192.168.4.2: 1433.
2013-05-26 08:48:46.28 	spid5	Clearing tempdb database.
2013-05-26 08:48:46.42 	spid5	Starting up database 'tempdb'.
2013-05-26 08:48:46.51 	spid8	Recovery is checkpointing database 'msdb' (4)
2013-05-26 08:48:46.78 	spid12	Recovery of database 'ОП Самара' (8) is 0% complete (approximately 4 more secon
2013-05-26 08:48:46.78 	spid12	Analysis of database 'ОП Самара' (8) is 100% complete (approximately 0 more sec
2013-05-26 08:48:46.81 	spid12	19 transactions rolled forward in database 'ОП Самара' (8).
2013-05-26 08:48:46.81 	spid12	Recovery of database 'ОП Самара' (8) is 100% complete (approximately 0 more sec
2013-05-26 08:48:46.87 	spid12	Recovery is checkpointing database 'ОП Самара' (8)
2013-05-26 08:48:46.87 	spid12	0 transactions rolled back in database 'ОП Самара' (8).
2013-05-26 08:48:47.29 	spid13	0 transactions rolled back in database 'OlapGlobal' (9).
2013-05-26 08:48:47.29 	spid13	11 transactions rolled forward in database 'OlapGlobal' (9).
2013-05-26 08:48:47.31 	spid13	Recovery is checkpointing database 'OlapGlobal' (9)
2013-05-26 08:48:47.60 	spid14	Recovery of database 'ИмяБазы_260413' (10) is 0% complete (approximately 8 more sec
2013-05-26 08:48:47.60 	spid14	Analysis of database 'ИмяБазы_260413' (10) is 100% complete (approximately 0 more s
2013-05-26 08:48:47.73 	spid14	611 transactions rolled forward in database 'ИмяБазы_260413' (10).
2013-05-26 08:48:47.73 	spid14	Recovery of database 'ИмяБазы_260413' (10) is 100% complete (approximately 0 more s
2013-05-26 08:48:47.96 	spid11	Recovery is checkpointing database 'ИмяБазы' (7)
2013-05-26 08:48:48.06 	spid14	Recovery is checkpointing database 'ИмяБазы_260413' (10)
2013-05-26 08:48:48.06 	spid14	0 transactions rolled back in database 'ИмяБазы_260413' (10).
2013-05-26 08:48:48.53 	server	SQL Server is ready for client connections
2013-05-26 08:48:48.53 	server	SQL server listening on TCP, Shared Memory, Named Pipes.
2013-05-26 08:48:48.60 	spid3	SQL global counter collection task is created.
2013-05-26 08:48:48.60 	spid3	Recovery complete.
2013-05-26 08:48:49.28 	spid52	Using 'xpsqlbot.dll' version '2000.80.194' to execute extended stored procedure
2013-05-26 08:49:05.11 	spid53	Using 'xpstar.dll' version '2000.80.760' to execute extended stored procedure '
2013-05-26 08:59:04.61 	spid66	Could not find the index entry for RID '1675707c0100' in index page (1:23727), 
2013-05-26 08:59:04.61 	spid66	Error: 644, Severity: 21, State: 3
2013-05-26 08:59:04.61 	spid66	Could not find the index entry for RID '1675707c0100' in index page (1:23727), 
2013-05-26 08:59:04.61 	spid66	Error: 644, Severity: 21, State: 3
2013-05-26 09:00:03.91 	spid66	Using 'xplog70.dll' version '2000.80.760' to execute extended stored procedure 
2013-05-26 09:10:00.85 	spid51	Could not find the index entry for RID '1675707c0100' in index page (1:23727), 
2013-05-26 09:10:00.85 	spid51	Error: 644, Severity: 21, State: 3
2013-05-26 09:10:00.85 	spid51	Could not find the index entry for RID '1675707c0100' in index page (1:23727), 
2013-05-26 09:10:00.85 	spid51	Error: 644, Severity: 21, State: 3
2013-05-26 09:15:23.67 	backup	Database differential changes backed up: Database: ИмяБазы, crea
2013-05-26 09:21:03.28 	spid75	Could not find the index entry for RID '1675707c0100' in index page (1:23727), 
2013-05-26 09:21:03.28 	spid75	Error: 644, Severity: 21, State: 3
2013-05-26 09:21:03.75 	spid75	Could not find the index entry for RID '1675707c0100' in index page (1:23727), 
2013-05-26 09:21:03.75 	spid75	Error: 644, Severity: 21, State: 3
2013-05-26 09:24:36.99 	spid75	Could not find the index entry for RID '16e79e7c0100' in index page (1:46065), 
2013-05-26 09:24:36.99 	spid75	Error: 644, Severity: 21, State: 3
2013-05-26 09:24:43.22 	spid75	Could not find the index entry for RID '16e79e7c0100' in index page (1:46065), 
2013-05-26 09:24:43.22 	spid75	Error: 644, Severity: 21, State: 3
2013-05-26 09:32:01.58 	spid77	Could not find the index entry for RID '1675707c0100' in index page (1:23727), 
2013-05-26 09:32:01.58 	spid77	Error: 644, Severity: 21, State: 3
2013-05-26 09:32:01.58 	spid77	Could not find the index entry for RID '1675707c0100' in index page (1:23727), 
2013-05-26 09:32:01.58 	spid77	Error: 644, Severity: 21, State: 3
2013-05-26 09:43:01.61 	spid63	Could not find the index entry for RID '1675707c0100' in index page (1:23727), 
2013-05-26 09:43:01.61 	spid63	Error: 644, Severity: 21, State: 3
2013-05-26 09:43:01.61 	spid63	Could not find the index entry for RID '1675707c0100' in index page (1:23727), 
2013-05-26 09:43:01.61 	spid63	Error: 644, Severity: 21, State: 3

[вырезал кусок]

--Тут ошибка msdb еще была

2013-05-27 08:59:22.75 	spid162	DBCC CHECKDB (msdb) executed by sa found 1 errors and repaired 0 errors.

--Тут провер реиндексацию таблицы истории джобов

2013-05-27 09:04:57.45 	spid162	DBCC CHECKDB (msdb) executed by sa found 0 errors and repaired 0 errors.


в виндовом протоколе это выглядело так

Error: 644, Severity: 21, State: 3
Could not find the index entry for RID '16e59e7c0100' in index page (1:46065), index ID 0, database 'msdb'.


Просто интересно какие из строчек протокола в моем случае могли бы меня насторожить после загрузки сервера (помимо сообщений об ошибках в индексах конечно).
27 май 13, 13:22    [14353836]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать что SQL сервер корректно загрузился?  [new]
gang
Member

Откуда:
Сообщений: 1394
Kaktus_,

Ну в этом логе больше ничего криминального. Но и этого вполне достаточно: ошибки после "Recovery complete." Уровень 19+, так что
вполне себе сбой, работа для админа.
27 май 13, 16:01    [14354944]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать что SQL сервер корректно загрузился?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31438
Kaktus_
Просто интересно какие из строчек протокола в моем случае могли бы меня насторожить после загрузки сервера (помимо сообщений об ошибках в индексах конечно).
Наверное, можно анализировать лог загрузки и генерить письмо админу при появлении ошибки, то есть слова Error
27 май 13, 16:15    [14355064]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать что SQL сервер корректно загрузился?  [new]
Kaktus_
Member

Откуда: Ростов-на-Дону
Сообщений: 315
Я проанализировал последние файлы логов. Действительно можно по словам ERROR и WARNING выделить проблемные места, а дальше уже - работа админа.

Дайте на водку где найти логи или как выгрузить лог в таблицу или файл или прочитать его - полистал BOL и таблицы msdb, master - ничего похожего на скорую руку не нашел.
27 май 13, 16:30    [14355151]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать что SQL сервер корректно загрузился?  [new]
Kaktus_
Member

Откуда: Ростов-на-Дону
Сообщений: 315
Kaktus_
Я проанализировал последние файлы логов. Действительно можно по словам ERROR и WARNING выделить проблемные места, а дальше уже - работа админа.

Дайте на водку где найти логи или как выгрузить лог в таблицу или файл или прочитать его - полистал BOL и таблицы msdb, master - ничего похожего на скорую руку не нашел.


Конечно же все нашел в ERRORLOGах. К концу рабочего дня просто ум за разум зашел.
27 май 13, 16:32    [14355162]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать что SQL сервер корректно загрузился?  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Kaktus_
Дайте на водку

Какую водку вы предпочитаете? ;-)
exec master.sys.xp_readerrorlog
27 май 13, 16:34    [14355170]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать что SQL сервер корректно загрузился?  [new]
Glory
Member

Откуда:
Сообщений: 104760
Kaktus_
Действительно можно по словам ERROR и WARNING выделить проблемные места, а дальше уже - работа админа.

Нужно настроить alert-ы на нужные ошибки.
27 май 13, 16:35    [14355175]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать что SQL сервер корректно загрузился?  [new]
Kaktus_
Member

Откуда: Ростов-на-Дону
Сообщений: 315
Спасибо за наводки! Сейчас буду ковырять и дегустировать! :)
27 май 13, 16:41    [14355225]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать что SQL сервер корректно загрузился?  [new]
gang
Member

Откуда:
Сообщений: 1394
Kaktus_,

На мой взгляд оптимальное сочетание для мониторинга ошибок:
1 - как сказал Glory алерты от самого SQL.
2 - внешний мониторинг, т.к. иногда SQL или сервер под ним могут вставать в такую позу что уже ни о чем админа оповестить не могут.
По большей части эти 2 ветки мониторинга будут друг друга перекрывать или, если хотите, резервировать.

Для пункта 2 вариантов много от полноценных (и не очень) специализированных систем мониторинга (OperationsManager, HP OV, Zabbix и т.п.) до банального парсинга логов скриптами (Perl, PowerShell и даже просто bat)/
27 май 13, 16:53    [14355325]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать что SQL сервер корректно загрузился?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
gang
Для пункта 2 ... Operations Manager...


+1.

И из стандартного коробочного Management Pack Вы получите очень богатый функционал в части мониторинга и реагирования на события SQL Server. А если еще и руки приложить...
27 май 13, 20:02    [14356079]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить