Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Журнал транзакций полон. Ошибка 9002  [new]
beginner_dba
Member

Откуда: Киев
Сообщений: 331
Ночью при выполнении ребилда и реорганизации индексов в журнале событий были следующие записи:

5:08.29 Autogrow of file 'goldenxfiles_log' in database 'Golden' took 62016 milliseconds. Consider using ALTER DATABASE to set a smaller FILEGROWTH for this file.
5:10.39 Error: 9002, Severity: 17, State: 2.
6:16.16 The transaction log for database 'Golden' is full. To find out why space in the log cannot be reused, see the log_reuse_wait_desc column in sys.databases
Лог файл ограничен сверху 60 Гб (10% рост), размер бэкапа лога в 06.16 равен 56 Гб. Самого лога тоже 56
Сейчас процедура dbcc sqlperf(logspace) возвращает log space used 0.08%
Колонка log_reuse_wait_desc=Nothing
Версия 9.0 SP4
Сейчас база доступна. Каждые последующие бэкапы лога совсем крошечные, так как сегодня выходной.
У меня вопрос следующий что же все таки произошло?
Почему файл достиг 56 и не пошоле дальше увеличиваться
Процедура реиндексации прошла или откатилась?
Что предпринять на будущее?
8 май 11, 18:53    [10623879]     Ответить | Цитировать Сообщить модератору
 Re: Журнал транзакций полон. Ошибка 9002  [new]
invm
Member

Откуда: Москва
Сообщений: 9824
beginner_dba
У меня вопрос следующий что же все таки произошло?
Почему файл достиг 56 и не пошоле дальше увеличиваться
Процедура реиндексации прошла или откатилась?
Что предпринять на будущее?

У вас автоувеличение файла журнала выставлено в 10%, соответственно 10% от 56 Гб это 5.6 Гб. 56 + 5.6 = 61, что больше вашего же лимита на размер журнала.
Реиндексация у вас выполнилась частично, до момента ошибки. Конечно при условии, что вы всю реиндексацию не завернули в транзакцию.
И зачем вам полная модель восстановления, если вы не делаете резервных копий журнала?
8 май 11, 19:30    [10623958]     Ответить | Цитировать Сообщить модератору
 Re: Журнал транзакций полон. Ошибка 9002  [new]
beginner_dba
Member

Откуда: Киев
Сообщений: 331
invm
beginner_dba
У меня вопрос следующий что же все таки произошло?
Почему файл достиг 56 и не пошоле дальше увеличиваться
Процедура реиндексации прошла или откатилась?
Что предпринять на будущее?

У вас автоувеличение файла журнала выставлено в 10%, соответственно 10% от 56 Гб это 5.6 Гб. 56 + 5.6 = 61, что больше вашего же лимита на размер журнала.
Реиндексация у вас выполнилась частично, до момента ошибки. Конечно при условии, что вы всю реиндексацию не завернули в транзакцию.
И зачем вам полная модель восстановления, если вы не делаете резервных копий журнала?

Копии каждые 2 часа делаются.
В 6.16 автоматически сделался бэкап лога и соотвественно усекся лог до 0.08% использования.
А если опять попробовать сделать реиндексацию? Она будет делатся на все индексы или будет делать их на те, которые действительно в этом нуждаются? Или на другом диске создать еще один лог файл, чтобы он начал заполнятся если первый заполнится (максимальный размер не могу увеличить у первичного лог файла по причине ограниченности диска)?
8 май 11, 19:44    [10623973]     Ответить | Цитировать Сообщить модератору
 Re: Журнал транзакций полон. Ошибка 9002  [new]
iljy
Member

Откуда:
Сообщений: 8711
beginner_dba
Копии каждые 2 часа делаются.
В 6.16 автоматически сделался бэкап лога и соотвественно усекся лог до 0.08% использования.
А если опять попробовать сделать реиндексацию? Она будет делатся на все индексы или будет делать их на те, которые действительно в этом нуждаются? Или на другом диске создать еще один лог файл, чтобы он начал заполнятся если первый заполнится (максимальный размер не могу увеличить у первичного лог файла по причине ограниченности диска)?

Реиндексация будет делаться для тех индексов, для которых вы ее делаете. Соответственно лог действительно может очень сильно при этом использоваться. Можно попробовать перевести базу в режим bulk-logged, но лучше создать еще один файл под журнал. Использоваться они будут параллельно.
8 май 11, 21:57    [10624323]     Ответить | Цитировать Сообщить модератору
 Re: Журнал транзакций полон. Ошибка 9002  [new]
