Очистка данных в БД Октелла. MS SQL Express: различия между версиями
Srv (обсуждение | вклад) Нет описания правки Метка: ручная отмена |
Srv (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
== Очистка данных в БД Октелла. MS SQL Express == | == Очистка данных в БД Октелла. MS SQL Express == | ||
Очистка данных в БД Октелла. MS SQL Express. | |||
Приветствую. | |||
По умолчанию дистрибутив Октелла поставляется в комплекте с MS SQL Express (разных версий, зависит от релиза Октелла). И все бы ничего - все бесплатно-официально да и Октеллу в общем-то функционала платной версии не требуется, но рано или поздно вы столкнетесь с переполнением БД. | |||
В различных версиях MSSQL Express разные ограничения (имею ввиду общий размер БД), но признаки у всех одни: | |||
Невозможность сохранить карту сети. | |||
Невозможность добавить нового пользователя | |||
Ошибки во время выполнения различных профилактик и очисток БД в настройках Октелла. | |||
Объем съедаемой оперативной памяти SQL-сервером резко увеличился. | |||
Ошибки в логах или вообще невозможность подключиться к БД сервером Октелла. | |||
Не отображаются записи разговора в карточке заказа. | |||
Пустая статистика по звонкам (в Октелле) | |||
Это значит, что вам пора зачистить базу от всяких излишеств и порезать ее аппетиты, либо обновиться до более новой/платной версии MSSQL (этот вариант сегодня не рассматриваем). | |||
Сначала установим SQL Managment (дальше буду называть его менеджер - просто я ленивый, как мы выяснили ранее). С его помощью мы будем давать команды SQL-серверу , хотя можно и без него обойтись, но так нагляднее и удобнее. | |||
Версии: | |||
[http://www.microsoft.com/ru-RU/download/details.aspx?id=8961 Microsoft SQL Server Management Studio Express 2005] | |||
[http://www.microsoft.com/ru-ru/download/details.aspx?id=7593 Microsoft SQL Server Management Studio Express 2008] | |||
2012 идет уже в комплекте с MS SQL 2012. Можно скачать и обновить вашу версию до 2012, но инструкции по обновлению ниже не найдете - вот ровно на столько я злой. | |||
Учтите, что инсталлятор следует выбирать в соответствии с разрядностью Windows. | |||
Далее будут скрины и инструкции для 2012 менеджера, но 2005 и 2008 не сильно от него отличаются, так что справитесь. Также хочу сказать, что данное руководство подходит не только к БД Октелла, но и к любой другой MS SQL-базе, разве что названия таблиц и баз будут вашими. Но В ЛЮБОМ СЛУЧАЕ СДЕЛАЙТЕ БЕКАПЫ БД! | |||
Ну, понаехали. | |||
<big>1. Запускаем установленный менеджер и подключаемся к нашей БД'</big> | |||
[[Файл:Снимок.png|центр]] | |||
В поле имя сервера укажите "IP-адрес вашего sql-сервера"\"Название БД". По умолчанию "Название БД" для Октелла =, вот сюрприз, OKTELL. | |||
Выбираем проверку подлинности. можно воспользоваться windows-аутентификацией, но ваш сервер может находиться в другой доменной зоне (в случае, если вы цепляетесь не с компьютера-сервера), а потому лучше зацепиться к нему с помощью Логина: AutelService и пароля: Version2. | |||
Нажимайте Соединить. | |||
[[Файл:Бд.png|центр]] | |||
Открываем вкладку "Базы данных" и видим три базы, которые использует Октелл: oktell, oktell_cc_temp, oktell_settings. Рассказывать про каждую из них я не буду, но по названиям и так ясно. | |||
Нажимаем "Создать запрос" (ctrl+N) и начинаем писать всякие "просьбы" нашему серверу. | |||
3. Ищем "толстые" таблицы. | |||
В открывшемся поле набираем (копи-пастим): | |||
''Use Oktell | |||
DBCC UPDATEUSAGE (0) | |||
create table #t(name varchar(255), row varchar(255), reserved varchar(255), data varchar(255), inxex_size varchar(255), unused varchar(255)) | |||
insert into #t | |||
exec sp_msforeachtable N'exec sp_spaceused ''?''' | |||
select * from #t | |||
drop table #t'' | |||
Нажимаем F5 (выполнить) и ниже получим список всех таблиц с их размерами: | |||
[[Файл:Бд3.png|центр]] | |||
Обращать внимание следует на столбец reserved - он показывает размер таблицы в килобайтах. В примере видно, что таблица A_Stat_Connetcions_1x1 занимает примерно 140 Мб. Это не много, но в вашем случае это может быть гораздо б'ольшее число, т.к. эта таблица заполняется быстрее остальных, т.к. фиксирует все входящие/исходящие звонки. | |||
Просветленный заметит, что в запросе есть строка Use Oktell (в самом начале). С помощью нее можно выбрать БД, которую мы хотим "проверить". В запросе выше я вывел размеры таблиц по базе Oktell, но не плохо бы вывести данные по всем базам: oktell, oktell_settings, oktell_cc_temp. Т.е. чтобы вывести данные по базе oktell_settings достаточно ввести в качестве первой строки Use Oktell_settings. | |||
4. Чистим нужные таблицы. | |||
Сразу отмечу, что чистить таблицы нужно только в том случае, если вы точно уверены в своих знаниях об этой таблице и знаете, что там хранится, т.е. можно случано что-то удалить и вы потеряете статистику/настройки октелла/списки ваших клиентов. БУДЬТЕ АККУРАТНЫ! | |||
Все еще уверены в том, что делаете? Тогда продолжаем. | |||
Мы выявили, что таблица A_Stat_Connections_1x1 занимает многовато, по нашему мнению, места. Теперь будем ее подрезать. | |||
Снова нажимаем Создать запрос и пишем следующее: | |||
use oktell | |||
delete from a_stat_connections_1x1 where TimeStart < '2013-09-25 00:00:00' | |||
Где 2013-09-25 00:00:00' - дата ДО которой нам не интересны данные таблицы, т.е. статистика (в данном случае из-за таблицы мы говорим о статистике звонков). можно, конечно, убрать из запроса where TimeStart < '2013-09-25 00:00:00' , но тогда вы удалите данные из таблицы совсем, так, что будьте осторожны. | |||
Готово. Таблица очищена. То же самое (возможно уже без указания даты) следует сделать и с остальными "крупными" таблицами в БД. Например A_Streams в базе oktell_settings тоже может много весить, т.к. хранит историю по изменениям в карте сети (видно по датам в названии строк). попробуем очистить от старых сохранений и ее: | |||
use oktell_settings | |||
delete FROM A_Streams where name like '%copy%' | |||
В данном случае name like '%copy%' удалит из таблицы значения являющиеся копией. обратите внимание, что везде пишу use oktell_settings или use oktell тем самым выбирая нужную мне БД для запроса. Можно обойтись и без таких обращений, но так будет проще понять новичкам. | |||
5. Сложности. | |||
Если таблица, которую вы удаляете очень большая с огромным количеством записей, то может возникнуть ошибка при попытке удаления данных из нее, т.к. вы удаляете очень большой кусок информации и логи по этой базе не лезут в ограничения по умолчанию. Это можно поправить снятием ограничений. | |||
В менеджере тыкаем правой клавишей по базе oktell и выбираем "Свойства". | |||
Слева выбираем "Файлы". | |||
В колонке расширение у файла oktell_log выбираем пункт неограниченный рост размера файлов. | |||
Нажимаем ОК. | |||
Теперь снова попытайте удачу с очисткой таблиц. Если удаляться будет ОЧЕНЬ долго или снова будете получать ошибку, то попробуйте удалять кусами, например, за определенный период. | |||
6. Обрезаем логи. | |||
После всех манипуляций у нас резко возрастет размер баз-логов. Как не странно, но они тоже учитываются при расчете ограничений на вашу версию MS SQL. а потому беспощадно их зарежем запросом: | |||
''use master | |||
backup log oktell with truncate_only | |||
use oktell | |||
DBCC SHRINKFILE (oktell_Log,20) | |||
backup log oktell_settings with truncate_only | |||
use oktell_settings | |||
DBCC SHRINKFILE (oktell_settings_Log,20) | |||
backup log oktell_cc_temp with truncate_only | |||
use oktell_cc_temp | |||
DBCC SHRINKFILE (oktell_cc_temp_Log,20)'' | |||
Готово. Теперь можете дальше делать все, что хотите. Симптомы переполнения БД должны пропасть, а все процедуры по очистке и переиндексации в настройках Октелла должны работать. |
Версия от 11:34, 24 октября 2024
Очистка данных в БД Октелла. MS SQL Express
Очистка данных в БД Октелла. MS SQL Express. Приветствую.
По умолчанию дистрибутив Октелла поставляется в комплекте с MS SQL Express (разных версий, зависит от релиза Октелла). И все бы ничего - все бесплатно-официально да и Октеллу в общем-то функционала платной версии не требуется, но рано или поздно вы столкнетесь с переполнением БД. В различных версиях MSSQL Express разные ограничения (имею ввиду общий размер БД), но признаки у всех одни:
Невозможность сохранить карту сети. Невозможность добавить нового пользователя Ошибки во время выполнения различных профилактик и очисток БД в настройках Октелла. Объем съедаемой оперативной памяти SQL-сервером резко увеличился. Ошибки в логах или вообще невозможность подключиться к БД сервером Октелла. Не отображаются записи разговора в карточке заказа. Пустая статистика по звонкам (в Октелле)
Это значит, что вам пора зачистить базу от всяких излишеств и порезать ее аппетиты, либо обновиться до более новой/платной версии MSSQL (этот вариант сегодня не рассматриваем). Сначала установим SQL Managment (дальше буду называть его менеджер - просто я ленивый, как мы выяснили ранее). С его помощью мы будем давать команды SQL-серверу , хотя можно и без него обойтись, но так нагляднее и удобнее.
Версии:
Microsoft SQL Server Management Studio Express 2005 Microsoft SQL Server Management Studio Express 2008 2012 идет уже в комплекте с MS SQL 2012. Можно скачать и обновить вашу версию до 2012, но инструкции по обновлению ниже не найдете - вот ровно на столько я злой.
Учтите, что инсталлятор следует выбирать в соответствии с разрядностью Windows.
Далее будут скрины и инструкции для 2012 менеджера, но 2005 и 2008 не сильно от него отличаются, так что справитесь. Также хочу сказать, что данное руководство подходит не только к БД Октелла, но и к любой другой MS SQL-базе, разве что названия таблиц и баз будут вашими. Но В ЛЮБОМ СЛУЧАЕ СДЕЛАЙТЕ БЕКАПЫ БД!
Ну, понаехали.
1. Запускаем установленный менеджер и подключаемся к нашей БД'
В поле имя сервера укажите "IP-адрес вашего sql-сервера"\"Название БД". По умолчанию "Название БД" для Октелла =, вот сюрприз, OKTELL. Выбираем проверку подлинности. можно воспользоваться windows-аутентификацией, но ваш сервер может находиться в другой доменной зоне (в случае, если вы цепляетесь не с компьютера-сервера), а потому лучше зацепиться к нему с помощью Логина: AutelService и пароля: Version2. Нажимайте Соединить.
Открываем вкладку "Базы данных" и видим три базы, которые использует Октелл: oktell, oktell_cc_temp, oktell_settings. Рассказывать про каждую из них я не буду, но по названиям и так ясно. Нажимаем "Создать запрос" (ctrl+N) и начинаем писать всякие "просьбы" нашему серверу. 3. Ищем "толстые" таблицы. В открывшемся поле набираем (копи-пастим): Use Oktell DBCC UPDATEUSAGE (0) create table #t(name varchar(255), row varchar(255), reserved varchar(255), data varchar(255), inxex_size varchar(255), unused varchar(255)) insert into #t exec sp_msforeachtable N'exec sp_spaceused ?' select * from #t drop table #t
Нажимаем F5 (выполнить) и ниже получим список всех таблиц с их размерами:
Обращать внимание следует на столбец reserved - он показывает размер таблицы в килобайтах. В примере видно, что таблица A_Stat_Connetcions_1x1 занимает примерно 140 Мб. Это не много, но в вашем случае это может быть гораздо б'ольшее число, т.к. эта таблица заполняется быстрее остальных, т.к. фиксирует все входящие/исходящие звонки. Просветленный заметит, что в запросе есть строка Use Oktell (в самом начале). С помощью нее можно выбрать БД, которую мы хотим "проверить". В запросе выше я вывел размеры таблиц по базе Oktell, но не плохо бы вывести данные по всем базам: oktell, oktell_settings, oktell_cc_temp. Т.е. чтобы вывести данные по базе oktell_settings достаточно ввести в качестве первой строки Use Oktell_settings. 4. Чистим нужные таблицы.
Сразу отмечу, что чистить таблицы нужно только в том случае, если вы точно уверены в своих знаниях об этой таблице и знаете, что там хранится, т.е. можно случано что-то удалить и вы потеряете статистику/настройки октелла/списки ваших клиентов. БУДЬТЕ АККУРАТНЫ!
Все еще уверены в том, что делаете? Тогда продолжаем. Мы выявили, что таблица A_Stat_Connections_1x1 занимает многовато, по нашему мнению, места. Теперь будем ее подрезать. Снова нажимаем Создать запрос и пишем следующее: use oktell delete from a_stat_connections_1x1 where TimeStart < '2013-09-25 00:00:00' Где 2013-09-25 00:00:00' - дата ДО которой нам не интересны данные таблицы, т.е. статистика (в данном случае из-за таблицы мы говорим о статистике звонков). можно, конечно, убрать из запроса where TimeStart < '2013-09-25 00:00:00' , но тогда вы удалите данные из таблицы совсем, так, что будьте осторожны.
Готово. Таблица очищена. То же самое (возможно уже без указания даты) следует сделать и с остальными "крупными" таблицами в БД. Например A_Streams в базе oktell_settings тоже может много весить, т.к. хранит историю по изменениям в карте сети (видно по датам в названии строк). попробуем очистить от старых сохранений и ее: use oktell_settings delete FROM A_Streams where name like '%copy%'
В данном случае name like '%copy%' удалит из таблицы значения являющиеся копией. обратите внимание, что везде пишу use oktell_settings или use oktell тем самым выбирая нужную мне БД для запроса. Можно обойтись и без таких обращений, но так будет проще понять новичкам.
5. Сложности.
Если таблица, которую вы удаляете очень большая с огромным количеством записей, то может возникнуть ошибка при попытке удаления данных из нее, т.к. вы удаляете очень большой кусок информации и логи по этой базе не лезут в ограничения по умолчанию. Это можно поправить снятием ограничений.
В менеджере тыкаем правой клавишей по базе oktell и выбираем "Свойства". Слева выбираем "Файлы". В колонке расширение у файла oktell_log выбираем пункт неограниченный рост размера файлов. Нажимаем ОК.
Теперь снова попытайте удачу с очисткой таблиц. Если удаляться будет ОЧЕНЬ долго или снова будете получать ошибку, то попробуйте удалять кусами, например, за определенный период.
6. Обрезаем логи.
После всех манипуляций у нас резко возрастет размер баз-логов. Как не странно, но они тоже учитываются при расчете ограничений на вашу версию MS SQL. а потому беспощадно их зарежем запросом:
use master
backup log oktell with truncate_only use oktell DBCC SHRINKFILE (oktell_Log,20)
backup log oktell_settings with truncate_only use oktell_settings DBCC SHRINKFILE (oktell_settings_Log,20)
backup log oktell_cc_temp with truncate_only use oktell_cc_temp DBCC SHRINKFILE (oktell_cc_temp_Log,20)
Готово. Теперь можете дальше делать все, что хотите. Симптомы переполнения БД должны пропасть, а все процедуры по очистке и переиндексации в настройках Октелла должны работать.