Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
27.04.2020, 07:16
|
|||
---|---|---|---|
|
|||
Восстановление бекапа на другом сервере |
|||
#18+
Доброго времени суток, форумчане. Попался на такую проблему: восстанавливая БД на другом сервере(делал вторую БД из бекапа продакшена для тестеров) словил "RMAN-06025: no backup of archived log for thread 1 with sequence ....". Среди архивлогов на продакшене я не нашел эти SCN. Нашел причину по которой словил(я так думаю). Почитал код бекапа(который был написал другим коллегой) и меня смутила строчка "delete noprompt archivelog all completed before 'sysdate -4';" Выполнение этой строки до запуска собственно бекапа. Я думаю что логи были удалены, потом произведен бекап и все.... Как можно это поправить? Снять новый бекап? "Как делается бекап" CONFIGURE RETENTION POLICY TO REDUNDANCY 1; CONFIGURE CONTROLFILE AUTOBACKUP ON; CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO "/u01/app/oracle/backup/%F"; CONFIGURE COMPRESSION ALGORITHM 'BASIC'; CONFIGURE DEFAULT DEVICE TYPE TO DISK; CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO COMPRESSED BACKUPSET PARALLELISM 3; crosscheck archivelog all; crosscheck backup of database; crosscheck backup of archivelog all; crosscheck backup of controlfile; crosscheck backupset; crosscheck backup; crosscheck copy; delete noprompt expired backup of database; delete noprompt expired backup of archivelog all; delete noprompt expired backup; delete noprompt expired backup of controlfile; delete noprompt obsolete device type disk; delete noprompt backup completed before 'sysdate -4'; delete noprompt archivelog all completed before 'sysdate -4'; run { allocate channel c1 type disk format '/u01/app/oracle/backup/rman_db_%T_%U.rman'; backup as compressed backupset full database include current controlfile; release channel c1; allocate channel c1 type disk maxpiecesize=2G format '/u01/app/oracle/backup/rman_arc_%T_%U.rman'; sql "alter system archive log current"; delete noprompt archivelog all backed up 2 times to device type disk; backup as compressed backupset archivelog all; sql "alter database backup controlfile to ''/u01/app/oracle/backup/rman_control.rman'' reuse"; release channel c1; } "Как восстанавливаю"На старом сервере узнать dbid: select dbid from v$database; На новом сервере: rman target / set dbid "указать номер dbid" startup nomount restore spfile to pfile '/u01/app/oracle/product/11.2.0/dbhome_1/dbs/initorcl.ora' from 'указать файл бекапа с spfile'; STARTUP FORCE NOMOUNT PFILE='/u01/app/oracle/product/11.2.0/dbhome_1/dbs/initorcl.ora'; RESTORE CONTROLFILE FROM 'указать файл бекапа controlfile'; ALTER DATABASE MOUNT; CATALOG START WITH 'указать место хранения бекапа'; CROSSCHECK BACKUP; RESTORE DATABASE; RECOVER DATABASE; ... |
|||
:
Нравится:
Не нравится:
|
|||
|
27.04.2020, 07:19
|
|||
---|---|---|---|
|
|||
Восстановление бекапа на другом сервере |
|||
#18+
MalishPo MalishPo Доброго времени суток, форумчане. Попался на такую проблему: восстанавливая БД на другом сервере(делал вторую БД из бекапа продакшена для тестеров) словил "RMAN-06025: no backup of archived log for thread 1 with sequence ....". Среди архивлогов на продакшене я не нашел эти SCN. Нашел причину по которой словил(я так думаю). Почитал код бекапа(который был написал другим коллегой) и меня смутила строчка "delete noprompt archivelog all completed before 'sysdate -4';" Выполнение этой строки до запуска собственно бекапа. Я думаю что логи были удалены, потом произведен бекап и все.... Как можно это поправить? Снять новый бекап? "Как делается бекап" CONFIGURE RETENTION POLICY TO REDUNDANCY 1; CONFIGURE CONTROLFILE AUTOBACKUP ON; CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO "/u01/app/oracle/backup/%F"; CONFIGURE COMPRESSION ALGORITHM 'BASIC'; CONFIGURE DEFAULT DEVICE TYPE TO DISK; CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO COMPRESSED BACKUPSET PARALLELISM 3; crosscheck archivelog all; crosscheck backup of database; crosscheck backup of archivelog all; crosscheck backup of controlfile; crosscheck backupset; crosscheck backup; crosscheck copy; delete noprompt expired backup of database; delete noprompt expired backup of archivelog all; delete noprompt expired backup; delete noprompt expired backup of controlfile; delete noprompt obsolete device type disk; delete noprompt backup completed before 'sysdate -4'; delete noprompt archivelog all completed before 'sysdate -4'; run { allocate channel c1 type disk format '/u01/app/oracle/backup/rman_db_%T_%U.rman'; backup as compressed backupset full database include current controlfile; release channel c1; allocate channel c1 type disk maxpiecesize=2G format '/u01/app/oracle/backup/rman_arc_%T_%U.rman'; sql "alter system archive log current"; delete noprompt archivelog all backed up 2 times to device type disk; backup as compressed backupset archivelog all; sql "alter database backup controlfile to ''/u01/app/oracle/backup/rman_control.rman'' reuse"; release channel c1; } "Как восстанавливаю"На старом сервере узнать dbid: select dbid from v$database; На новом сервере: rman target / set dbid "указать номер dbid" startup nomount restore spfile to pfile '/u01/app/oracle/product/11.2.0/dbhome_1/dbs/initorcl.ora' from 'указать файл бекапа с spfile'; STARTUP FORCE NOMOUNT PFILE='/u01/app/oracle/product/11.2.0/dbhome_1/dbs/initorcl.ora'; RESTORE CONTROLFILE FROM 'указать файл бекапа controlfile'; ALTER DATABASE MOUNT; CATALOG START WITH 'указать место хранения бекапа'; CROSSCHECK BACKUP; RESTORE DATABASE; RECOVER DATABASE; Добавлю: судя по комментария в .sh бекапа, код был сперт у поляков. Буду править(отключил бекапирование), но как сейчас справиться с проблемой? Судя по всему теперь любой бекап не поднимется... ПС: Уже второй раз с архивлогами напарываюсь :( Хоть в этот раз и не я виноват. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
27.04.2020, 08:30
|
|||
---|---|---|---|
|
|||
Восстановление бекапа на другом сервере |
|||
#18+
Тебе нужно восстанавливать до определенного времени Самое простое -- посмотреть (после каталогизирования) последний забэкапленный архивлог и указать кляузу UNTIL SEQUENCE ... |
|||
:
Нравится:
Не нравится:
|
|||
|
27.04.2020, 08:34
|
|||
---|---|---|---|
|
|||
Восстановление бекапа на другом сервере |
|||
#18+
В принципе, и уже восстановленную БД ты можешь открыть использую иммитацию неполного восстановления export ORACLE_SID=orcl sqlplus / as sysdba startup mount recover database using backup controlfile until cancel cancel alter database open resetlogs; ... |
|||
:
Нравится:
Не нравится:
|
|||
|
27.04.2020, 10:08
|
|||
---|---|---|---|
|
|||
Восстановление бекапа на другом сервере |
|||
#18+
Вячеслав Любомудров, не вышло :( SQL> recover database using backup controlfile until cancel ORA-00283: recovery session canceled due to errors ORA-19912: cannot recover to target incarnation 2 Куда посмотреть? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
27.04.2020, 10:13
|
|||
---|---|---|---|
|
|||
Восстановление бекапа на другом сервере |
|||
#18+
А у тебя БД точно не открылась? Можно, конечно сбросить инкарнацию через RMAN rman target / set incarnation 1; ... |
|||
:
Нравится:
Не нравится:
|
|||
|
27.04.2020, 10:49
|
|||
---|---|---|---|
|
|||
Восстановление бекапа на другом сервере |
|||
#18+
Вячеслав Любомудров, Статус БДSQL> select status from v$instance; STATUS ------------ MOUNTED Попытка сбросаRMAN> set incarnation 1; executing command: SET incarnation using target database control file instead of recovery catalog RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: failure of set command at 04/27/2020 13:38:35 RMAN-00600: internal error, arguments [8516] [KEY] [2] [] [] В прошлый раз, при переносе БД с виндовс на линукс я столкнулся с проблемой(потеря архивлогов). Чтобы обойти ее использовал открытие БД с игнорированием ошибок(нашел в гугле) и все заработало. Проблема теперь сбросить инкарнацию. Я даже не знаю как мне починить БД, кроме снятия дампа и переноса данных в новую базу. Это не вариант, вес базы почти 2.5 Тб, ее пилили с разных сторон разные люди. Я копию то делаю чтобы протестировать очистку данных через экспорт\импорт схем(слишком много индексов\констрейнтов и всякого добра, в том числе таблица лежит в одной схеме, но овнер у нее от другой). Подскажи как изменить код бекапа чтобы снять нормальный. Мне кажется проще будет... ... |
|||
:
Нравится:
Не нравится:
|
|||
|
27.04.2020, 10:53
|
|||
---|---|---|---|
|
|||
Восстановление бекапа на другом сервере |
|||
#18+
Update: у меня есть бекап, снятый мною на холодную. Выключение БД и тупо копирование файлов\контрольника. Он рабочий, уже поднимал. Поэтому подозреваю косяк именно в методе бекапирования( та самая строка с удалением архивлогов до момента бекапа) ... |
|||
:
Нравится:
Не нравится:
|
|||
|
27.04.2020, 11:13
|
|||
---|---|---|---|
|
|||
Восстановление бекапа на другом сервере |
|||
#18+
Зачем тебе архивлоги сформированные 4 дня назад, если ты сейчас делаешь полный бэкап БД и текущих (сформированных за время бэкапа) логов? Инкарнации БД (записанные в контролфайле) видны через v$database_incarnation Ну и подключаться к RMAN надо без каталога (nocatalog) Конечно, чтоб разговор был более предметным желательно бы увидеть логи бэкапа и восстановления Иначе это все на уровне домыслов ... |
|||
:
Нравится:
Не нравится:
|
|||
|
27.04.2020, 11:48
|
|||
---|---|---|---|
|
|||
Восстановление бекапа на другом сервере |
|||
#18+
Вячеслав Любомудров, Лог бекапа не знаю как тут приложить. Очень много букаф(11к строк). Могу оттуда что нибудь вырезать, но не знаю что может быть важно.... Лога восстановления нет. Не делал, т.к. восстанавливал руками(запустил screen, restore и ушел спать на 2 дня, по сети бекап тяну). ... |
|||
:
Нравится:
Не нравится:
|
|||
|
27.04.2020, 11:49
|
|||
---|---|---|---|
|
|||
Восстановление бекапа на другом сервере |
|||
#18+
О как, получилось, а написано что только для img и надо откуда-то ссылку тянуть....Ничего не понял ... |
|||
:
Нравится:
Не нравится:
|
|||
|
27.04.2020, 11:55
|
|||
---|---|---|---|
|
|||
Восстановление бекапа на другом сервере |
|||
#18+
Вячеслав Любомудров, Вячеслав ЛюбомудровИнкарнации БД (записанные в контролфайле) видны через v$database_incarnation Тут все печально, одна инкарнация года 15-го. Вячеслав ЛюбомудровНу и подключаться к RMAN надо без каталога (nocatalog) Почему? У меня в контроле каталог есть, не будет проблем с этим? Без каталога как восстанавливать? Указывать конкретные файлы с бекапом? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
27.04.2020, 12:03
|
|||
---|---|---|---|
|
|||
Восстановление бекапа на другом сервере |
|||
#18+
Заранее прошу прощения за количество вопросов, которые многим могут показаться глупыми. Как я уже говорил в другой теме почти год назад: Меня вкинули в Oracle без спасательного круга и сразу на большую БД, без каких либо документов по ней. Так что я со всем разбираюсь по ходу дела и пытаюсь привести ее к вразумительному состоянию. На текущий момент это пересобрать табличные пространства с помощью экспорта\импорта, настроить толковый бекап и сделать тестовую БД для разработки(с правильным перезаливом раз в неделю, как должно быть) ... |
|||
:
Нравится:
Не нравится:
|
|||
|
27.04.2020, 12:11
|
|||
---|---|---|---|
|
|||
Восстановление бекапа на другом сервере |
|||
#18+
Бэкап у тебя достаточный -- есть все для восстановления Еще стоит посмотреть в alert.log -- там можно увидеть, какой архивлог накатился А так, контролфайл тебе желательно восстановить из /u01/app/oracle/backup/c-*****-20200412-01 Потом попробовать через RMAN в состоянии MOUNT выполнить RECOVER DATABASE UNTIL SEQUENCE 63247; ... |
|||
:
Нравится:
Не нравится:
|
|||
|
27.04.2020, 12:13
|
|||
---|---|---|---|
|
|||
Восстановление бекапа на другом сервере |
|||
#18+
Затем, естественно alter database open resetlogs; ... |
|||
:
Нравится:
Не нравится:
|
|||
|
27.04.2020, 13:53
|
|||
---|---|---|---|
|
|||
Восстановление бекапа на другом сервере |
|||
#18+
Вячеслав Любомудров, Как я и подозревал...Видимо у меня поврежден System01.dbf ... |
|||
:
Нравится:
Не нравится:
|
|||
|
27.04.2020, 14:15
|
|||
---|---|---|---|
|
|||
Восстановление бекапа на другом сервере |
|||
#18+
Ничего у тебя не повреждено Ты уверен что выполнилось RESTORE? Смотри, ты удалил логи, на которые ругается -- вплоть до 62499 Затем (по логу) у тебя выполнился сам бэкап и бэкап архивлогов (сформированных как за время бэкапа, так и после) Затем выполнен АВТОБЭКАП КОНТРОЛФАЙЛА -- т.е. в нем есть вся информация о бэкапах Короче, восстанавливаешь тот самый последний контролфайл, выполняешь RESTORE DATABASE (это восстановление датафайлов), затем RECOVER DATABASE UNTIL SEQUENCE... (это накат по логам, тоже из бэкапа) А сейчас у тебя очень похоже, что восстановление (RESTORE) у тебя прошло с какого-то старого бэкапа и теперь он просит именно накат с того времени Постарайся посмотреть и осознать с каких именно бэкапов восстанавливаются твои файлы -- собственно, очень неплохо помогает информация из alert.log ... |
|||
:
Нравится:
Не нравится:
|
|||
|
27.04.2020, 14:41
|
|||
---|---|---|---|
|
|||
Восстановление бекапа на другом сервере |
|||
#18+
Вячеслав Любомудров, Вячеслав ЛюбомудровТы уверен что выполнилось RESTORE? Ну вроде как, я запускал screen и после в баш кидал две команды restore database; recover database; и падал он именно на recover. Вячеслав ЛюбомудровА сейчас у тебя очень похоже, что восстановление (RESTORE) у тебя прошло с какого-то старого бэкапа и теперь он просит именно накат с того времени У меня только один бекап, тупо не хватает места на хранение более одного. Я делал так: 1. Создал виртуальный сервер centos 6.9 2. Установил Oracle 11g 3. Через sshfs подключил диск где лежит бекап(на другом сервере) 4. Запустил rman target / и выполнил все по плану Я сейчас запущу restore заново и залогирую это дело. Можно ли как то сделать restore чтобы он не перезаписывал? Проверил -данные есть не восстанавливать. Restore идет почти 2 дня(по сети все). ... |
|||
:
Нравится:
Не нравится:
|
|||
|
27.04.2020, 16:15
|
|||
---|---|---|---|
Восстановление бекапа на другом сервере |
|||
#18+
MalishPo Можно ли как то сделать restore чтобы он не перезаписывал? Не понял. Как restore может чего-то перезаписывать? Если ты уже выполнял restore и что-то пошло не так, надо еще раз достать файлы из backup и уже над ними выполнять восстановление. Если какой-то redo log уже накатили, то это отмечается в data file и второй раз накат уже применяться не будет ... |
|||
:
Нравится:
Не нравится:
|
|||
|
27.04.2020, 16:32
|
|||
---|---|---|---|
|
|||
Восстановление бекапа на другом сервере |
|||
#18+
tru55, Спасибо, жаль. Тогда буду пробовать на выходных. Сейчас из холодного подниму(очень просят разрабы, работать надо) Вячеслав Любомудров, Когда попробуй я отпишу что вышло. Все еще думаю, что в коде бекапа где-то ошибка. Раньше бекап был проще, без проверок и удалений и перенос получался. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=52&mobile=1&tid=1881306]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
161ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
2ms |
others: | 309ms |
total: | 582ms |
0 / 0 |