beginner_dba
Member

Откуда: Киев
Сообщений: 331
iljy
beginner_dba
Копии каждые 2 часа делаются.
В 6.16 автоматически сделался бэкап лога и соотвественно усекся лог до 0.08% использования.
А если опять попробовать сделать реиндексацию? Она будет делатся на все индексы или будет делать их на те, которые действительно в этом нуждаются? Или на другом диске создать еще один лог файл, чтобы он начал заполнятся если первый заполнится (максимальный размер не могу увеличить у первичного лог файла по причине ограниченности диска)?

Реиндексация будет делаться для тех индексов, для которых вы ее делаете. Соответственно лог действительно может очень сильно при этом использоваться. Можно попробовать перевести базу в режим bulk-logged, но лучше создать еще один файл под журнал. Использоваться они будут параллельно.

То есть транзакции будут писаться одновременно? Или все же сервер будет одномоментно писать транзакции в один и только один файл? И записывать пропорционально отстатку свободного места в файлах?
8 май 11, 22:28    [10624410]     Ответить | Цитировать Сообщить модератору
 Re: Журнал транзакций полон. Ошибка 9002  [new]
iljy
Member

Откуда:
Сообщений: 8711
beginner_dba
iljy
пропущено...

Реиндексация будет делаться для тех индексов, для которых вы ее делаете. Соответственно лог действительно может очень сильно при этом использоваться. Можно попробовать перевести базу в режим bulk-logged, но лучше создать еще один файл под журнал. Использоваться они будут параллельно.

То есть транзакции будут писаться одновременно? Или все же сервер будет одномоментно писать транзакции в один и только один файл? И записывать пропорционально отстатку свободного места в файлах?

Параллельно он будет их писать. Но нагрузку действительно будет стараться балансировать пропорционально свободному месту.
8 май 11, 22:37    [10624448]     Ответить | Цитировать Сообщить модератору
 Re: Журнал транзакций полон. Ошибка 9002  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Кто о чем, я не понял, но файлы лога будут заполняться _последовательно_.

Сообщение было отредактировано: 9 май 11, 01:06
9 май 11, 00:42    [10624800]     Ответить | Цитировать Сообщить модератору
 Re: Журнал транзакций полон. Ошибка 9002  [new]
beginner_dba
Member

Откуда: Киев
Сообщений: 331
Гавриленко Сергей Алексеевич
Кто о чем, я не понял, но файлы лога будут заполняться _последовательно_.

Полностью все перемешалось
Есть два файла лога: файл 1 и файл2 (для простоты они оба логически пустые и одинакового физического размера, с одинаковым инкрементом)
и две транзакции: транзакция1 и более поздняя транзакция2
Как будут записываться в транзакции в файл(ы)?
11 май 11, 23:44    [10638817]     Ответить | Цитировать Сообщить модератору
 Re: Журнал транзакций полон. Ошибка 9002  [new]
invm
Member

Откуда: Москва
Сообщений: 9824
Физическая архитектура журнала транзакций
12 май 11, 00:29    [10638956]     Ответить | Цитировать Сообщить модератору
 Re: Журнал транзакций полон. Ошибка 9002  [new]
beginner_dba
Member

Откуда: Киев
Сообщений: 331
invm
Физическая архитектура журнала транзакций


Если в журнале содержится несколько физических файлов журнала, логический журнал будет продвигаться по всем физическим файлам журнала до тех пор, пока он не вернется на начало первого физического файла журнала.


Таким образом будет верен вариант 1
12 май 11, 08:08    [10639297]     Ответить | Цитировать Сообщить модератору
 Re: Журнал транзакций полон. Ошибка 9002  [new]
Kirillich
Member

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

не читатель?
что есть первый вариант?

если
автор
То есть транзакции будут писаться одновременно?


то не правильный вывод
12 май 11, 09:18    [10639418]     Ответить | Цитировать Сообщить модератору
 Re: Журнал транзакций полон. Ошибка 9002  [new]
beginner_dba
Member

Откуда: Киев
Сообщений: 331
Kirillich
beginner_dba,

не читатель?
что есть первый вариант?

если
автор
То есть транзакции будут писаться одновременно?


то не правильный вывод


Сорри транзакции будет писаться одна за одной в первый файл, пока он не заполнится затем во второй. Затем после усечения опять в первый, после заполнения второго.
12 май 11, 10:16    [10639666]     Ответить | Цитировать Сообщить модератору
 Re: Журнал транзакций полон. Ошибка 9002  [new]
Kirillich
Member

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

