Автор:
McZimДата написания: 25.05.2011
Сегодня я хочу рассказать о том, как можно мигрировать данные БД с Sun SVM в Oracle ASM, с минимальным временем простоя.
Мы имеем Sun сервер с СУБД Oracle 10g. Два SCSI диска в зеркале, каждый по 36Гб, под управлением Sun SVM. На этом зеркале расположены файлы данных рабочей базы данных. Задача — мигрировать файлы базы данных в Oracle ASM, с минимальным временем простоя, имея в распоряжении только эти два диска.
Из документации:
Solaris Volume Manager is a software product that lets you manage large numbers of disks and the data on those disks. Although there are many ways to use Solaris Volume Manager, most tasks include the following:
- Increasing storage capacity
- Increasing data availability
- Easing administration of large storage devices
In some instances, Solaris Volume Manager can also improve I/O performance.
Из документации:
Automatic Storage Management (ASM) is an integrated file system and volume manager expressly built for Oracle database files. ASM provides the performance of raw I/O with the easy management of a file system. It simplifies database administration by eliminating the need for you to directly manage potentially thousands of Oracle database files. It does this by enabling you to divide all available storage into disk groups. You manage a small set of disk groups and ASM automates the placement of the database files within those disk groups.
Итак, посмотрим как выглядит наша конфигурация SVM.
root@Server$ metastat
d62: Mirror
Submirror 0: d36
State: Okay
Submirror 1: d46
State: Okay
Pass: 1
Read option: roundrobin (default)
Write option: parallel (default)
Size: 69208884 blocks (33 GB)
d36: Submirror of d62
State: Okay
Size: 69208884 blocks (33 GB)
Stripe 0:
Device Start Block Dbase State Reloc Hot Spare
c1t2d0s6 0 No Okay Yes
d46: Submirror of d62
State: Okay
Size: 69208884 blocks (33 GB)
Stripe 0:
Device Start Block Dbase State Reloc Hot Spare
c1t3d0s6 0 No Okay Yes
Видим что есть зеркало
d62 и два подзеркала
d36 и
d46. Выводим подзеркало
d46 из конфигурации.
root@Server$ metadetach d62 d46
d62: submirror d46 is detached
Смотрим что получилось.
root@Server$ metastat
d62: Mirror
Submirror 0: d36
State: Okay
Pass: 1
Read option: roundrobin (default)
Write option: parallel (default)
Size: 69208884 blocks (33 GB)
d36: Submirror of d62
State: Okay
Size: 69208884 blocks (33 GB)
Stripe 0:
Device Start Block Dbase State Reloc Hot Spare
c1t2d0s6 0 No Okay Yes
В конфигурации SVM у нас осталось зеркало с одним подзеркалом. Начнем подготовку устройства, которое мы только что вывели из конфигурации SVM. Мы знаем, что это устройство c1t3d0 (смотри вывод metastat).
root@Server$ format
Searching for disks...done
AVAILABLE DISK SELECTIONS:
0. c1t0d0 <SUN36G cyl 24620 alt 2 hd 27 sec 107>
/pci@1c,600000/scsi@2/sd@0,0
1. c1t1d0 <SUN36G cyl 24620 alt 2 hd 27 sec 107>
/pci@1c,600000/scsi@2/sd@1,0
2. c1t2d0 <SUN36G cyl 24620 alt 2 hd 27 sec 107>
/pci@1c,600000/scsi@2/sd@2,0
3. c1t3d0 <SUN36G cyl 24620 alt 2 hd 27 sec 107>
/pci@1c,600000/scsi@2/sd@3,0
Specify disk (enter its number): 3
selecting c1t3d0
[disk formatted]
FORMAT MENU:
disk - select a disk
type - select (define) a disk type
partition - select (define) a partition table
current - describe the current disk
format - format and analyze the disk
repair - repair a defective sector
label - write label to the disk
analyze - surface analysis
defect - defect list management
backup - search for backup labels
verify - read and display labels
save - save new disk/partition definitions
inquiry - show vendor, product and revision
volname - set 8-character volume name
!<cmd> - execute <cmd>, then return
quit
format> p
PARTITION MENU:
0 - change `0' partition
1 - change `1' partition
2 - change `2' partition
3 - change `3' partition
4 - change `4' partition
5 - change `5' partition
6 - change `6' partition
7 - change `7' partition
select - select a predefined table
modify - modify a predefined partition table
name - name the current table
print - display the current table
label - write partition map and label to the disk
!<cmd> - execute <cmd>, then return
quit
partition> p
Current partition table (original):
Total disk cylinders available: 24620 + 2 (reserved cylinders)
Part Tag Flag Cylinders Size Blocks
0 unassigned wu 0 0 (0/0/0) 0
1 unassigned wu 0 0 (0/0/0) 0
2 unassigned wu 0 0 (0/0/0) 0
3 unassigned wu 0 0 (0/0/0) 0
4 unassigned wu 0 0 (0/0/0) 0
5 unassigned wu 0 0 (0/0/0) 0
6 usr wu 1 - 23956 33.00GB (23956/0/0) 69208884
7 reserved wm 23957 - 23962 8.46MB (6/0/0) 17334
Выбирая номера разделов мы должны полчить структуру разделов, как показано выше.
Важно! Основной раздел должен начинаться с 1, а не с 0. После того, как мы подготовили разделы, информацию о них нужно сохранить.
partition> lab
Ready to label disk, continue? y
partition> q
root@Server$ chown oracle:dba /dev/rdsk/c1t3d0s6
Все, диск готов для внесения в конфигурацию ASM. Создадим +ASM инстанс.
Указываем:
- Пароль пользователя sys.
- Логин пользователя, кому принадлежит ORACLE_HOME (по умолчанию это oracle).
- Указываем его пароль.
- Жмем продолжить.
После завершения увидим следующее:
- Статус выполнения плохой.
- На самом деле все в порядке. Просто у нас нет дисковых групп для монтирования.
Вводим параметры конфигурации:
- Создадим дисковую группу, содержащую один диск. При этом укажем параметр external redundancy.
- Путь, где искать "сырые" устройства.
- Путь, куда складывать файлы аудита.
- Название слушателя входящих соединений.
- Порт слушателя.
Указываем:
- Домашнюю директорию инстанса.
- Указываем пароль для пользователя sys нового инстанса.
- Подтверждаем его.
- Указываем владельца домашней директории инстанса.
- Его пароль.
Теперь мы готовы к миграции данных.
- Созданная нами дисковая группа.
- Видим активное чтение с устройства.
- Видим активную запись в устройство.
- Миграция успешно завершена.
- Время простоя 14 минут.
Мы смигрировали нашу базу данных. Теперь оставшееся зеркало и подзеркало нам больше не нужны. Мы их разберем и добавим освободившийся диск к нашей группе в ASM.
root@Server$ metaclear d36
root@Server$ metaclear d62
root@Server$ metadb -d c1t2d0s7
root@Server$ chown oracle:dba /dev/rdsk/c1t2d0s6
- Диск пуст.
- Ожидается выполнение одной операции.
- Операция перебалансировки данных между дисками группы.
- Процент завершения.
Видим дисковую активность, теперь наоборот, с устройства c1t3d0 данные переносятся на устройство c1t2d0.
Миграция завершена. Мы создали конфигурацию Oracle ASM с дисковой группой для внешней избыточности, и перенесли данные с 14 минутным временем простоя сервера.
Когда вы создаете дисковую группу с внешней избыточностью, вам нужно позаботиться, что бы какое-то устройство обеспечивало эту избыточность, например дисковый массив. Пример был показан с использованием Oracle Enterprise Manager (OEM). Все то же самое можно проделать, например, с использованием Recovery Manager (RMAN).