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

Откуда:
Сообщений: 416
Добрый день,

прочитал доку,но вот не до конца понял один вопрос,помогите плиз разобраться:

при любом DML в блок(ITL slot) пишется байт блокировки.Пишется он в ITL slot, количество которых определяется параметром initrans.
Следующий юзер при попытке изменить этот же блок должен обязательно прочитать ITL slot,чтобы увидеть,что блок уже изменяется и ждать пока он не изменится и блокировка пропадет.Но слотов по умолчанию всего 2 и получается,что третий желающий уже попадает на ожидание (buffer busy/data block).
Т.е. эти слоты нужны для хранения инфы об изменениях блока.

Правильно я все понял?
Спасибо большое.
20 фев 12, 16:26    [12124251]     Ответить | Цитировать Сообщить модератору
 Re: ITL и одновременный доступ к блокам  [new]
ORA__SQL
Member

Откуда: Moscow
Сообщений: 1774
LudeV
чтобы увидеть,что блок уже изменяется и ждать пока он не изменится и блокировка пропадет.
Бред. Блокировка на уровне строк, а не на уровне блока.
Почитай тут
http://my-oracle.it-blogs.com.ua/post-239.aspx
20 фев 12, 16:39    [12124476]     Ответить | Цитировать Сообщить модератору
 Re: ITL и одновременный доступ к блокам  [new]
LudeV
Member

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

Информация о блокировках хранится непосредственно в блоках данных. А если быть точным, то в заголовке блока, где заблокированная строка находится

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

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

Всё прочитал и все стало понятно и прозрачно.

спасибо большое!Вопрос закрыт
20 фев 12, 17:18    [12125056]     Ответить | Цитировать Сообщить модератору
 Re: ITL и одновременный доступ к блокам  [new]
Чингачгук большой Критик
Guest
ORA__SQL
Почитай тут
http://my-oracle.it-blogs.com.ua/post-239.aspx
Там бреда только чуть-чуть меньше. Не читай там.
20 фев 12, 17:21    [12125089]     Ответить | Цитировать Сообщить модератору
 Re: ITL и одновременный доступ к блокам  [new]
Чингачгук большой Критик
Guest
LudeV
Всё прочитал и все стало понятно и прозрачно
20 фев 12, 17:22    [12125109]     Ответить | Цитировать Сообщить модератору
 Re: ITL и одновременный доступ к блокам  [new]
ORA__SQL
Member

Откуда: Moscow
Сообщений: 1774
Чингачгук большой Критик
ORA__SQL
Почитай тут
http://my-oracle.it-blogs.com.ua/post-239.aspx
Там бреда только чуть-чуть меньше. Не читай там.
А по подробнее?
20 фев 12, 17:23    [12125114]     Ответить | Цитировать Сообщить модератору
 Re: ITL и одновременный доступ к блокам  [new]