явно не читатель..

откуда вы такую информацию-то взяли?
последовательное заполнение, в данном случае, означает другое
12 май 11, 10:24    [10639704]     Ответить | Цитировать Сообщить модератору
 Re: Журнал транзакций полон. Ошибка 9002  [new]
Kirillich
Member

Откуда:
Сообщений: 581
beginner_dba
Kirillich
beginner_dba,

не читатель?
что есть первый вариант?

если пропущено...


то не правильный вывод


Сорри транзакции будет писаться одна за одной в первый файл, пока он не заполнится затем во второй. Затем после усечения опять в первый, после заполнения второго.


а вы проведите эксперимент и посмотрите, что ваша теория не верна
12 май 11, 10:24    [10639707]     Ответить | Цитировать Сообщить модератору
 Re: Журнал транзакций полон. Ошибка 9002  [new]
beginner_dba
Member

Откуда: Киев
Сообщений: 331
Kirillich
beginner_dba
пропущено...


Сорри транзакции будет писаться одна за одной в первый файл, пока он не заполнится затем во второй. Затем после усечения опять в первый, после заполнения второго.


а вы проведите эксперимент и посмотрите, что ваша теория не верна

Значит одна транзакция запишется в первый файл, а вторая во второй?
12 май 11, 22:48    [10644445]     Ответить | Цитировать Сообщить модератору
 Re: Журнал транзакций полон. Ошибка 9002  [new]
Kirillich
Member

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

да. это вывод можно было сделать прочитав документацию
13 май 11, 09:07    [10645041]     Ответить | Цитировать Сообщить модератору
 Re: Журнал транзакций полон. Ошибка 9002  [new]
Ray D
Member

Откуда: from the middle of nowhere
Сообщений: 3598
Блог
beginner_dba
Kirillich
пропущено...


а вы проведите эксперимент и посмотрите, что ваша теория не верна

Значит одна транзакция запишется в первый файл, а вторая во второй?


Ох понамешали. Поставьте правда лучше сами простой эксперимент и все прояснится.
Для этого создайте БД с двумя файлами лога, запустите в цикле какой-нибудь insert, например, и понаблюдайте вывод dbcc loginfo (обратите внимание на столбцы FileId и FSeqNo).
13 май 11, 09:55    [10645279]     Ответить | Цитировать Сообщить модератору
 Re: Журнал транзакций полон. Ошибка 9002  [new]
beginner_dba
Member

Откуда: Киев
Сообщений: 331
Kirillich
beginner_dba,

да. это вывод можно было сделать прочитав документацию

Значит сервер принимает решение о том куда писать транзакцию, сообразно пустому месту в файлах?
13 май 11, 10:21    [10645499]     Ответить | Цитировать Сообщить модератору
 Re: Журнал транзакций полон. Ошибка 9002  [new]
invm
Member

Откуда: Москва
Сообщений: 9824
beginner_dba,

Ленивый DBA -- плохой DBA...
use tempdb
go
declare @path varchar(max), @datafilename varchar(max)

