Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Восстановление данных при flashback запросе / 8 сообщений из 8, страница 1 из 1
07.05.2017, 11:21
    #39449865
Сергей_КМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Восстановление данных при flashback запросе
Всем добрый день.
Задача восстановить ряд удаленных записей из нескольких таблиц базы на определенный момент времени (несколько часов назад) При попытке восстановить таблицу по технологии Flashback вот так:
FLASHBACK TABLE T1 TO TIMESTAMP to_date('05/05/2017 10:35:00','mm/dd/yyyy hh24:mi:ss');

для части таблиц восстановление проходит, а на некоторых возникает ошибка
"ORA-01555: snapshot too old: rollback segment number 11 with NAME "_SYSSMU195$" too small"

Вопросы
1. Означает ли ошибка "ORA-01555: snapshot too old: rollback segment number 11 with NAME "_SYSSMU195$" too small"
то, что данные уже не восстановить? Смущает то, что если пытаться восстановить данные на более древний момент времени, то
ошибка выдается другая, более понятная: "ORA-08180: no snapshot found based on specified time", по которой очевидно что таких данных уже нет.
Также смутило, что поискав в интернете информацию по этой теме наткнулся на статью " https://renaps.wordpress.com/2007/08/08/ora-01555-snapshot-too-old-when-using-flashback-query/" в которой пишут, что если поменять размеры файлов UNDO, то ошибка уйдет и данные можно восстановить. У меня такие изменения результата не принесли, или я недопонимаю насколько нужно увеличивать.

2. Если сделать запрос вида
SELECT * FROM T2 AS OF TIMESTAMP TO_TIMESTAMP ('2017-0505 10:35:00', 'YYYY-MM-DD HH24:MI:SS')
то выбирается какое то количество записей (в моем примере 1800300), а на следующей опять выдается ошибка ORA-01555.
А есть ли вероятность, что это ошибка выдается только при извлечении строки 1800300, а данные по следующим строкам более 1800300 есть. Можно ли их как то достать?


3. Также непонятно, почему при выполнении запроса
SELECT * FROM T2 AS OF TIMESTAMP TO_TIMESTAMP ('2017-0505 10:35:00', 'YYYY-MM-DD HH24:MI:SS') WHERE ROWNUM=10
ошибка ORA-01555 выдается, а если условие сделать так:
SELECT * FROM T2 AS OF TIMESTAMP TO_TIMESTAMP ('2017-0505 10:35:00', 'YYYY-MM-DD HH24:MI:SS') WHERE ROWNUM<11
то ошибка не выдается и выбираются 10 записей

Буду очень благодарен за помощь, подсказки, советы.
Другие варианты восстановления уже отпали, этот - последняя надежда.
...
Рейтинг: 0 / 0
07.05.2017, 13:00
    #39449879
DВА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Восстановление данных при flashback запросе
1 создайте новое андо и переключите на него текущую активность, чтобы данные ваших убитых таблиц не перезатирались дальше
2 привлекайте админа или техподдержу, кто сможет более осмысленно попытаться вытащить то, что еще имеется, шансы частично восстановить проблемные таблицы еще есть
...
Рейтинг: 0 / 0
08.05.2017, 08:13
    #39450020
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Восстановление данных при flashback запросе
Сергей_КМпочему
WHERE ROWNUM=10Потому что это тавтологически ложное условие, но всё равно нужно извлечь все строки.
...
Рейтинг: 0 / 0
09.05.2017, 10:00
    #39450228
Сергей_КМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Восстановление данных при flashback запросе
DВА,

благодарю за ответы.
С админами и техподдержкой сложно, лучше бы самому освоить, почитать. Какие могут быть дальнейшие действия для частичного построчного восстановления данных в этой ситуации. И означает, ли если ошибка в запросе
SELECT * FROM T1 AS OF TIMESTAMP TO_TIMESTAMP ('2017-0505 10:35:00', 'YYYY-MM-DD HH24:MI:SS')
возникает на строке 1800300 то, что для всех строк более 1800300 такая ошибка будет?
Можно ли как-то исключить из запроса строки с ошибками и в итоге вставить условие вида " rownum>2000000 and rownum<2000009", или есть другие технологии? Если несложно, в 2 словах, пожалуйста, задайте направление)

Elic,Спасибо
...
Рейтинг: 0 / 0
09.05.2017, 10:16
    #39450231
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Восстановление данных при flashback запросе
Сергей_КМИ означает, ли если ошибка в запросе
SELECT * FROM T1 AS OF TIMESTAMP TO_TIMESTAMP ('2017-0505 10:35:00', 'YYYY-MM-DD HH24:MI:SS')
возникает на строке 1800300 то, что для всех строк более 1800300 такая ошибка будет?Нет.
Сергей_КМЕсли несложно, в 2 словах, пожалуйста, задайте направление)Поздно пить боржоми.
Сергей_КМили есть другие технологии?Построчное извлечение данных с игнорированием ошибки. Но это очччччень медленно.
...
Рейтинг: 0 / 0
09.05.2017, 10:46
    #39450234
Сергей_КМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Восстановление данных при flashback запросе
Elic,

поподробнее бы про Построчное извлечение данных с игнорированием ошибки
Это делается с помощью какого-то условия в запросе или скриптом? Можете какой-то пример привести или ткнуть что почитать? Спасибо. Вопрос времени восстановления не смущает
...
Рейтинг: 0 / 0
09.05.2017, 11:53
    #39450250
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Восстановление данных при flashback запросе
Сергей_КМЭто делается с помощью какого-то условия в запросе или скриптом?Скорее всего, хватит и поблочного.
RTFM *_extents + dbms_rowid.rowid_create

Но все твои вопросы указывают на то, что у тебя не взлетит.
...
Рейтинг: 0 / 0
09.05.2017, 13:25
    #39450284
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Восстановление данных при flashback запросе
Просто в UNDO информация уже недоступна (перезатерта)
Варианты:
-- доставать из бэкапа (TSPITR),
-- восстанавливать через LogMiner (кстати, если именно восстановить несколько удаленных записей, то не очень плохая идея)
Но:
-- в первом случае необходимо наличие бэкапов
-- а во-втором, БД должна быть в ARCHIVELOG и они должны быть доступны
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Восстановление данных при flashback запросе / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]