|
|
|
START SCN для SELECT
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток. Где можно увидеть значение SCN(START SCN), на момент которого выполнен запуск обычного SELECT запроса(не DML)? Для DML запросов, насколько я понимаю, значение START SCN можно увидеть в V$TRANSACTION. Спасибо всем кто откликнется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2018, 13:11 |
|
||
|
START SCN для SELECT
|
|||
|---|---|---|---|
|
#18+
MaXie, с гугля, не подойдет? https://dba.stackexchange.com/questions/11405/how-do-i-find-my-current-scn?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2018, 09:16 |
|
||
|
START SCN для SELECT
|
|||
|---|---|---|---|
|
#18+
MaXieДля DML запросов, насколько я понимаю, значение START SCN можно увидеть в V$TRANSACTION.Понимание неправильное. В одной транзакции может быть много DML-ей и у каждого свой SCN. Этот SCN - это свойство курсора. Staxс гугля, не подойдет?Ты не понял вопроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2018, 09:41 |
|
||
|
START SCN для SELECT
|
|||
|---|---|---|---|
|
#18+
Stax, спасибо за отклик. Необходим SCN, на момент запуска активного запроса, а не "текущий"("current") на данный момент SCN. Насколько я понимаю, серверный процесс где то должен хранить это значение, т.к. именно по нему("стартовому" значению SCN) определяет момент, на который, в случае необходимости, будет выполнять восстановление блоков данных, измененных за время выполнения запроса(" консистентное чтение "). Или другими словами, данные, возвращаемые запросом, должны быть согласованы по времени и соответствовать моменту запуска запроса, а момент запуска запроса определяется текущим( на момент запуска ) SCN. Возможно ли как то "увидеть" это значение SCN для уже выполняющегося запроса? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2018, 10:43 |
|
||
|
START SCN для SELECT
|
|||
|---|---|---|---|
|
#18+
Elic, все верно! Вы правильно поняли мой вопрос. :) авторВ одной транзакции может быть много DML-ей и у каждого свой SCN. Насколько я понимаю, это "стартовый" SCN для транзакции - SCN, к которому, в случае сбоя или ROLLBACK, будет выполнен откат транзакции. Есть ли нечто подобное для обычных SELECT запросов(не DML)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2018, 10:52 |
|
||
|
START SCN для SELECT
|
|||
|---|---|---|---|
|
#18+
MaXieЕсть ли нечто подобноеНичего подобного в твоём понимании нет и у DML. Ещё раз: ElicЭтот SCN - это свойство курсора.И "достать" его вряд ли получится. А тебе это зачем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2018, 11:25 |
|
||
|
START SCN для SELECT
|
|||
|---|---|---|---|
|
#18+
В книге Льюиса "Oracle Core: Essential Internals for DBAs and Developers" есть следующее утверждение: автор "Every process that can access the SGA can read and modify the SCN. Typically, processes read the current value of the location at start of each query or transaction (through a routine named kcmgss—Get Snapshot SCN), ..." Возможно конечно "трудности перевода" и к SELECT это не имеет отношения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2018, 11:28 |
|
||
|
START SCN для SELECT
|
|||
|---|---|---|---|
|
#18+
Elic, авторА тебе это зачем? каким образом в этом случае выполняется "консистентное чтение" блоков при выполнении запросов? Ведь блоки должны быть восстановлены на момент запуска запроса. Есть "долгоиграющий" запрос, который в самом конце своего выполнения обращается к таблице Tn . С момента запуска запроса, данные в блоках таблицы были изменены и зафиксированы(в заголовках блоков указан более "старший" SCN, нежели SCN на момент запуска запроса). Запрос прочитает блоки таблицы Tn , откатит изменения в блоках до SCN своего "старта", после чего прочтет CR-блоки и вернет конечный набор данных. Если заблуждаюсь, просьба поправить. ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2018, 11:40 |
|
||
|
START SCN для SELECT
|
|||
|---|---|---|---|
|
#18+
MaXieВозможно конечно "трудности перевода"Скорее неадекватность восприятия. Ещё раз: ElicА тебе это зачем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2018, 11:41 |
|
||
|
START SCN для SELECT
|
|||
|---|---|---|---|
|
#18+
MaXieЕсли заблуждаюсь, просьба поправить. )В целом, правильно. Но никак не объясняет желания MaXieувидеть значение SCN ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2018, 11:43 |
|
||
|
START SCN для SELECT
|
|||
|---|---|---|---|
|
#18+
авторНо никак не объясняет желания Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Далее из одной сессии запускаем запрос №1 : Код: sql 1. 2. 3. 4. 5. 6. Через 10 секунд из другой сессии запускаем запрос №2 : Код: sql 1. 2. 3. 4. 5. Дожидаемся завершения обоих запросов и смотрим что в таблице: Код: sql 1. Получаем: Код: plaintext 1. 2. Получается, что несмотря на то, что запрос №1 был запущен раньше(с предположительно "меньшим" SCN), чем запрос №2 , данные для обновления он сформировал на момент "позже", чем момент запуска запроса №2 . Правильно ли я понимаю, что в момент запуска запроса №1 , у него был один "стартовый" SCN, после чего его SCN еще раз изменился, в следствии повторного запуска запрос №1 ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2018, 12:34 |
|
||
|
START SCN для SELECT
|
|||
|---|---|---|---|
|
#18+
MaXieПолучается, что несмотря на то, что запрос №1 был запущен раньше(с предположительно "меньшим" SCN), чем запрос №2 , данные для обновления он сформировал на момент "позже", чем момент запуска запроса №2 . Правильно ли я понимаю, что в момент запуска запроса №1 , у него был один "стартовый" SCN, после чего его SCN еще раз изменился, в следствии повторного запуска запрос №1 ?А насчет этого поискать [по форуму] по слову "миниоткаты", "consistent write" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2018, 12:46 |
|
||
|
|

start [/forum/topic.php?fid=52&tid=1883924]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
31ms |
get topic data: |
8ms |
get forum data: |
4ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 233ms |
| total: | 356ms |

| 0 / 0 |
