С АСМ'ом раньше никогда не работал, так что просьба сильно не пинать. Появился ряд вопросов, ответы на которые я не смог сразу найти в документации или поведение реальной системы сильно от документации отличается.
Версия и ASM и базы:
sys@+asm> select * from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production
PL/SQL Release 11.2.0.2.0 - Production
CORE 11.2.0.2.0 Production
TNS for Linux: Version 11.2.0.2.0 - Production
NLSRTL Version 11.2.0.2.0 - Production
В качестве документации использовалось, в основном,
Oracle® Automatic Storage Management Administrator's Guide 11g Release 2 (11.2) Part Number E16102-07 |
---|
|
.Вопрос 0. Существует ли дополнительная _оракловая_ документация на тему ASM? Может быть, я просто её не увидел?
Вопрос 1. Как осуществить замену дисков на более ёмкие? Я делал так:
alter diskgroup DATA drop disk 'DATA_0003';
-- подождали, пока он дропнется - смотрим в v$asm_disk
-- подождали, пока станет пусто в v$asm_operation
-- вынули старый, вставили новый
select * from v$asm_disk;
alter diskgroup DATA add disk '/dev/sdg4';
-- подождали пока он добавится - смотрим в v$asm_disk
-- подождали пока дискгруппа станет целой - смотрим в v$asm_diskgroup
-- подождали, пока станет пусто в v$asm_operation
После этого можно менять следующий диск.
Вопросы:
а) почему момент фактического окончания операции не совпадает с окончанием операции в v$asm_operation?
б) можно ли не дожидаться окончания операций в v$asm_disk?
в) можно ли как-то временно затормозить ребаланс, для того, чтобы он прошёл всего единожды и только для вновь вставленного диска?
Вопрос 2: Остановил сервер halt -p. Понятно, что база закрылась некорректно, хотя и работа на ней не велась.
Заменил винт, включил. ASM отказался стартовать - всё в соответствии с документацией.
Собственно, вопрос: как правильно заменить умерший винт, если машина выключена?
Я делал так (менялось два диска, по одному в каждой группе):
-- все попытки перевести старые файлы в offline или дроппуть не увенчались успехом
-- в связи с невоспринимаемыми инстансом именами что-то вроде _DROPPED_0003_DATA
alter diskgroup DISK mount force;
alter diskgroup FRA mount force;
-- все попытки перевести старые файлы в offline или дроппуть не увенчались успехом
-- в связи с невоспринимаемыми инстансом именами что-то вроде _DROPPED_0003_DATA
-- через некоторое время, диски пропали сами
alter diskgroup DATA add disk '/dev/sdf4';
alter diskgroup FRA add disk '/dev/sdk4';
-- ребилд пошёл
Вот в этот момент я решил открыть базу. База смонтировалась, но не открылась:
alert_olap.log |
---|
... ALTER DATABASE MOUNT NOTE: Loaded library: System SUCCESS: diskgroup DATA was mounted NOTE: dependency between database olap and diskgroup resource ora.DATA.dg is established SUCCESS: diskgroup FRA was mounted NOTE: dependency between database olap and diskgroup resource ora.FRA.dg is established Successful mount of redo thread 1, with mount id 31089765 Database mounted in Exclusive Mode Lost write protection disabled Completed: ALTER DATABASE MOUNT Fri Mar 18 14:15:40 2011 alter database open Beginning crash recovery of 1 threads parallel recovery started with 7 processes Started redo scan Completed redo scan read 5 KB redo, 0 data blocks need recovery Aborting crash recovery due to error 15081 Errors in file /u01/app/oracle/diag/rdbms/olap/olap/trace/olap_ora_6038.trc: ORA-15081: failed to submit an I/O operation to a disk Errors in file /u01/app/oracle/diag/rdbms/olap/olap/trace/olap_ora_6038.trc: ORA-15081: failed to submit an I/O operation to a disk ORA-15081 signalled during: alter database open ... |
olap_ora_6038.trc |
---|
...Successfully allocated 7 recovery slaves Using 20 overflow buffers per recovery slave Thread 1 checkpoint: logseq 4, block 444926, scn 973420 cache-low rba: logseq 4, block 520004 on-disk rba: logseq 4, block 520014, scn 1005578 start recovery at logseq 4, block 520004, scn 0 Reading mirrors of log member '+DATA/olap/onlinelog/group_1.258.746043091' (thread 1 seq 4 block 520014) ksfdrfms:Mirror Read file=+DATA/olap/onlinelog/group_1.258.746043091 fob=0x3041b3710 bufp=0x2b7d6bf44000 blkno=520014 nbytes=91136 ksfdrfms: Read success from mirror side=1 logical extent number=0 disk=DATA_0003 path=/dev/asm/sdf4 Mirror I/O done from ASM disk /dev/asm/sdf4 ksfdrnms:Mirror Read file=+DATA/olap/onlinelog/group_1.258.746043091 fob=0x3041b3710 bufp=0x2b7d6bf44000 nbytes=91136 ksfdrnms: Read success from mirror side=2 logical extent number=1 disk=DATA_0004 path=/dev/asm/sdc4 Mirror I/O done from ASM disk /dev/asm/sdc4 ksfdrnms:Mirror Read file=+DATA/olap/onlinelog/group_1.258.746043091 fob=0x3041b3710 bufp=0x2b7d6bf44000 nbytes=91136 Reading mirrors of log member '+FRA/olap/onlinelog/group_1.256.746043099' (thread 1 seq 4 block 520014) ksfdrfms:Mirror Read file=+FRA/olap/onlinelog/group_1.256.746043099 fob=0x3041b3d50 bufp=0x2b7d6bf44000 blkno=520014 nbytes=91136 ksfdrfms: Read success from mirror side=1 logical extent number=0 disk=FRA_0002 path=/dev/asm/sdb4 Mirror I/O done from ASM disk /dev/asm/sdb4 ksfdrnms:Mirror Read file=+FRA/olap/onlinelog/group_1.256.746043099 fob=0x3041b3d50 bufp=0x2b7d6bf44000 nbytes=91136 ksfdrnms: Read failed from mirror side=2 logical extent number=1 dskno=65535 ... ---------------------------------------------- ORA-15081: failed to submit an I/O operation to a disk ORA-15081: failed to submit an I/O operation to a disk |
Как только диски в ASM'е проребалансировались, база успешно открылась:
alert_olap.log |
---|
... Fri Mar 18 14:27:08 2011 SUCCESS: disk _DROPPED_0000_FRA (0.3915945199) dropped from diskgroup FRAFri Mar 18 14:28:52 2011 alter database open Beginning crash recovery of 1 threads parallel recovery started with 7 processes Started redo scan Completed redo scan read 5 KB redo, 0 data blocks need recovery Started redo application at Thread 1: logseq 4, block 520004 Recovery of Online Redo Log: Thread 1 Group 1 Seq 4 Reading mem 0 Mem# 0: +DATA/olap/onlinelog/group_1.258.746043091 Mem# 1: +FRA/olap/onlinelog/group_1.256.746043099 Completed redo application of 0.00MB Completed crash recovery at Thread 1: logseq 4, block 520014, scn 1025578 0 data blocks read, 0 data blocks written, 5 redo k-bytes read Fri Mar 18 14:28:53 2011 Thread 1 advanced to log sequence 5 (thread open) Thread 1 opened at log sequence 5 Current log# 2 seq# 5 mem# 0: +DATA/olap/onlinelog/group_2.259.746043113 Current log# 2 seq# 5 mem# 1: +FRA/olap/onlinelog/group_2.257.746043123 Successful open of redo thread 1 MTTR advisory is disabled because FAST_START_MTTR_TARGET is not set Fri Mar 18 14:28:53 2011 SMON: enabling cache recovery [6635] Successfully onlined Undo Tablespace 2. Undo initialization finished serial:0 start:320444 end:320814 diff:370 (3 seconds) Dictionary check beginning Dictionary check complete Verifying file header compatibility for 11g tablespace encryption.. Verifying 11g file header compatibility for tablespace encryption completed SMON: enabling tx recovery Database Characterset is CL8MSWIN1251 No Resource Manager plan active replication_dependency_tracking turned off (no async multimaster replication found) Starting background process QMNC Fri Mar 18 14:28:55 2011 QMNC started with pid=36, OS id=6669 LOGSTDBY: Validating controlfile with logical metadata LOGSTDBY: Validation complete ... |
Т.е. до этого времени инстанс полагал, что диск у ASM'а есть? А если бы я просто выдернул винт? Кстати, надо попробовать...
За интересующий период в логах асма много чего есть, но сам лог достаточно большой, так что я его прикрепил отдельным файлом.
Был бы благодарен за любые соображения и пинки в нужных направлениях
---
Интерпретирую программы и двигаю курсор (c)