Почему база данных oracle при переносе на другой сервер даёт ошибки: ORA-00742, ORA-00312?
Oracle 11g. Делаю полное холодное копирование базы на другой идентично настроенный сервер и при запуске получаю ошибки
ORA-00742: Log read detects lost write in thread %d sequence %d block %d
ORA-00312: online log 1 thread 1: '/app/oracle/oradata/orcl/redo01.log'
Пишет, как я понял, что каких-то записей недостаёт, но как такое может быть? Все файлы базы скопированы полностью, база перед копированием закрывалась. Как чего-то может недоставать?
Я почитаю по вашей ссылке. Но можете сказать как тогда правильно делать бекап базы на другой сервер и восстанавливать его там? Я всё это время просто копировал все файлы базы и потом справлялся с ошибками при восстановлении их на другом сервере.
Вот инструкция доставшаяся мне от предыдущего админа базы:
Восстановление бекапа на запасном сервере:
1) Заходим под root-ом на Server
2) останавливаем сервис - service oracle stop
3) копируем данные из каталога резервной копии в каталог /app/oracle/oradata/orcl, выставляем права на доступ 755 и владельца файлов oracle:oinstall
4) копируем файл control01.ctl в каталог /app/oracle/fast_recovery_area/orcl и переименовываем его в control02.ctl. Выставляем права доступа и владельца.
5) Запускаем сервис — service oracle start
6) смотри лог запуска /app/oracle/product/11gR1/db/startup.log и видим ошибки запуска базы orcl
7) заходим пользователем oracle – su – oracle
8) запускаем sqlplus – sqlplus /nolog;
9) коннектимся к базе под sys-ом с правами дба
10) запускаем восстановление бд — alter database recover;
11) открываем базу — alter database open;
12) выключаем бд — shutdown immediate;
13) запускаем бд — startup;
14) выходим из sqlplus – exit;
На верхнем уровне у вас все правильно: вы выключаете БД, копируете на новое место, включаете. При этом никаких ошибок восстановления быть не должно, так как вы делаете холодный бэкап. Скорее всего проблема в вашем случае в том, что "service oracle stop" не выключает, либо не успевает выключить БД до того, как вы начинаете копирование.
Я бы рекомендовал выключать БД более традиционным способом:
su - oracle
sqlplus / as sysdba
shutdown immediate
--выполнить копирование файлов БД на новое место
startup
exit
MasterArt, а для чего такие сложности? Есть же стандартные механизмы и для дампов и для бэкапов... Чем обусловлена необходимость именно в холодном копировании файлов, да еще и с последующим танцем с бубном?..
Евгений Комаров, так вроде холодный бекап проще всего должен быть. Выключил базу, скопировал на другой сервер, запустил. Я так понимаю, что моя ситуация, когда в процессе восстановления из холодного бекапа появляются ошибки это аномалия, с которой я пытаюсь разобраться.
Я когда искал решение своей проблемы обратил внимание, что люди делающие бекап через например rman сталкиваются с такими же проблема при востановлении.