Приведем пример последовательности действий, доказывающей устойчивость такого «файла» к потерям в файловой системе:
CONNECT /@prima.class AS SYSDBA SHUTDOWN IMMEDIATE CONNECT / AS SYSDBA SHUTDOWN HOST del d:\asmdisks\_file_disk3
STARTUP @asm_diskgroup @asm_disks ALTER DISKGROUP prima_data1 MOUNT; @asm_diskgroup @asm_disks CONNECT /@prima.class AS SYSDBA STARTUP SELECT COUNT ( * ) FROM scott.emp2;
Сценарии asm_diskgroup.sql и asm_disks.sql были выданы для диагностики.
Восстановить утерянный файл помогут следующие действия. Воссоздадим файл d:\asmdisks\_file_disk3 программой на Perl указанным выше образом. Затем выполним следующую последовательность действий:
CONNECT /@prima.class AS SYSDBA ALTER TABLESPACE users2 OFFLINE; CONNECT / AS SYSDBA ALTER DISKGROUP prima_data1 DISMOUNT; SHUTDOWN STARTUP ALTER DISKGROUP prima_data1 MOUNT; ALTER DISKGROUP prima_data1 ADD FAILGROUP controller2 DISK 'd:\asmdisks\_file_disk3' ; CONNECT /@prima.class AS SYSDBA ALTER TABLESPACE users2 ONLINE; SELECT COUNT ( * ) FROM scott.emp2;
При необходимости файл можно восстанавливать в любом другом надежном месте. Уточнить происходящее помогает своевременная выдача запросов в asm_diskgroup.sql и asm_disks.sql.
Упражнение. Повторить пример с потерей файлов, удалив, а затем восстановив, сразу два из них: d:\asmdisks\_file_disk3 и d:\asmdisks\_file_disk4.
1Отзывы первопроходцев не все были благоприятными, но уже в версии 10.2 картина улучшилась.
2В интернете есть и другие статьи на эту тему, все вместе удивительно перекликающиеся общими моментами. В то же время [1] содержит ряд обозначений их документации по Oracle. Однако статья [1] является наиболее ясным и полным описанием, встреченным мною.