maxtrans
Guest
LudeV,
наверно не initrans а maxtrans, только изменить значение maxtrans для таблицы так и не вышло у меня :(
20 фев 12, 17:24    [12125139]     Ответить | Цитировать Сообщить модератору
 Re: ITL и одновременный доступ к блокам  [new]
LudeV
Member

Откуда:
Сообщений: 416
Чингачгук большой Критик,

никакого бреда я там не заметил.

вот слова из оригинальной доки:

When a DML (insert/update/delete) occurs on a block, the lock byte is set in the block and any user accessing the
record(s) being changed must check the ITL for information regarding building the before image
of the block. The Oracle Database writes information into the block, including all users who are
“interested” in the state of the block, in the Interested Transaction List (ITL). To decrease waits in
this area, you increase the initrans, which will create the space in the block to allow multiple ITL
slots (for multiple DML user access). The default is two ITL slots per index or data block. You can
also increase the pctfree value on the table where this block exists. Oracle will use space in
pctfree to add ITL slots up to the number specified by maxtrans in 9i (maxtrans is not set in 10g
and defaults to 255) when there are not enough slots pre-built with the initrans that is specified.

Initrans нельзя увеличивать потом,т.к. он работает при выделении (на то он и init),а вот увеличить можно только с помощью maxtrans и свободного места
20 фев 12, 17:28    [12125181]     Ответить | Цитировать Сообщить модератору
 Re: ITL и одновременный доступ к блокам  [new]
брадобрей
Member

Откуда:
Сообщений: 4696
LudeV
Чингачгук большой Критик,

никакого бреда я там не заметил.

вот слова из оригинальной доки:

When a DML (insert/update/delete) occurs on a block, the lock byte is set in the block and any user accessing the
record(s) being changed must check the ITL for information regarding building the before image
of the block. The Oracle Database writes information into the block, including all users who are
“interested” in the state of the block, in the Interested Transaction List (ITL). To decrease waits in
this area, you increase the initrans, which will create the space in the block to allow multiple ITL
slots (for multiple DML user access). The default is two ITL slots per index or data block. You can
also increase the pctfree value on the table where this block exists. Oracle will use space in
pctfree to add ITL slots up to the number specified by maxtrans in 9i (maxtrans is not set in 10g
and defaults to 255)
when there are not enough slots pre-built with the initrans that is specified.

Initrans нельзя увеличивать потом,т.к. он работает при выделении (на то он и init),а вот увеличить можно только с помощью maxtrans и свободного места
20 фев 12, 17:30    [12125196]     Ответить | Цитировать Сообщить модератору
 Re: ITL и одновременный доступ к блокам  [new]
LudeV
Member

Откуда:
Сообщений: 416
Чингачгук большой Критик,

прежде чем смеяться высказал бы свое мнение,а не тупо смайлики рисовал.
Что-то судя по количеству сообщений и информативности сообщений в этом обсуждении ты вопрос вообще не знаешь.

Может после прочтения куска оригинальной доки есть иное мнение?
20 фев 12, 17:30    [12125200]     Ответить | Цитировать Сообщить модератору
 Re: ITL и одновременный доступ к блокам  [new]
Чингачгук большой Критик
Guest
LudeV
Чингачгук большой Критик,

прежде чем смеяться высказал бы свое мнение,а не тупо смайлики рисовал.
Что-то судя по количеству сообщений и информативности сообщений в этом обсуждении ты вопрос вообще не знаешь.

Может после прочтения куска оригинальной доки есть иное мнение?
Прокомментирую только первые несколько предложений

автор
Информация о блокировках хранится непосредственно в блоках данных.
Только информация о блокировках строк. А еще информация о блокировках, коих кроме TX еще огромное множество, хранится в структурах enqueues. И это имеет прямое отношение к "ожиданиям ITL waits"

автор
А если быть точным, то в заголовке блока, где заблокированная строка находится (см. здесь).
Не в заголовке блока, а в байте блокировки строки, содержащем номер ITL-слота блока

автор
Если другая транзакция желает заблокировать эту же запись, она должна добраться к блоку, содержащему запись, и по заголовку блока определить заблокирована ли необходимая строка.
Бред, по заголовку блока это не определить. Нужно проверить байт блокировки строки, после этого возможно придется проверить флаги в ITL-слоте, а после этого возможно еще и таблицу транзакций в заголовке UNDO-сегмента

Подобным бредом пронизана вся статья от начала и до конца.
20 фев 12, 17:45    [12125390]     Ответить | Цитировать Сообщить модератору
 Re: ITL и одновременный доступ к блокам  [new]
LudeV
Member

Откуда:
Сообщений: 416
Чингачгук большой Критик,

спасибо
20 фев 12, 17:48    [12125432]     Ответить | Цитировать Сообщить модератору
 Re: ITL и одновременный доступ к блокам  [new]
Чингачгук большой Критик
Guest
LudeV
Initrans нельзя увеличивать потом,т.к. он работает при выделении (на то он и init),а вот увеличить можно только с помощью maxtrans и свободного места
Сам-то понял, что написал?


SQL*Plus: Release 10.2.0.5.0 - Production on Mon Feb 20 19:48:05 2012

Copyright (c) 1982, 2010, Oracle.  All Rights Reserved.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options


SQL> create table t(n number) initrans 1;

Table created.

SQL> alter table t initrans 50;

Table altered.

SQL> alter table t maxtrans 150;

Table altered.

SQL>


alert.log
Mon Feb 20 19:48:58 2012
The value (150) of MAXTRANS parameter ignored.
20 фев 12, 17:50    [12125450]     Ответить | Цитировать Сообщить модератору
 Re: ITL и одновременный доступ к блокам  [new]
LudeV
Member

Откуда:
Сообщений: 416
Чингачгук большой Критик,

подскажите плиз,а зачем тогда этот параметр выставлять вообще?

ведь по умолчанию есть 2,потом оракл будет увеличивать до 255 (если 10).Чего я не догоняю?
20 фев 12, 17:54    [12125487]     Ответить | Цитировать Сообщить модератору
 Re: ITL и одновременный доступ к блокам  [new]
LudeV
Member

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

для того,чтобы если у нас установлено маленькое значение pctfree мы устанавливаем это значение и оракл выделяет сразу столько,сколько мы попросили.

спасибо большое
20 фев 12, 17:56    [12125509]     Ответить | Цитировать Сообщить модератору
 Re: ITL и одновременный доступ к блокам  [new]
DВА
Member

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

для того,чтобы если у нас установлено маленькое значение pctfree мы устанавливаем это значение и оракл выделяет сразу столько,сколько мы попросили.

спасибо большое


он знал!
20 фев 12, 18:01    [12125542]     Ответить | Цитировать Сообщить модератору
 Re: ITL и одновременный доступ к блокам  [new]
Чингачгук большой Критик
Guest
LudeV
подскажите плиз,а зачем тогда этот параметр выставлять вообще?
Так ты же все теперь знаешь. И вопрос закрыт. Разве нет?

LudeV
Всё прочитал и все стало понятно и прозрачно.
https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=920051&msg=12125056
20 фев 12, 18:22    [12125704]     Ответить | Цитировать Сообщить модератору
 Re: ITL и одновременный доступ к блокам  [new]
_Nikotin
Member

Откуда: СПб
Сообщений: 2965
только не 255, а 169 в >= 10g для 8k блока https://forums.oracle.com/forums/thread.jspa?messageID=9260813#9260813
20 фев 12, 21:51    [12126498]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить