Пост о том, как я сначала боролся, а потом подружился с Oracle.
Задача: развернуть "горячий" бэкап БД
Средства: любые
Во-первых, я нашел внятный мануал как поставить Oracle на Linux.
Во-вторых сам Oracle. Я брал версию 10g r2 для Linux
Сначала меня удивил установщик,его надо обязательно запускать из-под иксов(!), что на мой взгляд не совсем удобно. Продолжая действовать по шагам у меня все получилось, за исключением web-менеджера (я так подумал, он мне нахер не нужен).
А потом началось самое интересное. Бекап и рестор баз данных на Oracle.
Какое-то время все шло хорошо и даже возникающие ошибки были нормальным делом в такой ситтуации.
Меня подкосила команда
В конце концов он меня попросил дать ему архивный файл, которого не было на сервере с работающей базой.
Решил я подойти с другой стороны. Так как мне не важно было на какой момент восстановится база, а важно чтоб она в принципе восстановилась, то я изменил команду на
Вот это загадочное длинное число - это (я так понял) номер изменения в базе после начала бэкапа. И соответственно все изменения до него, рековер должен брать в архивных файлах.
Кстати, есть еще вариант с until date, но я его приберегу до следующего раза.
Затем, естественно, при попытке
Ок, давай ставить патч. Искал я его очень долго, в конце концов нашел на торрентах, потому что с oracle.com скачать я его не смог.
После установки патча я сначала проапгрейдил тестовую базу, которая ставится вместе с Oracle, а потом принялся за свою. Как обычно бывает в таких ситтуациях, в первом случае все прошло отлично, во втором случае были проблемы.
Не буду описывать все свои мытарства, а расскажу решение.
Запускаем $sqlplus /nolog
После этого осталось только настроить tsnlistener и работать.
Upd. Я забыл про temp-файл. его надо создать командой:
Задача: развернуть "горячий" бэкап БД
Средства: любые
Во-первых, я нашел внятный мануал как поставить Oracle на Linux.
Во-вторых сам Oracle. Я брал версию 10g r2 для Linux
Сначала меня удивил установщик,его надо обязательно запускать из-под иксов(!), что на мой взгляд не совсем удобно. Продолжая действовать по шагам у меня все получилось, за исключением web-менеджера (я так подумал, он мне нахер не нужен).
А потом началось самое интересное. Бекап и рестор баз данных на Oracle.
Какое-то время все шло хорошо и даже возникающие ошибки были нормальным делом в такой ситтуации.
Меня подкосила команда
recover database until cancel using backup controlfile;После ее запуска я ввел AUTO и рестор стал просить у меня архивные логи. Как оказалось, ему они требовались все и я их копировал и копировал с работающей базы.
В конце концов он меня попросил дать ему архивный файл, которого не было на сервере с работающей базой.
Решил я подойти с другой стороны. Так как мне не важно было на какой момент восстановится база, а важно чтоб она в принципе восстановилась, то я изменил команду на
recover database until change 88654992150 using backup controlfile;
Вот это загадочное длинное число - это (я так понял) номер изменения в базе после начала бэкапа. И соответственно все изменения до него, рековер должен брать в архивных файлах.
Кстати, есть еще вариант с until date, но я его приберегу до следующего раза.
Затем, естественно, при попытке
alter database open resetlogs;он выдавал мне ошибку, что мол, не могу. В логах я нашел, что версия не подходящая, версия базы 10.2.0.3.0, а версия сервера 10.2.0.1.0.
Ок, давай ставить патч. Искал я его очень долго, в конце концов нашел на торрентах, потому что с oracle.com скачать я его не смог.
После установки патча я сначала проапгрейдил тестовую базу, которая ставится вместе с Oracle, а потом принялся за свою. Как обычно бывает в таких ситтуациях, в первом случае все прошло отлично, во втором случае были проблемы.
Не буду описывать все свои мытарства, а расскажу решение.
Запускаем $sqlplus /nolog
SQL> connect / as sysdba
SQL> startup upgrade
Тут база монтируется и открывается для апгрейда.SQL> @?/rdbms/admin/utlirp.sql
Долго-долго выполняется скрипт. Он исправляет все неправильные объекты в БДSQL> shut
Вырубаем и запускаем. Затем делаем: SQL> startup upgrade
SQL> @?/rdbms/admin/catupgrd.sql
Опять долго-долго выполняется скрипт. Но это последнее, что нужно сделать для апгрейда.SQL> shut
Теперь вырубаем и запускаем в нормальном режиме SQL> startup
Проапгрейдить базу мне помогли здесь и здесьПосле этого осталось только настроить tsnlistener и работать.
Upd. Я забыл про temp-файл. его надо создать командой:
SQL> alter tablespace temp add tempfile '/path/to/base/temp/temp01.dbf' SIZE 500M;
Удалить его можно другой командойalter database tempfile '/path/to/base/temp/temp01.dbf' drop;
Upd2.Восстановление до времени
SQL> recover database until time '2011-07-27:15:30:00' using backup controlfile
Upd2.Восстановление до времени
SQL> recover database until time '2011-07-27:15:30:00' using backup controlfile