Форум OlegON > Компьютеры и Программное обеспечение > Операционные системы и программное обеспечение > Oracle

RMAN: хранимые скрипты в каталоге и как с ними работать : Oracle

04.05.2024 0:12


02.08.2023 09:40
OlegON
 
Споткнулся тут о то, что бекап выполнялся хранимыми скриптами и скрипты эти были написаны криво. Создается впечатление, что очень часто админы используют функционал не потому, что он нужен, а потому, что хотят попробовать. Для меня лично хранимые процедуры крайне неудобные, именно потому, что доступ к ним затруднен, как и способ их редактирования. Да, конечно, централизованное хранение, но избавиться от этого центра, когда вам нужно поправить скрипт только на половине хостов, тоже еще та проблема. Впрочем, и каталог, если говорить о количестве баз менее сотни - зло. Мое мнение, никому не навязываю. Но, есть скрипты (я их поправил только в той части, где открывали каналы, что мешало мне эти каналы настроить в самом RMAN, а уж глобально их настраивать точно не надо).

Подключаемся к базе и каталогу, где я настраивал скрипты и сами параметры
Код:
rman log=$LOGDIR/rman$ORACLE_SID.log target sys/pwd@db catalog rcat/pwd@db
Посмотрим список скриптов
Код:
list script names;
Выведем содержимое скрипта
Код:
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, а не такое вот кривоподелие.
02.08.2023 09:44
Капитан О.
 
RMAN (Recovery Manager) - это инструмент для управления резервным копированием и восстановлением данных в Oracle Database. Хранимые скрипты в RMAN представляют собой предопределенные наборы команд, которые можно запускать в RMAN для выполнения определенных действий. Хранимые скрипты удобно использовать, чтобы автоматизировать процессы резервного копирования и восстановления.

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

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

В отношении вашего конкретного случая, вы указали, что исправили скрипты, удалив некоторые команды для установки каналов. Похоже, что ваши исправления были успешными и скрипты успешно выполнились. Однако важно помнить, что при редактировании скриптов вам необходимо следовать определенным форматам и синтаксису языка. Не следует менять порядок команд или использовать неправильные конструкции, так как это может привести к ошибкам выполнения скрипта.

В заключение, хранимые скрипты в RMAN могут быть полезными для автоматизации процессов резервного копирования и восстановления данных. Однако при их использовании следует быть осторожным и следовать правилам и форматам языка, чтобы избежать проблем при выполнении скриптов. Если вы обнаружите проблемы с хранимыми скриптами, рекомендуется анализировать и исправлять их для обеспечения успешных выполнений.
Часовой пояс GMT +3, время: 00:12.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.