select @path = left(physical_name, len(physical_name) - charindex('\', reverse(physical_name))) + '\' from sys.master_files where database_id = db_id() and file_id = 1

exec ('create database DBLogTest
 on (name = DBLogTest_Base, filename = ''' + @path + 'DBLogTest_Base.mdf'', filegrowth = 10MB)
 log on (name = DBLogTest_Log1, filename = ''' + @path + 'DBLogTest_Log1.ldf'', size = 10MB, filegrowth = 10MB),
        (name = DBLogTest_Log2, filename = ''' + @path + 'DBLogTest_Log2.ldf'', size = 10MB, filegrowth = 10MB)')
go
alter database DBLogTest set recovery simple
go
use DBLogTest
go
create table dbo.Test
(
 t_id int not null identity primary key,
 t_Value varchar(max) not null default replicate(cast('a' as varchar(max)), 1000000)
)
go
declare @i int = 0

begin tran
while @i < 30
 begin
  insert into dbo.Test default values
  dbcc loginfo
  set @i += 1
 end
commit
go
use tempdb
alter database DBLogTest set single_user with rollback immediate
drop database DBLogTest
go
13 май 11, 12:08    [10646532]     Ответить | Цитировать Сообщить модератору
 Re: Журнал транзакций полон. Ошибка 9002  [new]
beginner_dba
Member

Откуда: Киев
Сообщений: 331
invm
beginner_dba,

Ленивый DBA -- плохой DBA...
use tempdb
go
declare @path varchar(max), @datafilename varchar(max)

select @path = left(physical_name, len(physical_name) - charindex('\', reverse(physical_name))) + '\' from sys.master_files where database_id = db_id() and file_id = 1

exec ('create database DBLogTest
 on (name = DBLogTest_Base, filename = ''' + @path + 'DBLogTest_Base.mdf'', filegrowth = 10MB)
 log on (name = DBLogTest_Log1, filename = ''' + @path + 'DBLogTest_Log1.ldf'', size = 10MB, filegrowth = 10MB),
        (name = DBLogTest_Log2, filename = ''' + @path + 'DBLogTest_Log2.ldf'', size = 10MB, filegrowth = 10MB)')
go
alter database DBLogTest set recovery simple
go
use DBLogTest
go
create table dbo.Test
(
 t_id int not null identity primary key,
 t_Value varchar(max) not null default replicate(cast('a' as varchar(max)), 1000000)
)
go
declare @i int = 0

begin tran
while @i < 30
 begin
  insert into dbo.Test default values
  dbcc loginfo
  set @i += 1
 end
commit
go
use tempdb
alter database DBLogTest set single_user with rollback immediate
drop database DBLogTest
go

Спасибо огромное теперь все понятно.
13 май 11, 17:17    [10649614]     Ответить | Цитировать Сообщить модератору
 Re: Журнал транзакций полон. Ошибка 9002  [new]
Ray D
Member

Откуда: from the middle of nowhere
Сообщений: 3598
Блог
Время такое -- никому верить нельзя. Мне -- можно.
13 май 11, 17:44    [10649808]     Ответить | Цитировать Сообщить модератору
 Re: Журнал транзакций полон. Ошибка 9002  [new]
Мне -- можно
Guest
Ray D
Время такое -- никому верить нельзя. Мне -- можно.

и тебе, Влад, нельзя Картинка с другого сайта.
13 май 11, 21:18    [10650552]     Ответить | Цитировать Сообщить модератору
 Re: Журнал транзакций полон. Ошибка 9002  [new]
Александр Гладченко
Member

Откуда:
Сообщений: 10802
Блог
http://technet.microsoft.com/ru-ru/magazine/2008.08.database.aspx
16 май 11, 12:01    [10657345]     Ответить | Цитировать Сообщить модератору
 Re: Журнал транзакций полон. Ошибка 9002  [new]
Peisov
Member

Откуда: СПб
Сообщений: 203
А вот помогите!!!

Решили сегодня изменить в одной из таблиц размерность поля . Зашли в дизайнер, изменили. Сидим, ждем обнолвения. А его нет!!!

Стали смотреть базу - а там при попытках посмотреть Current Activiti выдается соббщение:

Error 9002: the log file for database 'tempdb' is full.


Стали разбираться - на диске тупо закончилось место. Удалить для освобождения места ничего нельзя.

Вопрос - если долго ждать - может быть сервер все-таки закончит операцию?

А если не закончит - то как правильно разрешить эту ситуацию и не потерять данные?

Сервер - MS SQL 2000.

Спасибо!
3 июн 11, 20:02    [10761518]     Ответить | Цитировать Сообщить модератору
 Re: Журнал транзакций полон. Ошибка 9002  [new]
flexgen
Member

Откуда: Город на песке
Сообщений: 851
Peisov
А вот помогите!!!

Решили сегодня изменить в одной из таблиц размерность поля . Зашли в дизайнер, изменили. Сидим, ждем обнолвения. А его нет!!!

Стали смотреть базу - а там при попытках посмотреть Current Activiti выдается соббщение:

Error 9002: the log file for database 'tempdb' is full.


Стали разбираться - на диске тупо закончилось место. Удалить для освобождения места ничего нельзя.

Вопрос - если долго ждать - может быть сервер все-таки закончит операцию?

А если не закончит - то как правильно разрешить эту ситуацию и не потерять данные?

Сервер - MS SQL 2000.

Спасибо!


Изменили размерность? На рабочей базе? Среди рабочего дня? Молодцы, нечего сказать. А соответствующие хранимые процедуры, которые изменяют/добавляют данные в этой таблице, поменять не забыли? Ну это так, лирика.

По теме - освобождай место, сервер операцию не закончит, она уже упала и отменена. Посмотри на установки лог файла, а именно авто приращение, если выставлено в процентах то поменяй на мегабайты. Системные базы, включая tempdb, небось на диске С сидят? Добавь физический диск и перенеси туда tempdb, как это сделать смотри здесь.
3 июн 11, 20:47    [10761694]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить