powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / duplicate и ora 01194
10 сообщений из 10, страница 1 из 1
duplicate и ora 01194
    #39702617
Модест
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет.

Возникла задача делать регулярный дупликейт базы через медленное и нестабильное соеденинение.
Я написал парочку скриптов, которые делают бекап исходной базы, копируют файлы бэкапов на другом сервере и там с помощью команды дупликейт ресторят базу.

Обе базы фурычат в archivelog mode

Так как канал узкий, делаю инкрементальные бэкапы, планируется раз в неделю уровня 0, и каждый день уровня 1

Вот такой командой:

Код: plsql
1.
2.
rman target /
backup incremental level $1 database tag='DRC' format 'DRC_%T_%t_lvl_$1';



Потом на auxiliary сервере делаю дупликейт:

Код: plsql
1.
2.
rman auxiliary /
duplicate database to $ORACLE_SID noredo nofilenamecheck backup location '$BASE_DIR';



noredo - потому что копию можно делать не сто процентной, и я не добавляю в бекапы архивлоги.
nofilenamecheck - так как у баз одинаковая структура файлов.

В данный момент для проверки я создаю бекап уровня 0, через минуту создаю уровня 1, копипащу и на другом сервере накатываю.

В итоге НЕрегулярно возникает следующая проблема:
при накатываении бекапа уровня 1, после рековери, при открытии базы получаю ошибку:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
contents of Memory Script:
{
   Alter clone database open resetlogs;
}
executing Memory Script

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of Duplicate Db command at 09/13/2018 21:49:17
RMAN-05501: aborting duplication of target database
RMAN-03015: error occurred in stored script Memory Script
RMAN-06136: ORACLE error from auxiliary database: ORA-01194: file 3 needs more recovery to be consistent
ORA-01110: data file 3: '/u01/oradata/his/system/undo_tbs.dbf'

RMAN> 



Каждый раз это undo датафайл.

Проблема еще в том, что если я создам новый бекап и накачу его, то база откроется. И после этого попробую накотить проблемный бекап, то все отработает хорошо.

Это меня и сбивает с толку, так как я поначалу думал, что проблема в том, что бекап контрол файла создается на секунду позже, и возможно в этот момент он уже знает о изменения в анду, о которых еще не знал бекап самого файла.

Так же прошу учесть, что это делается автоматом, то есть в идеале не починить текущее состояние, а узнать в чем проблема и не допустить её в будущем.
...
Рейтинг: 0 / 0
duplicate и ora 01194
    #39702691
Фотография Vadim Lejnin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
версия какая?

есть например такой
Bug 22360720 - RMAN duplicate on Standby fails with RMAN-6136 ORA-1194 (Doc ID 22360720.8)
> Range of versions believed to be affected Versions BELOW 12.1


Обходится
Код: plsql
1.
2.
3.
4.
5.
select tag,max(ABSOLUTE_FUZZY_CHANGE#) from v$backup_datafile d , v$backup_piece p
where d.SET_STAMP=p.SET_STAMP
and d.SET_COUNT=p.SET_COUNT
group by tag
/



и установкой этого SCN для восстановления
...
Рейтинг: 0 / 0
duplicate и ora 01194
    #39702700
Фотография Vadim Lejnin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Модест,

Автомат для восстановления можно реализовать, формируя командную строку rman через sql*plus
...
Рейтинг: 0 / 0
duplicate и ora 01194
    #39702762
Модест
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vadim Lejnin,

Версия на обоих базах 12.1.0.2

И целевая база не находится в стендбай режие. В стендбай режиме может находится база источник, но я её проверяю, да и сам бекап ругается на контрол файл, который не current.

Но я попробую ваш совет, только хочу кое что прояснить:)

Я правильно понимаю, я получаю запросом scn, а потом вместо
Код: plsql
1.
duplicate database to $ORACLE_SID noredo nofilenamecheck backup location '$BASE_DIR';


выполняю свой набор команд, который будет почти таким же как сгенерированные дупликейтом, только вместо
Код: plsql
1.
2.
3.
4.
5.
   recover
   clone database
   noredo
    delete archivelog
   ;


должен быть
Код: plsql
1.
2.
3.
4.
5.
   recover
   clone database until scn 111111;
   noredo
    delete archivelog
   ;


?
...
Рейтинг: 0 / 0
duplicate и ora 01194
    #39702765
Модест
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
О, я забыл сказать, что самая первая попытка дупликейта закончилась другой ошибкой:)

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Starting restore at 13-SEP-18
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: SID=163 device type=DISK

channel ORA_AUX_DISK_1: restoring control file
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-00601: fatal error in recovery manager
RMAN-03004: fatal error during execution of command
RMAN-04006: error from auxiliary database: ORA-01092: ORACLE instance terminated. Disconnection forced



но это делал не я, поэтому деталей не знаю
...
Рейтинг: 0 / 0
duplicate и ora 01194
    #39702894
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Модестnoredo - потому что копию можно делать не сто процентной, и я не добавляю в бекапы архивлоги.
Собственно, если это происходит на открытой БД, после этого разговаривать просто не о чем. То что тебе иногда везет и с простаивающей БД ты успеваешь снять инкрементальный бэкап между чекпоинтами/записями DBWR -- так это просто везет.
...
Рейтинг: 0 / 0
duplicate и ora 01194
    #39703249
Модест
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вячеслав Любомудров,

спасибо за подсказку.

Можете чуток поподробнее объяснить?:) Если я вас правильно понял, проблема в том, что инкрементальный бекап (кстати есть разница 0-го или 1-го уровня?) снимается во время записи буфера на диск? Из-за этого они не консистенты что ли? Как вообще тогда снимать бекапы с открытой базы? И я не очень понимаю, почему проблема возникает с инкрементальными бекапами? Почему проблема из-за отсутствия архивлогов?

Заранее спасибо.
...
Рейтинг: 0 / 0
duplicate и ora 01194
    #39703275
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во время горячего бэкапа работа с БД не прекращается. Соответственно есть вероятность, что в бэкап данные с разных операций, совершенных за время собственно копирования файлов, могут попасть, могут не попасть, могут попасть частично и т.п.

Например, у тебя начался бэкап, ты уже скопировал блоки 1-50, тут бухгалтер выполняет UPDATE, который затрагивает блоки 2, 10, 100, 1000, 10000 и много других. Буферный кеш маленький и все эти изменения сброшены на диск. Ты продолжаешь бэкапить файл и добрался до 5000 блока. Тут бухгалтер решает попить чайку, врубает чайник... Короче, транзакция откатывается. А ты все бэкапишь...
В файле у тебя данные:
-- до UPDATE (блок 2, 10)
-- после UPDATE (100, 1000)
-- после ROLLBACK (10000)

Вот чтобы привести все к одному знаменателю (состоянию на конец бэкапа) необходимо накатить логи как минимум с момента начала бэкапа и до его окончания. Информация об этих двух моментах хранится в заголовке файла.
RMAN для этого идет на хитрость -- заголовок файла (0 блок) копируется последним
...
Рейтинг: 0 / 0
duplicate и ora 01194
    #39703529
Модест
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вячеслав Любомудров,

Ясно, спасибо.

А я был уверен что он делает слепок на начало бекапа, а в случае изменения блоков данных использует те же undo логи.

Не подскажите, как кошернее всего добавить в бекап архивлоги, которые сгененировались с момента начала бекапа до момента окончания?

Выражение
Код: plsql
1.
backup database plus archivlog


я использовать не хочу, так как архивлоги не архивируются, и мои бекапы становятся слишком большими. Да и насколько я понимаю, если есть отдельный процесс, бекапирующий архивлоги, то я в него вмешаюсь, и мои логи для бекапа он пропустит.
...
Рейтинг: 0 / 0
duplicate и ora 01194
    #39703771
Модест
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вобщем, я решил проблему примерно так:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
alter system archive log current;
select sequence# from v$log where status = 'CURRENT';

backup database;

alter system archive log current;
select sequence# from v$log where status = 'CURRENT';

backup archivelog from sequence 7777 until sequence 7778;



Всем спасибо за советы. Они очень помогли.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / duplicate и ora 01194
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]