Задать вопрос
@skoch244

Как выбрать только часть изменений LogMiner?

Предположим у нас есть крупная транзакция на вставку (insert), к примеру scn первой операции по этой транзакции 1000, а последней 2000. Вот такой будет вывод представления v$logmnr_contents при start_logmnr(startscn=1000, endscn=2000):
SCN SQL_REDO SESSION# SERIAL#
1000 insert into table... 390 16590
1001 insert into table... 390 16590
.............................................
2000 insert into table... 390 16590

Если же мы заходим взять только часть операций этой транзакции (start_logmnr(startscn=1100, endscn=1200)) то получим следующий результат:
SCN SQL_REDO SESSION# SERIAL#
1100 insert into table... 0 0
1101 insert into table... 0 0
.............................................
1200 insert into table... 0 0

Проблема в том что мне необходимо забирать операции частями с полями SESSION# и SERIAL#, а они равны 0 если мы забираем транзакцию не атомарно (не полностью), как быть в таком случае?
  • Вопрос задан
  • 55 просмотров
Подписаться 2 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 1
Lorien_Elf
@Lorien_Elf
Keep calm and drop database
Запустите логмайнер с 1000 по 2000, где есть нужная информация, и оберните в еще один SELECT с ограничением выборки, как-то так:

exec start_logmnr(startscn=1000, endscn=2000);

select * from (
  select * from v$logmnr_contents --тут инфа с 1000 по 2000
)
where scn between 1100 and 1200;
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы