Споткнулся тут о то, что бекап выполнялся хранимыми скриптами и скрипты эти были написаны криво. Создается впечатление, что очень часто админы используют функционал не потому, что он нужен, а потому, что хотят попробовать. Для меня лично хранимые процедуры крайне неудобные, именно потому, что доступ к ним затруднен, как и способ их редактирования. Да, конечно, централизованное хранение, но избавиться от этого центра, когда вам нужно поправить скрипт только на половине хостов, тоже еще та проблема. Впрочем, и каталог, если говорить о количестве баз менее сотни - зло. Мое мнение, никому не навязываю. Но, есть скрипты (я их поправил только в той части, где открывали каналы, что мешало мне эти каналы настроить в самом RMAN, а уж глобально их настраивать точно не надо).
Подключаемся к базе и каталогу, где я настраивал скрипты и сами параметры
Код:
rman log=$LOGDIR/rman$ORACLE_SID.log target sys/pwd@db catalog rcat/pwd@db
Посмотрим список скриптов
Выведем содержимое скрипта
Код:
print global script bcp_db_tr3_lv0;
Я его сохранил в файлик gs0 и поправил, выкинув каналы, получилось такое
Код:
{
show all;
crosscheck backup;
delete noprompt expired backup;
crosscheck archivelog all;
delete noprompt expired archivelog all;
BACKUP spfile FORMAT '&2&1/%d_spfile_%T_%U.rm';
BACKUP AS COMPRESSED BACKUPSET TAG ARC ARCHIVELOG ALL skip inaccessible DELETE ALL INPUT FORMAT '&2&1/%d_arc_%e_%T_%U.rm';
BACKUP AS COMPRESSED BACKUPSET INCREMENTAL LEVEL 0 TAG DB0 DATABASE FORMAT '&2&1/%d_db0_%T_%U.rm';
BACKUP AS COMPRESSED BACKUPSET TAG ARC ARCHIVELOG ALL skip inaccessible DELETE ALL INPUT FORMAT '&2&1/%d_arc_%e_%T_%U.rm';
BACKUP AS COMPRESSED BACKUPSET TAG CTL CURRENT CONTROLFILE FORMAT '&2&1/%d_cf_%I_%T_%U.rm';
backup not backed up 2 times backupset all format '&3&1/%d_bob_%I_%T_%U.rm' ;
delete noprompt obsolete;
}
Соответственно, скрипт я заменил тем, что в файлике лежало
Код:
replace global script 'bcp_db_tr3_lv0' comment '$ORACLE_SID, $BKP_DIR, $BBKP_DIR' from file '/home/oracle/gs0';
И повторил с другим, инкрементальным скриптом
Код:
print global script bcp_db_tr3_lv1;
В файлик gs1
Код:
{
show all;
BACKUP spfile FORMAT '&2&1/%d_spfile_%T_%U.rm';
BACKUP AS COMPRESSED BACKUPSET TAG ARC ARCHIVELOG ALL skip inaccessible DELETE ALL INPUT FORMAT '&2&1/%d_arc_%e_%T_%U.rm';
BACKUP AS COMPRESSED BACKUPSET INCREMENTAL LEVEL 1 TAG DB1 DATABASE FORMAT '&2&1/%d_db1_%T_%U.rm';
BACKUP AS COMPRESSED BACKUPSET TAG ARC ARCHIVELOG ALL skip inaccessible DELETE ALL INPUT FORMAT '&2&1/%d_arc_%e_%T_%U.rm';
BACKUP AS COMPRESSED BACKUPSET TAG CTL CURRENT CONTROLFILE FORMAT '&2&1/%d_cf_%I_%T_%U.rm';
backup not backed up 2 times backupset all format '&3&1/%d_bob_%I_%T_%U.rm' ;
delete noprompt obsolete;
}
Код:
replace global script 'bcp_db_tr3_lv1' comment '$ORACLE_SID, $BKP_DIR, $BBKP_DIR' from file '/home/oracle/gs1';
Обратите внимание, что в файлике должны быть {} в начале и конце, а сам вывод print, например, нельзя после правки запихать обратно без проблем, поскольку он на все переменные будет домогаться.
В общем, так, как написал, все работает, но настоятельно рекомендую писать нормально в shell, а не такое вот кривоподелие.