"Нас Атакуют!" Изобличи козни лукавого, запрети диаволу
Восстановление работоспособности Оракл RAC после полной потери дисков
Технология Oracle Real Application Cluster (RAC) получила широкое распространение благодаря производительности, масштабируемости и надёжности. Предлагаемые Ораклом средства резервного копирования позволяют быстро восстановить данные пользователя после потери дисков. В то же время, полная потеря voting disks и crs disks происходит редко и обычно застаёт администраторов баз данных врасплох. Непродуманные действия приводят к необходимости переустановки Grid Infrastructure (т.е. всего кластера).
Предлагаемая читателю заметка рассказывает о быстром восстановлении работоспособности Oracle RAC 11g Grid Infrastructure после полной потери voting disks (дисков кворума) и crs disks.
Прежде чем мы продолжим, я хотел бы привести строки из Евангелия:
.................. == От Марка святое благовествование == ......................
=== Глава 16, Стих 14 ===
14 Наконец, явился самим одиннадцати, возлежавшим на вечери, и упрекал их за
неверие и жестокосердие, что видевшим Его воскресшего не поверили.
15 И сказал им: идите по всему миру и проповедуйте Евангелие всей твари.
16 Кто будет веровать и креститься, спасен будет; а кто не будет веровать,
осужден будет.
Лично для вас благая весть - Единородный Сын Божий Иисус Христос любит вас, Он взошёл на крест за ваши грехи, был распят и на третий день воскрес, сел одесную Бога и открыл нам дорогу в Царствие Небесное.
В преддверии Великого Поста и Пасхи Христовой начинается Неделя о
Страшном суде. В эту неделю каждому из нас следует особенно хорошо задуматься о
том, как и для чего мы живём, какие поступки совершаем и как относимся к
окружающим нас братьям и сёстрам.
Евангелие от Марка ясно показывает нам что Господь, невзирая на лица,
осуждает всех согрешивших - даже Святых Апостолов Иисус упрекал "за неверие и
жестокосердие, что видевшим Его воскресшего не поверили". И это были люди,
ходившие со Христом, следовавшие во всём Его учению, видевшие ужас Его распятия.
Задумайтесь - каково же будет нам, ежедневно грешащим и не кающимся, расстраивающим,
раздражающим и гневящим Отца небесного нашими неверием и жестокосердием?
Именно поэтому последняя неделя перед Великим Постом и напоминает нам о
неизбежности Страшного Суда. Судя по нашим делам, все мы заслуживаем осуждения
за наше безверие и невнимание к Богу. Что же делать нам, как спастись? И тут
Евангелие даёт нам простой и ясный ответ - "Кто будет веровать и креститься,
спасен будет".
Покайтесь, примите Иисуса как вашего Спасителя, ибо наступают последние времена и время близко - стоит Судья у ворот.
Пожалуйста, в своих каждодневных трудах, какими бы занятыми вы себе ни казались - находите время для Бога, Его заповедей и Библии.
На главной странице этого сайта вы найдете программу для чтения Библии в командной строке - буду очень рад если программа окажется полезной. Пожалуйста, читайте Библию, на экране или в печатном виде - вы будете искренне удивлены как много там сказано лично про вас и ваши обстоятельства.
Вернёмся к нашим техническим деталям.
В качестве тестовой системы мы будем использовать 8-узловой Oracle 11g Release 2 кластер на платформе Exadata. Начав с быстрого обзора средств резервного копирования, мы предпримем деструктивные действия и в конце восстановим полную работосопособность системы.
Резервное копирование для RAC
Для удачного последующего восстановления кластера вначале нам необходимо проверить наличие полного работающего бэкапа кластерной базы данных и CRS дисков.
Начнём с холодного (offline) бэкапа кластерной базы данных. Если у вас имеется надёжная проверенная резервная копия базы, то этот шаг можно пропустить. На платформе Exadata (как и любой другой, использующей Oracle ASM), мы должны использовать Recovery Manager.
........................ == Книга пророка Варуха == ............................ === Глава 3, Стих 2 === 1 Господи Вседержителю, Боже Израиля! стесненная душа и унылый дух взывает к Тебе: 2 услышь, Господи, и помилуй, ибо Ты Бог милосердый; помилуй, ибо мы согрешили пред Тобою; 3 Ты - вечно пребывающий, а мы - вечно погибающие. (b+/b-, c+/c-, +/-, *) > [oracle@reatdb01 backup]$ rman Recovery Manager: Release 11.2.0.2.0 - Production on Mon Feb 20 01:06:39 2012 Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved. RMAN> connect target connected to target database (not started) -- База должна быть остановлена -- без использования опции "abort". RMAN> startup mount -- Монтируется только один экземпляр из восьми. Oracle instance started database mounted Total System Global Area 8351150080 bytes Fixed Size 2243120 bytes Variable Size 4580181456 bytes Database Buffers 3758096384 bytes Redo Buffers 10629120 bytes RMAN> -- База данных не открывается для пользователей. RMAN> report schema 2> ; using target database control file instead of recovery catalog Report of database schema for database with db_unique_name reatdb List of Permanent Datafiles =========================== File Size(MB) Tablespace RB segs Datafile Name ---- -------- -------------------- ------- ------------------------ 1 740 SYSTEM *** +DBFS_DG/reatdb/datafile/system.256.770108715 2 2820 SYSAUX *** +DBFS_DG/reatdb/datafile/sysaux.257.770108715 3 100 UNDOTBS1 *** +DBFS_DG/reatdb/datafile/undotbs1.258.770108715 4 5 USERS *** +DBFS_DG/reatdb/datafile/users.259.770108715 5 345 EXAMPLE *** +DBFS_DG/reatdb/datafile/example.267.770108799 6 25 UNDOTBS2 *** +DBFS_DG/reatdb/datafile/undotbs2.268.770108945 7 50 UNDOTBS3 *** +DBFS_DG/reatdb/datafile/undotbs3.269.770108945 8 50 UNDOTBS4 *** +DBFS_DG/reatdb/datafile/undotbs4.270.770108945 9 50 UNDOTBS5 *** +DBFS_DG/reatdb/datafile/undotbs5.271.770108945 10 525 UNDOTBS6 *** +DBFS_DG/reatdb/datafile/undotbs6.272.770108945 11 1050 UNDOTBS7 *** +DBFS_DG/reatdb/datafile/undotbs7.273.770108945 12 150 UNDOTBS8 *** +DBFS_DG/reatdb/datafile/undotbs8.274.770108945 List of Temporary Files ======================= File Size(MB) Tablespace Maxsize(MB) Tempfile Name ---- -------- -------------------- ----------- -------------------- 1 475 TEMP 32767 +DBFS_DG/reatdb/tempfile/temp.266.770108797 RMAN> RMAN> backup current controlfile format '/u01/app/oracle/backup/ctrl_bckp.dmp'; Starting backup at 20-FEB-12 allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=128 instance=reatdb1 device type=DISK channel ORA_DISK_1: starting full datafile backup set channel ORA_DISK_1: specifying datafile(s) in backup set including current control file in backup set channel ORA_DISK_1: starting piece 1 at 20-FEB-12 channel ORA_DISK_1: finished piece 1 at 20-FEB-12 piece handle=/u01/app/oracle/backup/ctrl_bckp.dmp tag=TAG20120220T012323 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:00:03 Finished backup at 20-FEB-12 RMAN> RMAN> backup spfile format '/u01/app/oracle/backup/spfile_bckp.dmp'; Starting backup at 20-FEB-12 using channel ORA_DISK_1 channel ORA_DISK_1: starting full datafile backup set channel ORA_DISK_1: specifying datafile(s) in backup set including current SPFILE in backup set channel ORA_DISK_1: starting piece 1 at 20-FEB-12 channel ORA_DISK_1: finished piece 1 at 20-FEB-12 piece handle=/u01/app/oracle/backup/spfile_bckp.dmp tag=TAG20120220T012355 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01 Finished backup at 20-FEB-12 RMAN> RMAN> sql 'alter database backup controlfile to trace'; sql statement: alter database backup controlfile to trace RMAN> RMAN> backup database format '/u01/app/oracle/backup/bckp_%U'; Starting backup at 20-FEB-12 using channel ORA_DISK_1 channel ORA_DISK_1: starting full datafile backup set channel ORA_DISK_1: specifying datafile(s) in backup set input datafile file number=00002 name=+DBFS_DG/reatdb/datafile/sysaux.257.770108715 input datafile file number=00011 name=+DBFS_DG/reatdb/datafile/undotbs7.273.770108945 input datafile file number=00001 name=+DBFS_DG/reatdb/datafile/system.256.770108715 input datafile file number=00010 name=+DBFS_DG/reatdb/datafile/undotbs6.272.770108945 input datafile file number=00005 name=+DBFS_DG/reatdb/datafile/example.267.770108799 input datafile file number=00012 name=+DBFS_DG/reatdb/datafile/undotbs8.274.770108945 input datafile file number=00003 name=+DBFS_DG/reatdb/datafile/undotbs1.258.770108715 input datafile file number=00007 name=+DBFS_DG/reatdb/datafile/undotbs3.269.770108945 input datafile file number=00008 name=+DBFS_DG/reatdb/datafile/undotbs4.270.770108945 input datafile file number=00009 name=+DBFS_DG/reatdb/datafile/undotbs5.271.770108945 input datafile file number=00006 name=+DBFS_DG/reatdb/datafile/undotbs2.268.770108945 input datafile file number=00004 name=+DBFS_DG/reatdb/datafile/users.259.770108715 channel ORA_DISK_1: starting piece 1 at 20-FEB-12 channel ORA_DISK_1: finished piece 1 at 20-FEB-12 piece handle=/u01/app/oracle/backup/bckp_03n3ojrv_1_1 tag=TAG20120220T012727 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:02:25 channel ORA_DISK_1: starting full datafile backup set channel ORA_DISK_1: specifying datafile(s) in backup set including current control file in backup set including current SPFILE in backup set channel ORA_DISK_1: starting piece 1 at 20-FEB-12 channel ORA_DISK_1: finished piece 1 at 20-FEB-12 piece handle=/u01/app/oracle/backup/bckp_04n3ok0h_1_1 tag=TAG20120220T012727 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:00:03 Finished backup at 20-FEB-12 RMAN> [oracle@reatdb01 ~]$ ls -latrh /u01/app/oracle/backup/ total 2.4G drwxr-xr-x 13 oracle oinstall 4.0K Feb 20 01:05 .. -rw-r----- 1 oracle oinstall 19M Feb 20 01:23 ctrl_bckp.dmp -rw-r----- 1 oracle oinstall 96K Feb 20 01:23 spfile_bckp.dmp -rw-r----- 1 oracle oinstall 2.4G Feb 20 01:27 bckp_03n3ojrv_1_1 -rw-r----- 1 oracle oinstall 19M Feb 20 01:30 bckp_04n3ok0h_1_1 drwxr-xr-x 2 oracle oinstall 4.0K Feb 20 01:30 . -rw-r----- 1 oracle oinstall 13K Feb 20 01:30 control_create.sql [oracle@reatdb01 ~]$
Теперь проверим наличие резервных копий Oracle CRS, автоматически включающих диски кворума (voting disks). Oracle CRS делает такие копии самостоятельно, через определённые интервалы времени, установленные производителем.
.......................... == Книга Екклезиаста == ............................. === Глава 2, Стих 11 === 11 И оглянулся я на все дела мои, которые сделали руки мои, и на труд, которым трудился я, делая _их:_ и вот, все - суета и томление духа, и нет _от них_ пользы под солнцем! 12 И обратился я, чтобы взглянуть на мудрость и безумие и глупость: ибо что _может сделать_ человек после царя _сверх того,_ что уже сделано? 13 И увидел я, что преимущество мудрости перед глупостью такое же, как преимущество света перед тьмою: 14 у мудрого глаза его - в голове его, а глупый ходит во тьме; но узнал я, что одна участь постигает их всех. (b+/b-, c+/c-, +/-, *) > -- Определим где находятся автоматические резервные копии OCR / VD. [oracle@reatdb01 ~]$ /u01/app/11.2.0/grid/bin/ocrconfig -showbackup reatdb01 2012/02/19 23:57:24 /u01/app/11.2.0/grid/cdata/reat/backup00.ocr -- каждые 4 часа reatdb01 2012/02/19 19:57:23 /u01/app/11.2.0/grid/cdata/reat/backup01.ocr reatdb01 2012/02/19 15:57:23 /u01/app/11.2.0/grid/cdata/reat/backup02.ocr reatdb01 2012/02/19 07:57:21 /u01/app/11.2.0/grid/cdata/reat/day.ocr -- ежедневно reatdb01 2012/02/19 07:57:21 /u01/app/11.2.0/grid/cdata/reat/week.ocr -- еженедельно reatdb08 2011/12/17 09:47:21 /u01/app/11.2.0/grid/cdata/reat/backup_20111217_094721.ocr -- backup сделан reatdb08 2011/12/17 09:44:35 /u01/app/11.2.0/grid/cdata/reat/backup_20111217_094435.ocr -- пользователем [oracle@reatdb01 ~]$ [oracle@reatdb01 ~]$ ls -la /u01/app/11.2.0/grid/cdata/reat/ total 50312 drwxrwxr-x 2 oracle oinstall 4096 Feb 19 23:57 . drwxrwxr-x 5 oracle oinstall 4096 Dec 17 03:34 .. -rw------- 1 root root 8568832 Feb 19 23:57 backup00.ocr -rw------- 1 root root 8568832 Feb 19 19:57 backup01.ocr -rw------- 1 root root 8568832 Feb 19 15:57 backup02.ocr -rw------- 1 root root 8568832 Feb 19 07:57 day.ocr -rw------- 1 root root 8568832 Feb 2 23:53 week_.ocr -rw------- 1 root root 8568832 Feb 19 07:57 week.ocr [oracle@reatdb01 ~]$
Очевидно, что теперь мы имеем все необходимые копии. Убедимся что наш кластер исправно работает.
........... == Второе соборное послание святого апостола Петра == .............. === Глава 2, Стих 8 === 4 Ибо, если Бог ангелов согрешивших не пощадил, но, связав узами адского мрака, предал блюсти на суд для наказания; 5 и если не пощадил первого мира, но в восьми душах сохранил семейство Ноя, проповедника правды, когда навел потоп на мир нечестивых; 6 и если города Содомские и Гоморрские, осудив на истребление, превратил в пепел, показав пример будущим нечестивцам, 7 а праведного Лота, утомленного обращением между людьми неистово развратными, избавил 8 (ибо сей праведник, живя между ними, ежедневно мучился в праведной душе, видя и слыша дела беззаконные) -- 9 то, конечно, знает Господь, как избавлять благочестивых от искушения, а беззаконников соблюдать ко дню суда, для наказания, 10 а наипаче тех, которые идут вслед скверных похотей плоти, презирают начальства, дерзки, своевольны и не страшатся злословить высших, 11 тогда как и Ангелы, превосходя их крепостью и силою, не произносят на них пред Господом укоризненного суда. (b+/b-, c+/c-, +/-, *) > [oracle@reatdb01 ~]$ /u01/app/11.2.0/grid/bin/crsctl check cluster -all ************************************************************** reatdb01: CRS-4537: Cluster Ready Services is online CRS-4529: Cluster Synchronization Services is online CRS-4533: Event Manager is online ************************************************************** reatdb02: CRS-4537: Cluster Ready Services is online CRS-4529: Cluster Synchronization Services is online CRS-4533: Event Manager is online ************************************************************** reatdb03: CRS-4537: Cluster Ready Services is online CRS-4529: Cluster Synchronization Services is online CRS-4533: Event Manager is online ************************************************************** reatdb04: CRS-4537: Cluster Ready Services is online CRS-4529: Cluster Synchronization Services is online CRS-4533: Event Manager is online ************************************************************** reatdb05: CRS-4537: Cluster Ready Services is online CRS-4529: Cluster Synchronization Services is online CRS-4533: Event Manager is online ************************************************************** reatdb06: CRS-4537: Cluster Ready Services is online CRS-4529: Cluster Synchronization Services is online CRS-4533: Event Manager is online ************************************************************** reatdb07: CRS-4537: Cluster Ready Services is online CRS-4529: Cluster Synchronization Services is online CRS-4533: Event Manager is online ************************************************************** reatdb08: CRS-4537: Cluster Ready Services is online CRS-4529: Cluster Synchronization Services is online CRS-4533: Event Manager is online ************************************************************** [oracle@reatdb01 ~]$
Теперь настало время нарушить спокойствие наших ДБА и произвести "необратимые разрушения".
Диагностика потери работоспособности RAC
Итак, что-то произошло и наша кластерная база данных стала недоступна для пользователей. Выясним, что же случилось. Мы уже знаем что на узлах кластера нет активных процессов базы данных. Работает ли сам кластер?
[oracle@reatdb01 ~]$ /u01/app/11.2.0/grid/bin/olsnodes PRCO-19: Failure retrieving list of nodes in the cluster PRCO-2: Unable to communicate with the clusterware [oracle@reatdb01 ~]$
Сам кластер находится в неработоспособном состоянии. Посмотрим были ли какие-либо нарушения в работе операционной системы.
[oracle@reatdb01 ~]$ dcli -g dbs_group -l root uptime -- утилита dcli позволяет запускать команды параллельно reatdb01: 02:15:10 up 5 min, 1 user, load average: 0.21, 0.43, 0.22 reatdb02: 02:15:10 up 5 min, 0 users, load average: 0.23, 0.45, 0.23 reatdb03: 02:15:10 up 5 min, 0 users, load average: 0.19, 0.30, 0.14 reatdb04: 02:15:10 up 5 min, 0 users, load average: 0.20, 0.32, 0.16 reatdb05: 02:15:10 up 5 min, 0 users, load average: 0.06, 0.28, 0.15 reatdb06: 02:15:10 up 5 min, 0 users, load average: 0.23, 0.26, 0.12 reatdb07: 02:15:10 up 5 min, 0 users, load average: 0.12, 0.21, 0.10 reatdb08: 02:15:10 up 4 min, 0 users, load average: 0.19, 0.26, 0.11 [oracle@reatdb01 ~]$
Как видно, все 8 узлов кластера перегрузились сами собой в одно и то же время. Это очень похоже на результат сбоя в работе Oracle Clusterware. Проверим лог файлы в Oracle Grid Infrastructure home.
[root@reatdb01 reatdb01]# pwd /u01/app/11.2.0/grid/log/reatdb01 [root@reatdb01 reatdb01]# [root@reatdb01 reatdb01]# tail alertreatdb01.log ... 2012-02-20 02:04:52.798 [cssd(15693)]CRS-1649:An I/O error occured for voting file: o/192.168.10.22/GD_DBFS_CD_03_reatss04; details at (:CSSNM00059:) in /u01/app/11.2.0/grid/log/reatdb01/cs sd/ocssd.log. ... [cssd(15693)]CRS-1615:No I/O has completed after 50% of the maximum interval. Voting file o/192.168.10.20/GD_DBFS_CD_03_reatss02 will be considered not functional in 99760 milliseconds ... [cssd(15693)]CRS-1604:CSSD voting file is offline: o/192.168.10.19/GD_DBFS_CD_03_reatss01; details at (:CSSNM00058:) in /u01/app/11.2.0/grid/log/reatdb01/cssd/ocssd.log. 2012-02-20 02:08:09.079 [cssd(15693)]CRS-1604:CSSD voting file is offline: o/192.168.10.20/GD_DBFS_CD_03_reatss02; details at (:CSSNM00058:) in /u01/app/11.2.0/grid/log/reatdb01/cssd/ocssd.log. 2012-02-20 02:08:10.081 [cssd(15693)]CRS-1604:CSSD voting file is offline: o/192.168.10.9/GD_DBFS_CD_03_reatss05; details at (:CSSNM00058:) in /u01/app/11.2.0/grid/log/reatdb01/cssd/ocssd.log. 2012-02-20 02:08:10.081 [cssd(15693)]CRS-1604:CSSD voting file is offline: o/192.168.10.21/GD_DBFS_CD_03_reatss03; details at (:CSSNM00058:) in /u01/app/11.2.0/grid/log/reatdb01/cssd/ocssd.log. 2012-02-20 02:08:10.082 [cssd(15693)]CRS-1606:The number of voting files available, 1, is less than the minimum number of voting files required, 3, resulting in CSSD termination to ensure data integrity; details at (:CSSNM00018:) in /u01/app/11.2.0/grid/log/reatdb01/cssd/ocssd.log 2012-02-20 02:08:10.082 [cssd(15693)]CRS-1656:The CSS daemon is terminating due to a fatal error; Details at (:CSSSC00012:) in /u01/app/11.2.0/grid/log/reatdb01/cssd/ocssd.log 2012-02-20 02:08:10.113 [cssd(15693)]CRS-1652:Starting clean up of CRSD resources. 2012-02-20 02:08:10.297 [cssd(15693)]CRS-1653:The clean up of the CRSD resources failed. 2012-02-20 02:08:11.626 [ohasd(4597)]CRS-2765:Resource 'ora.evmd' has failed on server 'reatdb01'. ... [ohasd(4597)]CRS-8011:reboot advisory message from host: reatdb05, component: cssmonit, with time stamp: L-2012-02-20-02:08:12.438 [ohasd(4597)]CRS-8013:reboot advisory message text: clsnomon_status: need to reboot, unexpected failure 8 received from CSS 2012-02-20 02:08:12.482 [ohasd(4597)]CRS-8011:reboot advisory message from host: reatdb05, component: cssagent, with time stamp: L-2012-02-20-02:08:12.439 [ohasd(4597)]CRS-8013:reboot advisory message text: clsnomon_status: need to reboot, unexpected failure 8 received from CSS 2012-02-20 02:08:12.620 [ohasd(4597)]CRS-8011:reboot advisory message from host: reatdb06, component: cssagent, with time stamp: L-2012-02-20-02:08:12.620 [ohasd(4597)]CRS-8013:reboot advisory message text: clsnomon_status: need to reboot, unexpected failure 8 received from CSS 2012-02-20 02:08:12.620 [ohasd(4597)]CRS-8011:reboot advisory message from host: reatdb03, component: cssmonit, with time stamp: L-2012-02-20-02:08:12.620 [ohasd(4597)]CRS-8013:reboot advisory message text: clsnomon_status: need to reboot, unexpected failure 8 received from CSS ... *** reboot *** ... [cssd(6887)]CRS-1713:CSSD daemon is started in clustered mode *** ВАЖНО - no Voting Disks *** 2012-02-20 02:12:56.579 [cssd(6887)]CRS-1714:Unable to discover any voting files, retrying discovery in 15 seconds; Details at (:CSSNM00070:) in /u01/app/11.2.0/grid/log/reatdb01/cssd/ocssd.log *** ВАЖНО - no CRS Disks *** 2012-02-20 02:13:00.285 [client(6941)]CRS-1013:The OCR location in an ASM disk group is inaccessible. Details in /u01/app/11.2.0/grid/log/reatdb01/client/crsctl_oracle.log. ... 2012-02-20 02:15:06.721 [client(9501)]CRS-1013:The OCR location in an ASM disk group is inaccessible. Details in /u01/app/11.2.0/grid/log/reatdb01/client/crsctl_oracle.log. 2012-02-20 02:15:11.877 [cssd(6887)]CRS-1714:Unable to discover any voting files, retrying discovery in 15 seconds; Details at (:CSSNM00070:) in /u01/app/11.2.0/grid/log/reatdb01/cssd/ocssd.log 2012-02-20 02:15:26.906 [cssd(6887)]CRS-1714:Unable to discover any voting files, retrying discovery in 15 seconds; Details at (:CSSNM00070:) in /u01/app/11.2.0/grid/log/reatdb01/cssd/ocssd.log 2012-02-20 02:15:41.935 [cssd(6887)]CRS-1714:Unable to discover any voting files, retrying discovery in 15 seconds; Details at (:CSSNM00070:) in /u01/app/11.2.0/grid/log/reatdb01/cssd/ocssd.log 2012-02-20 02:15:56.964 [cssd(6887)]CRS-1714:Unable to discover any voting files, retrying discovery in 15 seconds; Details at (:CSSNM00070:) in /u01/app/11.2.0/grid/log/reatdb01/cssd/ocssd.log [root@reatdb01 reatdb01]#
Лог файлы показывают, что по какой-то причине были одновременно потеряны все CRS и Voting disk файлы, находящиеся в дисковой группе ASM. Визуальная проверка показала, что все диски в трёх ячейках (Exadata Storage Server) были физически повреждены, что привело к невосстановимой потере всех дисковых групп. Подобный эффект может быть причинён плохо работающим RAID контроллером, неудачным обновлением firmware дисков или любым другим логическим повреждением данных. К сожалению, в реальной жизни события развиваются по такому сценарию значительно чаще, чем нам хотелось бы.
Восстановление работоспособности RAC
Предположим, что мы физически заменили все повреждённые диски и они благополучно распознаны дисковыми RAID контроллерами и операционными системами. Возможно, что нам пришлось полностью восстановить операционную систему и конфигурацию повреждённых ячеек Exadata, посредством загрузки со встроенного USB диска. Теперь, когда всё hardware восстановлено, нам необходимо вернуть кластер в рабочее состояние. Этот процесс начинается с восстановления дисковых групп ASM. Выполним некоторые предварительные действия:
............... == Книга Премудрости Иисуса, сына Сирахова == .................. === Глава 10, Стих 8 === 8 Владычество переходит от народа к народу по причине несправедливости, обид и любостяжания. (b+/b-, c+/c-, +/-, *) > -- убедимся, что Oracle CRS остановлен на всех узлах кластера - выполним команду как "root". [root@reatdb01 reatdb01]# dcli -g /home/oracle/dbs_group -l root /u01/app/11.2.0/grid/bin/crsctl stop crs -f ... Обычно, на это требуется достаточно долгое время. -- Теперь все процессы CRS уже должны быть остановлены на всех узлах кластера: [root@reatdb01 reatdb01]# dcli -g /home/oracle/dbs_group -l root ps -ef | grep d.bin reatdb01: root 30725 10206 0 02:34 pts/0 00:00:00 grep d.bin [root@reatdb01 reatdb01]# -- Определим местонахождение резервных копий OCR [root@reatdb01 reatdb01]# dcli -g /home/oracle/dbs_group -l root find / -name *.ocr -print reatdb01: /u01/app/11.2.0/grid/cdata/reat/day.ocr reatdb01: /u01/app/11.2.0/grid/cdata/reat/backup00.ocr reatdb01: /u01/app/11.2.0/grid/cdata/reat/week.ocr reatdb01: /u01/app/11.2.0/grid/cdata/reat/backup01.ocr reatdb01: /u01/app/11.2.0/grid/cdata/reat/backup02.ocr reatdb01: /u01/app/11.2.0/grid/cdata/reat/week_.ocr reatdb03: /u01/app/11.2.0/grid/cdata/reat/day.ocr reatdb03: /u01/app/11.2.0/grid/cdata/reat/backup00.ocr reatdb03: /u01/app/11.2.0/grid/cdata/reat/week_.ocr reatdb03: /u01/app/11.2.0/grid/cdata/reat/day_.ocr reatdb03: /u01/app/11.2.0/grid/cdata/reat/backup01.ocr reatdb03: /u01/app/11.2.0/grid/cdata/reat/backup02.ocr reatdb03: /u01/app/11.2.0/grid/cdata/reat/week.ocr reatdb08: /u01/app/11.2.0/grid/cdata/reat/backup_20111217_094435.ocr reatdb08: /u01/app/11.2.0/grid/cdata/reat/backup_20111217_094721.ocr [root@reatdb01 reatdb01]# -- Мы будем восстанавливать последний backup: [root@reatdb01 reatdb01]# ls -latrh /u01/app/11.2.0/grid/cdata/reat/backup00.ocr -rw------- 1 root root 8.2M Feb 19 23:57 /u01/app/11.2.0/grid/cdata/reat/backup00.ocr [root@reatdb01 reatdb01]# -- Куда же именно необходимо восстановить OCR и VD? В нашей системе - в ASM группу DBFS_DG. [root@reatdb01 reatdb01]# cat /etc/oracle/ocr.loc ocrconfig_loc=+DBFS_DG -- Именно здесь стартующие процессы будут искать конфигурацию CRS. local_only=FALSE [root@reatdb01 reatdb01]#
Поскольку OCR диск расположен в ASM группе, восстановить автоматический или пользовательский бэкап OCR напрямую из копии нельзя. Команда "ocrconfig -restore", восстанавливающая OCR, требует присутствия ASM. В то же время, ASM не может стартовать без работающих процессов CRS. К тому же, для удачного восстановления OCR диск должен быть как-то защищён от "посторонних" записей на время копирования данных из backup файла.
Решить эту головоломку позволяет "эксклюзивный" режим запуска процессов CRS.
........................... == Притчи Соломона == .............................. === Глава 26, Стих 18 === 18 Как притворяющийся помешанным бросает огонь, стрелы и смерть, 19 так - человек, который коварно вредит другу своему и потом говорит: "я только пошутил". (b+/b-, c+/c-, +/-, *) > -- Запускаем CRS stack в "эксклюзивном" режиме только на том узле кластера, на котором находится резервная копия [root@reatdb01 ~]# /u01/app/11.2.0/grid/bin/crsctl start crs -excl -nocrs --- ВАЖНО CRS-4123: Oracle High Availability Services has been started. CRS-2672: Attempting to start 'ora.mdnsd' on 'reatdb01' CRS-2676: Start of 'ora.mdnsd' on 'reatdb01' succeeded CRS-2672: Attempting to start 'ora.gpnpd' on 'reatdb01' CRS-2676: Start of 'ora.gpnpd' on 'reatdb01' succeeded CRS-2672: Attempting to start 'ora.cssdmonitor' on 'reatdb01' CRS-2672: Attempting to start 'ora.gipcd' on 'reatdb01' CRS-2676: Start of 'ora.cssdmonitor' on 'reatdb01' succeeded CRS-2676: Start of 'ora.gipcd' on 'reatdb01' succeeded CRS-2672: Attempting to start 'ora.cssd' on 'reatdb01' CRS-2672: Attempting to start 'ora.diskmon' on 'reatdb01' CRS-2676: Start of 'ora.diskmon' on 'reatdb01' succeeded CRS-2676: Start of 'ora.cssd' on 'reatdb01' succeeded CRS-2672: Attempting to start 'ora.drivers.acfs' on 'reatdb01' CRS-2672: Attempting to start 'ora.cluster_interconnect.haip' on 'reatdb01' CRS-2672: Attempting to start 'ora.ctssd' on 'reatdb01' CRS-2676: Start of 'ora.drivers.acfs' on 'reatdb01' succeeded CRS-2676: Start of 'ora.ctssd' on 'reatdb01' succeeded CRS-2676: Start of 'ora.cluster_interconnect.haip' on 'reatdb01' succeeded CRS-2672: Attempting to start 'ora.asm' on 'reatdb01' CRS-2676: Start of 'ora.asm' on 'reatdb01' succeeded --- ВАЖНО [root@reatdb01 ~]#
Необходимые CSS и ASM процессы были запущены без OCR диска с "ограниченной" функциональностью, достаточной для создания дисковой группы и последующего размещения в ней восстановленных записей OCR. Создадим нужные дисковые группы.
......................... == Книга пророка Авдия == ............................ === Глава 1, Стих 9 === 5 Не воры ли приходили к тебе? не ночные ли грабители, что ты так разорен? Но они украли бы столько, сколько надобно им. Если бы проникли к тебе обиратели винограда, то и они разве не оставили бы несколько ягод? 6 Как обобрано все у Исава и обысканы тайники его! 7 До границы выпроводят тебя все союзники твои, обманут тебя, одолеют тебя живущие с тобою в мире, ядущие хлеб твой нанесут тебе удар. Нет в нем смысла! 8 Не в тот ли день это будет, говорит Господь, когда Я истреблю мудрых в Едоме и благоразумных на горе Исава? 9 Поражены будут страхом храбрецы твои, Феман, дабы все на горе Исава истреблены были убийством. (b+/b-, c+/c-, +/-, *) > -- Создание дискгруппы, согласно ocr.loc файлу (DBFS_DG в нашем случае) [oracle@reatdb01 ~]$ . oraenv ORACLE_SID = [oracle] ? +ASM1 The Oracle base has been set to /u01/app/oracle [oracle@reatdb01 ~]$ [oracle@reatdb01 ~]$ sqlplus / as sysasm SQL*Plus: Release 11.2.0.2.0 Production on Mon Feb 20 03:46:09 2012 Copyright (c) 1982, 2010, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production With the Real Application Clusters and Automatic Storage Management options INST_ID INSTANCE_NAME HOST_NAME STATUS LOGINS ---------- ---------------- --------------------------------------------- ------------ ---------- 1 +ASM1 reatdb01.read-and-think.org STARTED ALLOWED 1 row selected. Elapsed: 00:00:00.04 03:46:09 SQL> 03:49:39 SQL> create diskgroup DBFS_DG normal redundancy 03:50:44 2 disk 'o/*/GD_DBFS*' -- Так указываются имена дисков в Exadata 03:51:33 3 ATTRIBUTE 'cell.smart_scan_capable'='true', -- Использовать функцию Exadata Smart Scan 03:51:43 4 'AU_SIZE' = '4M', 03:51:51 5 'COMPATIBLE.ASM' = '11.2.0.2', 03:52:03 6 'COMPATIBLE.RDBMS' = '11.2.0.2'; Diskgroup created. Elapsed: 00:00:14.54 03:52:24 SQL> --- Создадим все остальные группы, необходимые для последующего восстановления файлов базы данных 03:56:01 SQL> select GROUP_NUMBER, TOTAL_MB, REQUIRED_MIRROR_FREE_MB, USABLE_FILE_MB, OFFLINE_DISKS 03:56:28 2 from v$asm_diskgroup; GROUP_NUMBER TOTAL_MB REQUIRED_MIRROR_FREE_MB USABLE_FILE_MB OFFLINE_DISKS ------------ ---------- ----------------------- -------------- ------------- 1 4239360 307200 1965420 0 -- Нет "offline" дисков 2 33996800 2457600 15768828 0 3 32168000 2325376 14920540 0 3 rows selected. Elapsed: 00:00:00.29 03:56:33 SQL> 1 select GROUP_NUMBER, HEADER_STATUS, count(*) 2 from v$asm_disk 3 group by GROUP_NUMBER, HEADER_STATUS 4* order by GROUP_NUMBER, HEADER_STATUS 03:59:58 SQL> / GROUP_NUMBER HEADER_STATU COUNT(*) ------------ ------------ ---------- 1 MEMBER 138 -- Все ASM диски являются участниками групп 2 MEMBER 166 3 MEMBER 166 3 rows selected. Elapsed: 00:00:00.23 03:59:59 SQL>
Теперь у нас есть необходимое "хранилище" для новых записей OCR - дисковая группа DBFS_DG. Восстановим OCR бэкап из найденного выше файла.
........................ == Книга пророка Иеремии == ........................... === Глава 2, Стих 17 === 17 Не причинил ли ты себе это тем, что оставил Господа Бога твоего в то время, когда Он путеводил тебя? 18 И ныне для чего тебе путь в Египет, чтобы пить воду из Нила? и для чего тебе путь в Ассирию, чтобы пить воду из реки ее? 19 Накажет тебя нечестие твое, и отступничество твое обличит тебя; итак познай и размысли, как худо и горько то, что ты оставил Господа Бога твоего и страха Моего нет в тебе, говорит Господь Бог Саваоф. (b+/b-, c+/c-, +/-, *) > -- Восстанавливаем последний OCR backup, как пользователь "root". [root@reatdb01 ~]# /u01/app/11.2.0/grid/bin/ocrconfig -restore /u01/app/11.2.0/grid/cdata/reat/backup00.ocr [root@reatdb01 ~]# -- Восстановленные данные сохраняются в дисковой группе DBFS_DG, согласно файлу "/etc/oracle/ocr.loc". -- Проверим результат восстановления: [root@reatdb01 ~]# /u01/app/11.2.0/grid/bin/ocrcheck Status of Oracle Cluster Registry is as follows : Version : 3 Total space (kbytes) : 262120 Used space (kbytes) : 4220 Available space (kbytes) : 257900 ID : 1452089109 Device/File Name : +DBFS_DG Device/File integrity check succeeded Device/File not configured Device/File not configured Device/File not configured Device/File not configured Cluster registry integrity check succeeded Logical corruption check succeeded [root@reatdb01 ~]#
Теперь необходимо восстановить данные для дисков кворума (voting disks) - их копии хранятся в только что созданном CRS.
................... == От Луки святое благовествование == ...................... === Глава 5, Стих 8 === 8 Увидев это, Симон Петр припал к коленям Иисуса и сказал: выйди от меня, Господи! потому что я человек грешный. (b+/b-, c+/c-, +/-, *) > [root@reatdb01 ~]# /u01/app/11.2.0/grid/bin/crsctl replace votedisk +DBFS_DG Successful addition of voting disk 37f5676d6fae4fcabfd097a08e2f4392. Successful addition of voting disk b1f9ddce679c4f78bf25b7735617e56a. Successful addition of voting disk 335dbdf0aec74fe9bf9315fb82fc813a. Successfully replaced voting disk group with +DBFS_DG. CRS-4266: Voting file(s) successfully replaced -- По умолчанию создаются 3 диска [root@reatdb01 ~]# [root@reatdb01 ~]# /u01/app/11.2.0/grid/bin/crsctl query css votedisk ## STATE File Universal Id File Name Disk group -- ----- ----------------- --------- --------- 1. ONLINE 37f5676d6fae4fcabfd097a08e2f4392 (o/192.168.10.18/GD_DBFS_CD_09_reatss14) [DBFS_DG] 2. ONLINE b1f9ddce679c4f78bf25b7735617e56a (o/192.168.10.17/GD_DBFS_CD_08_reatss13) [DBFS_DG] 3. ONLINE 335dbdf0aec74fe9bf9315fb82fc813a (o/192.168.10.16/GD_DBFS_CD_07_reatss12) [DBFS_DG] Located 3 voting disk(s). [root@reatdb01 ~]#
Сами экземпляры ASM могли использовать общий серверный параметр файл, хранимый в дисковой группе и потерянный вместе с дисками. В таком случае содержимое SPFILE для ASM может быть легко восстановлено - найдите в ASM alert log файле строку "System parameters with non-default values" и используйте последующие значения.
Теперь, когда все необходимые действия по восстановлению данных выполнены, мы можем остановить CRS, всё ещё работающий в "эксклюзивном" режиме.
.............................. == Псалтирь == .................................. === Глава 27, Стих 9 === 9 Спаси народ Твой и благослови наследие Твое; паси их и возвышай их во веки! (b+/b-, c+/c-, +/-, *) > [root@reatdb01 ~]# /u01/app/11.2.0/grid/bin/crsctl stop crs -f CRS-2791: Starting shutdown of Oracle High Availability Services-managed resources on 'reatdb01' CRS-2673: Attempting to stop 'ora.drivers.acfs' on 'reatdb01' CRS-2673: Attempting to stop 'ora.ctssd' on 'reatdb01' CRS-2673: Attempting to stop 'ora.asm' on 'reatdb01' CRS-2673: Attempting to stop 'ora.mdnsd' on 'reatdb01' CRS-2677: Stop of 'ora.mdnsd' on 'reatdb01' succeeded CRS-2677: Stop of 'ora.asm' on 'reatdb01' succeeded CRS-2673: Attempting to stop 'ora.cluster_interconnect.haip' on 'reatdb01' CRS-2677: Stop of 'ora.drivers.acfs' on 'reatdb01' succeeded CRS-2677: Stop of 'ora.cluster_interconnect.haip' on 'reatdb01' succeeded CRS-2677: Stop of 'ora.ctssd' on 'reatdb01' succeeded CRS-2673: Attempting to stop 'ora.cssd' on 'reatdb01' CRS-2677: Stop of 'ora.cssd' on 'reatdb01' succeeded CRS-2673: Attempting to stop 'ora.diskmon' on 'reatdb01' CRS-2673: Attempting to stop 'ora.gipcd' on 'reatdb01' CRS-2677: Stop of 'ora.gipcd' on 'reatdb01' succeeded CRS-2673: Attempting to stop 'ora.gpnpd' on 'reatdb01' CRS-2677: Stop of 'ora.diskmon' on 'reatdb01' succeeded CRS-2677: Stop of 'ora.gpnpd' on 'reatdb01' succeeded CRS-2793: Shutdown of Oracle High Availability Services-managed resources on 'reatdb01' has completed CRS-4133: Oracle High Availability Services has been stopped. [root@reatdb01 ~]#
Наш кластер уже может быть запущен в нормальном режиме. Конечно, база данных не сможет запуститься - её файлы были потеряны.
......... == Второе послание к Коринфянам святого апостола Павла == ............ === Глава 5, Стих 18 === 18 Все же от Бога, Иисусом Христом примирившего нас с Собою и давшего нам служение примирения, 19 потому что Бог во Христе примирил с Собою мир, не вменяя _людям_ преступлений их, и дал нам слово примирения. (b+/b-, c+/c-, +/-, *) > [root@reatdb01 ~]# /u01/app/11.2.0/grid/bin/crsctl start crs CRS-4123: Oracle High Availability Services has been started. [root@reatdb01 ~]# [oracle@reatdb01 ~]$ dcli -g dbs_group -l root /u01/app/11.2.0/grid/bin/crsctl start crs reatdb01: CRS-4640: Oracle High Availability Services is already active reatdb01: CRS-4000: Command Start failed, or completed with errors. reatdb02: CRS-4123: Oracle High Availability Services has been started. reatdb03: CRS-4123: Oracle High Availability Services has been started. reatdb04: CRS-4123: Oracle High Availability Services has been started. reatdb05: CRS-4123: Oracle High Availability Services has been started. reatdb06: CRS-4123: Oracle High Availability Services has been started. reatdb07: CRS-4123: Oracle High Availability Services has been started. reatdb08: CRS-4123: Oracle High Availability Services has been started. [oracle@reatdb01 ~]$ [root@reatdb01 ~]# /u01/app/11.2.0/grid/bin/crsctl check cluster CRS-4537: Cluster Ready Services is online CRS-4529: Cluster Synchronization Services is online CRS-4533: Event Manager is online [root@reatdb01 ~]# /u01/app/11.2.0/grid/bin/crsctl check cluster -all ************************************************************** reatdb01: CRS-4537: Cluster Ready Services is online CRS-4529: Cluster Synchronization Services is online CRS-4533: Event Manager is online ************************************************************** reatdb02: CRS-4537: Cluster Ready Services is online CRS-4529: Cluster Synchronization Services is online CRS-4533: Event Manager is online ************************************************************** reatdb03: CRS-4537: Cluster Ready Services is online CRS-4529: Cluster Synchronization Services is online CRS-4533: Event Manager is online ************************************************************** reatdb04: CRS-4537: Cluster Ready Services is online CRS-4529: Cluster Synchronization Services is online CRS-4533: Event Manager is online ************************************************************** reatdb05: CRS-4537: Cluster Ready Services is online CRS-4529: Cluster Synchronization Services is online CRS-4533: Event Manager is online ************************************************************** reatdb06: CRS-4537: Cluster Ready Services is online CRS-4529: Cluster Synchronization Services is online CRS-4533: Event Manager is online ************************************************************** reatdb07: CRS-4537: Cluster Ready Services is online CRS-4529: Cluster Synchronization Services is online CRS-4533: Event Manager is online ************************************************************** reatdb08: CRS-4537: Cluster Ready Services is online CRS-4529: Cluster Synchronization Services is online CRS-4533: Event Manager is online ************************************************************** [root@reatdb01 ~]#
Всё, что остаётся сделать для полного восстановления нашего кластера - это восстановить базу данных из бэкапа, используя Oracle RMAN. Я уверен, что уважаемый читатель сможет справиться с этой задачей. Моя заметка Резервное копирование баз данных Oracle - современный подход может направить вас в нужном направлении.
Спасибо что зашли,
Будьте благословенны!
Денис