|
|
|
Создать тестовую БД из бэкапов standby ?
|
|||
|---|---|---|---|
|
#18+
Создать тестовую БД из бэкапов standby ? Oracle 10.2 В документации такого не читала, думала, что будет легко, ан нет! На стэндбае раз в неделю выполняется инкрементальный бэкап lelel_0, в остальные дни lelel_1. Мне достаночно неполное восстановление на тестовой базе на время бэкапа LEVEL_0. авторRMAN> list backup summary; List of Backups =============== Key TY LV S Device Type Completion Time #Pieces #Copies Compressed Tag ------- -- -- - ----------- ------------------- ------- ------- ---------- --- 143398 B 0 A DISK 2017-09-01 11:22:59 289 1 NO BKUP_LEVEL_0 143399 B 0 A DISK 2017-09-01 13:06:02 284 1 NO BKUP_LEVEL_0 143400 B 0 A DISK 2017-09-01 14:53:04 301 1 NO BKUP_LEVEL_0 143401 B 0 A DISK 2017-09-01 16:42:35 278 1 NO BKUP_LEVEL_0 143403 B A A DISK 2017-09-01 17:31:43 59 1 NO ARCH_BKUP RMAN> list backupset 143403; BS Key Size Device Type Elapsed Time Completion Time ------- ---------- ----------- ------------ ------------------- 143403 58.97G DISK 00:23:00 2017-09-01 17:31:43 List of Archived Logs in backup set 143403 Thrd Seq Low SCN Low Time Next SCN Next Time ---- ------- ---------- ------------------- ---------- --------- 1 506856 270973234317 2017-08-31 19:00:42 270973913778 2017-08-31 19:13:08 1 506857 270973913778 2017-08-31 19:13:08 270974286716 2017-08-31 19:30:00 ... 1 506916 271169803396 2017-09-01 15:01:43 271170193395 2017-09-01 15:10:22 1 506917 271170193395 2017-09-01 15:10:22 271170814781 2017-09-01 16:00:34 1 506918 271170814781 2017-09-01 16:00:34 271171294074 2017-09-01 16:31:06 506918 - последний № архивлога бэкапа LEvEL_0 Или посмотреть по протоколу бэкапа level_0, какой последний № архивлога. Буду задавать UNTIL SEQUENCE 506919 =506918+1 На тестовом сервере создали init-файл без параметров для Data Guard. Скопировала автобэкап контрольника с сервера-standby из $ORACLE_HOME/dbs/snapcf_xxx.f на тестовый сервер. Подмонтировала к тестовому серверу диск с rman-бэкапами стэндбая. авторrman target / RMAN> set dbid 1502262417; executing command: SET DBID run { startup nomount restore controlfile from '/u01/oracle/product/10gr2/dbs/snapcf_xxx.f'; alter database mount; set UNTIL sequence 506919; restore database; recover database; alter database open; --это я погорячилась, мне надо было: alter database open read only; } 506919 = последний архивлог из бэкапа level_0 506918 + 1 протокол: авторOracle instance started Total System Global Area 16106127360 bytes Fixed Size 2112088 bytes Variable Size 1241515432 bytes Database Buffers 14847836160 bytes Redo Buffers 14663680 bytes Starting restore at 2017-09-05 11:52:59 using target database control file instead of recovery catalog allocated channel: ORA_DISK_1 channel ORA_DISK_1: sid=4392 devtype=DISK channel ORA_DISK_1: copied control file copy output filename=/uxx/oracle/oradata/xxx/control01.ctl output filename=/uxx3/oracle/oradata/xxx/control02.ctl Finished restore at 2017-09-05 11:53:06 database mounted released channel: ORA_DISK_1 executing command: SET until clause Starting restore at 2017-09-05 11:53:12 allocated channel: ORA_DISK_1 channel ORA_DISK_1: sid=4392 devtype=DISK channel ORA_DISK_1: starting datafile backupset restore channel ORA_DISK_1: specifying datafile(s) to restore from backup set ... archive log filename=/uxx/oracle/oradata/xxx/arch1_506917_560367377.dbf thread=1 sequence=506917 archive log filename=/uxx/oracle/oradata/xxx/arch1_506918_560367377.dbf thread=1 sequence=506918 Oracle Error: ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below ORA-01152: file 1 was not restored from a sufficiently old backup ORA-01110: data file 1: '/uxx/oracle/oradata/xxx/system01.dbf' media recovery complete, elapsed time: 03:49:50 Finished recover at 2017-09-06 03:31:51 RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: failure of alter db command at 09/06/2017 03:31:52 ORA-16004: backup database requires recovery ORA-01152: file 1 was not restored from a sufficiently old backup ORA-01110: data file 1: '/uxx/oracle/oradata/xxx/system01.dbf' RMAN> ORA-01152: file 1 was not restored from a sufficiently old backup -- Надо проверить наличие на диске redo !!! На диске их нет, а в контрольнике они есть, так и должно быть на standby. Чтобы создались redo запустила Redo Apply: ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT; Redo на диске создались, standby-логи - нет, но они на тестовй БД и не нужны. Отключить Redo Apply: ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL; sqlplus / as sysdba SYS> select name, database_role, switchover_status from v$database; NAME DATABASE_ROLE SWITCHOVER_STATUS --------------------------- ------------------------------------------------ ------------------------------------------------------------ SUNSET PHYSICAL STANDBY SESSIONS ACTIVE SQL> alter database open read only; Не открывается, ошибку я не записала, но вроде: ORA-16139: media recovery required SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY; ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY * ERROR at line 1: ORA-16139: media recovery required Что я делаю не так ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2017, 12:35 |
|
||
|
Создать тестовую БД из бэкапов standby ?
|
|||
|---|---|---|---|
|
#18+
База в несогласованном виде. Необходимо накатить логи для приведения ее в согласованное состояние. (в данный момент файлы базы данных имеют состояние на большее SCN чем последний SCN в логе 506918). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2017, 13:03 |
|
||
|
Создать тестовую БД из бэкапов standby ?
|
|||
|---|---|---|---|
|
#18+
На StandBy базе до окончания бэкапа были применены изменения из логов выше 506918. Почему эти логи не попали в бэкап вопрос другой (нужно смотреть как настроена связь между базами и скрипт бэкапа). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2017, 13:12 |
|
||
|
Создать тестовую БД из бэкапов standby ?
|
|||
|---|---|---|---|
|
#18+
Taciturn12База в несогласованном виде. Необходимо накатить логи для приведения ее в согласованное состояние. (в данный момент файлы базы данных имеют состояние на большее SCN чем последний SCN в логе 506918). Из ошибки и так понятно, что БД в несогласованном состоянии. Каков ответ, таков вопрос: Сколько надо накатить ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2017, 13:13 |
|
||
|
Создать тестовую БД из бэкапов standby ?
|
|||
|---|---|---|---|
|
#18+
Taciturn12На StandBy базе до окончания бэкапа были применены изменения из логов выше 506918. Почему эти логи не попали в бэкап вопрос другой (нужно смотреть как настроена связь между базами и скрипт бэкапа). А и точно, внимательнее глянула на бэкапы в первом посте: авторRMAN> list backup summary; RMAN> list backupset 143403; BKUP_LEVEL_0 закончился в 16:42:35 а архивлог 506918 сформировался 16:31:06 Я это раньше рассматривала-рассматривала и не заметила. автор### run backup level 0 show all; RUN { BACKUP INCREMENTAL LEVEL 0 AS backupset DATABASE tag 'BKUP_LEVEL_0'; BACKUP AS backupset ARCHIVELOG ALL skip inaccessible DELETE ALL INPUT tag 'ARCH_BKUP'; DELETE OBSOLETE; } Я поняла, почему так происходит. Этот скрипт, если его выполнять на праймари, то он по команде BACKUP ARCHIVELOG автоматом выполняет current log archived А на стэндбае этого не происходит. Тогда как определить до какого момента надо восставналивать бэкап ? Поскольку в alert.log на тестовом сервере выдалось сообщение про gap: авторWed Sep 6 09:50:57 2017 Clearing online redo logfile 12 complete Media Recovery Waiting for thread 1 sequence 506919 Fetching gap sequence in thread 1, gap sequence 506919-507018 FAL[client]: Error fetching gap sequence, no FAL server specified Я сейчас делаю вот что: RMAN> catalog start with '/mnt/nfs/sunray' noprompt; ... File Name: /mnt/nfs/sunray/fjsdocgg_26_1 File Name: /mnt/nfs/sunray/fjsdocgg_27_1 File Name: /mnt/nfs/sunray/fjsdocgg_28_1 File Name: /mnt/nfs/sunray/fjsdocgg_29_1 File Name: /mnt/nfs/sunray/fjsdocgg_30_1 File Name: /mnt/nfs/sunray/fjsdocgg_31_1 File Name: /mnt/nfs/sunray/c-1502262417-20170906-00 cataloging files... ... File Name: /mnt/nfs/sunray/fjsdocgg_26_1 File Name: /mnt/nfs/sunray/fjsdocgg_27_1 File Name: /mnt/nfs/sunray/fjsdocgg_28_1 File Name: /mnt/nfs/sunray/fjsdocgg_29_1 File Name: /mnt/nfs/sunray/fjsdocgg_30_1 File Name: /mnt/nfs/sunray/fjsdocgg_31_1 File Name: /mnt/nfs/sunray/c-1502262417-20170906-00 RMAN> RMAN> recover database UNTIL SEQUENCE 507019; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2017, 13:40 |
|
||
|
Создать тестовую БД из бэкапов standby ?
|
|||
|---|---|---|---|
|
#18+
Сходу думаю что один, если передаются redologs то понятно почему он не попадает в бэкап, так как еще архивлогом не является. Первый SCN лога прописывается в бэкапсете, а вот с текущим SCN файлов не подскажу. В v$datafile SCN последнего checkpoint только есть. Можно попробовать проверить его. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2017, 13:41 |
|
||
|
Создать тестовую БД из бэкапов standby ?
|
|||
|---|---|---|---|
|
#18+
Думаю надо так: Как определить UNTIL: на standby: RMAN> list backup summary; List of Backups =============== Key TY LV S Device Type Completion Time #Pieces #Copies Compressed Tag ------- -- -- - ----------- ------------------- ------- ------- ---------- --- 143398 B 0 A DISK 2017-09-01 11:22:59 289 1 NO BKUP_LEVEL_0 143399 B 0 A DISK 2017-09-01 13:06:02 284 1 NO BKUP_LEVEL_0 143400 B 0 A DISK 2017-09-01 14:53:04 301 1 NO BKUP_LEVEL_0 143401 B 0 A DISK 2017-09-01 16:42:35 278 1 NO BKUP_LEVEL_0 143403 B A A DISK 2017-09-01 17:31:43 59 1 NO ARCH_BKUP RMAN> list backupset 143401; List of Backup Sets =================== BS Key Type LV Size Device Type Elapsed Time Completion Time ------- ---- -- ---------- ----------- ------------ ------------------- 143401 Incr 0 277.65G DISK 01:49:27 2017-09-01 16:42:35 List of Datafiles in backup set 143401 File LV Type Ckp SCN Ckp Time Name ---- -- ---- ---------- ------------------- ---- 2 0 Incr 271167126506 2017-09-01 14:05:00 /uxx/oracle/oradata/xxx/system02.dbf ... 549 0 Incr 271167126506 2017-09-01 14:05:00 /uxx/oracle/oradata/xxx/center_vs_data_02.dbf ... set UNTIL SCN 271167126507; = 271167126506 Ckp SCN +1 авторRMAN> set dbid 1502262417; run { startup nomount restore controlfile from '/u01/oracle/product/10gr2/dbs/snapcf_sunset.f'; alter database mount; set UNTIL SCN 271167126507; restore database; recover database; } А следующая партия архивлогов появится на подмонтированном диске через сутки ( в мойм случае) Если процедуру восстановление тестовой БД делать регулярно в crontab'е - это не удобно. Проще: монтировать диск с бэкапами праймари и делать неполное восстанавление тестовой БД из них. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2017, 14:44 |
|
||
|
Создать тестовую БД из бэкапов standby ?
|
|||
|---|---|---|---|
|
#18+
А какой вообще смысл бэкапить StandBy, если есть бэкап основной? Я понимаю выкинуть бэкап на StandBy если он сильно нагружает систему и мешает работе, но делать и тот и другой? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2017, 14:53 |
|
||
|
Создать тестовую БД из бэкапов standby ?
|
|||
|---|---|---|---|
|
#18+
а если 1) recover database until cancel 2) далее жать ENTER несколько раз, пока ругаться не начнет 3) и далее ввести команду CANCEL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2017, 14:57 |
|
||
|
Создать тестовую БД из бэкапов standby ?
|
|||
|---|---|---|---|
|
#18+
авторТогда как определить до какого момента надо восставналивать бэкап ? как вариант посмотреть там где делался бэкап Код: plsql 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2017, 15:38 |
|
||
|
Создать тестовую БД из бэкапов standby ?
|
|||
|---|---|---|---|
|
#18+
AlionaИз ошибки и так понятно, что БД в несогласованном состоянии. где это видно? видно лишь что контрольник свежее, чем датафайл. на стендбаях нормальное явление, если не накатить логи до scn контрольника что показывает select distinct CHECKPOINT_TIME from v$datafile_header; ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2017, 16:45 |
|
||
|
Создать тестовую БД из бэкапов standby ?
|
|||
|---|---|---|---|
|
#18+
Ошибка ORA-01152 однозначно говорит, что база в несогласованном состоянии, опережение SCN контрольника в сравнении с файлами данных не вызывает такой ошибки а просто пишет, что базу нужно открывать не командой OPEN, а OPEN RESETLOGS. По поводу Код: plsql 1. сейчас проверил, что на реальной базе значения из этого представления отличаются от Код: plsql 1. , а на StandBy совпадают. Так что при создании бэкапа со StandBy, скорее всего, можно использовать это значение для поиска нужных логов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2017, 06:46 |
|
||
|
Создать тестовую БД из бэкапов standby ?
|
|||
|---|---|---|---|
|
#18+
Taciturn12 Я понимаю выкинуть бэкап на StandBy если он сильно нагружает систему и мешает работе, но делать и тот и другой? вот именно, сильно нагружают систему, поэтому праймари бэкапится раз в неделю по субботам ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2017, 09:11 |
|
||
|
Создать тестовую БД из бэкапов standby ?
|
|||
|---|---|---|---|
|
#18+
Taciturn12Ошибка ORA-01152 однозначно говорит, что база в несогласованном состоянии, опережение SCN контрольника в сравнении с файлами данных не вызывает такой ошибки а просто пишет, что базу нужно открывать не командой OPEN, а OPEN RESETLOGS. По поводу Код: plsql 1. сейчас проверил, что на реальной базе значения из этого представления отличаются от Код: plsql 1. , а на StandBy совпадают. Так что при создании бэкапа со StandBy, скорее всего, можно использовать это значение для поиска нужных логов. да пофиг на контьрольник! если нужно открыть и не важно, на какой момент времени БД - главное чтобы датафайлы были в согласованном состоянии, т.е. если нет RO файлов - селект возращает одну запись. тогда смело пересоздаем контрольник и open resetlogs. еще раз - если на стендбае контрольник свежее датафайлов, но они согласованы (датафайлы) - базу он открыть не даст! именно стендбай. праймари не помню, вроде без проблем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2017, 09:38 |
|
||
|
Создать тестовую БД из бэкапов standby ?
|
|||
|---|---|---|---|
|
#18+
Q.Tarantino, не откроете вы ничего нигде без редо/resetlogs если v$datafile.checkpoint_change# != v$datafile_header.checkpoint_change# ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2017, 12:40 |
|
||
|
Создать тестовую БД из бэкапов standby ?
|
|||
|---|---|---|---|
|
#18+
oracloudQ.Tarantino, не откроете вы ничего нигде без редо/resetlogs если v$datafile.checkpoint_change# != v$datafile_header.checkpoint_change# тут говорили про чекпоинт контрольника, если что... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2017, 12:42 |
|
||
|
Создать тестовую БД из бэкапов standby ?
|
|||
|---|---|---|---|
|
#18+
Q.TarantinoTaciturn12Ошибка ORA-01152 однозначно говорит, что база в несогласованном состоянии, опережение SCN контрольника в сравнении с файлами данных не вызывает такой ошибки а просто пишет, что базу нужно открывать не командой OPEN, а OPEN RESETLOGS. По поводу Код: plsql 1. сейчас проверил, что на реальной базе значения из этого представления отличаются от Код: plsql 1. , а на StandBy совпадают. Так что при создании бэкапа со StandBy, скорее всего, можно использовать это значение для поиска нужных логов. да пофиг на контьрольник! если нужно открыть и не важно, на какой момент времени БД - главное чтобы датафайлы были в согласованном состоянии, т.е. если нет RO файлов - селект возращает одну запись. тогда смело пересоздаем контрольник и open resetlogs. еще раз - если на стендбае контрольник свежее датафайлов, но они согласованы (датафайлы) - базу он открыть не даст! именно стендбай. праймари не помню, вроде без проблем. v$datafile_header.CHECKPOINT_TIME никакого отношения к согласованному состоянии БД не имеет и уж точно не показатель, что БД можно открыть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2017, 14:00 |
|
||
|
Создать тестовую БД из бэкапов standby ?
|
|||
|---|---|---|---|
|
#18+
Совершенно верно, но я говорил, что на реальной открытой базе это значение значительно отстает от текущей SCN в базе, но на StandBy совпало. Мне не известно как точно StandBy накатывает логи, пишет ли он после записи каждого блока в заголовок или нет, поэтому я указал что "скорее всего", так же судя по сообщениям топик стартера (и не только в этой теме) я сделал вывод что подробности она сможет проверить сама и ей не требуется четкий набор команд а лишь идея. Ну и плюс я не говорил, что v$datafile_header.CHECKPOINT_TIME имеет отношение к согласованному состоянию, а лишь может помочь в определении номера лога, до которого минимум необходимо накатить изменения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2017, 14:13 |
|
||
|
Создать тестовую БД из бэкапов standby ?
|
|||
|---|---|---|---|
|
#18+
Taciturn12Мне не известно как точно StandBy накатывает логи, пишет ли он после записи каждого блока в заголовок или нет. Механизмы примененния изменений и на стендбай и на праймари абсолютно одинаковы и уж точно не пишут в заголовок после записи каждого блока. Taciturn12Ну и плюс я не говорил, что v$datafile_header.CHECKPOINT_TIME имеет отношение к согласованному состоянию, а лишь может помочь в определении номера лога, до которого минимум необходимо накатить изменения. Это был ответ Тарантино, а не тебе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2017, 14:49 |
|
||
|
Создать тестовую БД из бэкапов standby ?
|
|||
|---|---|---|---|
|
#18+
заглянем на металинк, нота 1354256.1 How to quickly check that Database is consistent after incomplete recovery единственное еще следует проверять на Fuzziness... в остальном, как раз запрос из datafile_header и используется. так что зря на меня набросились. тогда уже и оракл попинайте на некомпитентность :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2017, 16:40 |
|
||
|
Создать тестовую БД из бэкапов standby ?
|
|||
|---|---|---|---|
|
#18+
Q.Tarantino, никто и набрасывался, все верно написано, если все датафайлы согласованы, а контрол впереди - resetlogs поможет. > а лишь может помочь в определении номера лога, до которого минимум необходимо накатить изменения Это называется stop scn в дампе заголовка датафайла. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2017, 17:50 |
|
||
|
Создать тестовую БД из бэкапов standby ?
|
|||
|---|---|---|---|
|
#18+
oracloudникто и набрасывался, все верно написано, если все датафайлы согласованы, а контрол впереди - resetlogs поможет. не факт. если контрольний стендбая был взят - то нет. пересоздвавать. проверено. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2017, 18:23 |
|
||
|
Создать тестовую БД из бэкапов standby ?
|
|||
|---|---|---|---|
|
#18+
AlionaRedo на диске создались, standby-логи - нет, но они на тестовй БД и не нужны. А вот у меня из-за этого проблема: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. Подскажите пожалуйста, что делать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2017, 07:26 |
|
||
|
Создать тестовую БД из бэкапов standby ?
|
|||
|---|---|---|---|
|
#18+
Юрий ЯкуповAlionaRedo на диске создались, standby-логи - нет, но они на тестовй БД и не нужны. А вот у меня из-за этого проблема: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. Подскажите пожалуйста, что делать? Откройте новую тему и опишите подробно вашу проблему. Эта тема вам не подходит, у вас другой случай. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2017, 12:31 |
|
||
|
|

start [/forum/topic.php?fid=52&fpage=145&tid=1885227]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
290ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
| others: | 249ms |
| total: | 635ms |

| 0 / 0 |
