После того, как был добавлен новый LUN, был настроен автостарт базы осталось решить последнюю проблему - необходимо перенести базу из текущих asm_diskgroups, поднятых на RAID0 в новую asm_diskgroup, созданную на базе нового добавленного LUN'а RAID1.
При подготовке к данному переносу почитал доку, ноты металинка и провел ряд тестов на своей тестовой базе в VMVare-машине. В результате составил след.инструкцию, которую и использовал при работе с продакшн базой.
====
Задача: Перенести базу в новую asm_diskgroup
Данные: Имя новой asm_diskgroup - EVA01R1
1) Сделать бэкап control- файла
SQL> select name from v$controlfile;
SQL> alter database backup controlfile to '+EVA01R1';
2) Задать новое месторасположение control-файла в spfile
SQL> alter system set control_files='+EVA01R1\ITC\CONTROLFILE\CONTROL01.CTL' SCOPE=SPFILE;
Прим. если spfile не используется экземпляром, то прописать в его init.ora
3) Восстановить новый из старого control-файла
$ rman target /
RMAN > shutdown immediate;
RMAN > startup nomount;
RMAN> restore controlfile from '+EVA02/itc/controlfile/current.266.610247845';
4) Запустить копирование базы
RMAN> alter database mount;
RMAN> backup as copy database format ' +EVA01R1 ';
5) Переключить базу на копию
RMAN> switch database to copy;
RMAN> RUN
{
SWITCH TEMPFILE 1 TO '+EVA01R1';
}
6) Добавить в init.ora
параметр Db_create_file_dest=+eva01r1
7) Открыть базу
RMAN> alter database open;
8) Добавить в новую asm_diskgroup зеркальные копии онлайн-логов во всего журнальные группы экземпляра
alter database add logfile member ' +EVA01R1 ' to group 1 ;
alter database add logfile member ' +EVA01R1 ' to group 2;
alter database add logfile member ' +EVA01R1 ' to group 3 ;
alter database add logfile member ' +EVA01R1 ' to group 4 ;
alter database add logfile member ' +EVA01R1 ' to group 5 ;
9) Переключить журнал
alter system archive log current
10) Удалить старые копии журналов из старой asm_diskgroup
Можно использовать скрипт (здесь старая группа +EVA02)
declare
strSQL varchar2( 200 );
begin
for pList in (select member from v$logfile where member like '+EVA02/%' ) loop
strSQL:= 'alter database drop logfile member "' || pList.member || '"' ;
begin
EXECUTE IMMEDIATE strSQL;
end;
end loop;
end;
или вручную через
alter database drop logfile member '+EVA02/itc/onlinelog/group_1.256.609887989’
(имя файла изменять на свое)
Проверить остались ли старые файлы
select member from v$logfile where member like '+EVA02/%'
11) Переместить файл block_change_tracking
SQL> select status,filename
from v$block_change_tracking;
SQL> alter database disable block change tracking
SQL> alter database enable block change tracking
using file '+EVA01R1' reuse;
12) Проверить месторасположение всех фалов
select name from v$controlfile
union
select name from v$datafile
union
select name from v$tempfile
union
select member from v$logfile
union
select filename from v$block_change_tracking
13) Удалить все старые дисковые группы как ненужные
SQL> drop diskgroup eva01 including contents;
SQL> drop diskgroup eva02 including contents;
Saturday, August 11, 2007
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment