|
|
|
Настроить горячий бэкап (Linux, Oracle, Rman)
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток! Подскажите пожалуйста, как исправить кривые ручонки. Задача: настроить горячий бэкап Дано: OS Linux red hat Oracle 12.1.0.2 Имеется скриптик backup.sh следующего вида: date=` '+%d.%m.%y_%H.%M.%S'` export PATH="..." export ORACLE_HOME="..." export ORACLE_SID=".." rman target ='sys/password' mslog=my_path/rman_DB-$date.log << EOF RUN { ALLOCATE CHANNEL c1 DEVICE TYPE DISK FORMAT 'my_path/BACKUP-$date.bus'; BACKUP DATABASE PLUS ARCHIVELOG DELETE INPUT; } EXIT; EOF Предполагается, что он делает "горячий" бэкап БД + архив логи и удаляет забэкапленный архив логи. Если его запускать из терминала sh backup.sh - все хорошо отрабатывает, все замечательно. Хочу запускать в планировщике. Запускаю в crontab, допустим, каждый четверг в 10.30 30 10 * * 4 /my_path/backup.sh В итоге, бэкап появляется в указанном месте, но! В лог файле есть строчки Finished backup at 30-JUN-16 Starting backup at 30-JUN-16 channel c1: starting full datafile backup set channel c1: specifying datafale(s) in backup set ........... RMAN-03002: failure of backup plus archivelog command at 06/30/2016 10:31:03 ORA-19504: failed to create file "my_path/backup-30.06.16-10.30.01.bus" ORA-27038: created file already exists Additional information: 1 RMAN> Recovery Manager complete. Т.е., rman сделал бэкап, а потом хочет сделать еще раз, но не может, из-за совпадения имен файлов. P.S. Предыдущая версия скрипта без даты в имени файла отрабатывала следующим образом: создавалось столько бэкапов, сколько возможно, пока не закончится место на диске. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2016, 10:57:49 |
|
||
|
Настроить горячий бэкап (Linux, Oracle, Rman)
|
|||
|---|---|---|---|
|
#18+
Вот вам рабочий скрипт(настроить только свои пути и ORACLE_SID). Запускать по крону оракла. Ну и еще настроить в RMAN необходимый RETENTION POLICY , также CONTROLFILE AUTOBACKUP ON; CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/путь к бекапу/%F'; CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/путь к бекапу/bc_%d_%Y%M%D_%U'; и будет вам счастье. При сбоях будет отписываться на мыло(в скрипте внизу настроить). #!/bin/sh # --------------------------------------------------------------------------- # hot_database_full_backup.sh # # Usage: # hot_database_full_backup.sh # # --------------------------------------------------------------------------- CUSER=`id |cut -d"(" -f2 | cut -d ")" -f1` DIRNAME=`dirname ${0}` if [ "$DIRNAME" = "." ] then DIRNAME=`pwd` fi RMAN_LOG_FILE="${DIRNAME}/logs/`basename ${0}`_`date '+%Y%m%d%H%M'`.out" if [ -f "$RMAN_LOG_FILE" ] then #rm -f "$RMAN_LOG_FILE" echo '------------------------------------------New backup--------------------------------------' >> $RMAN_LOG_FILE fi echo >> $RMAN_LOG_FILE chmod 666 $RMAN_LOG_FILE echo Script $0 >> $RMAN_LOG_FILE echo ==== started on `date` ==== >> $RMAN_LOG_FILE echo >> $RMAN_LOG_FILE ORACLE_HOME=/u01/oracle/product/db; export ORACLE_HOME ORACLE_SID=PROD; export ORACLE_SID TNS_ADMIN=/u01/oracle/product/db/network/admin; export TNS_ADMIN NLS_DATE_FORMAT='RRRR.MM.DD HH24:MI:SS'; export NLS_DATE_FORMAT ORACLE_USER=oracle TARGET_CONNECT_STR=/ RMAN=$ORACLE_HOME/bin/rman echo >> $RMAN_LOG_FILE echo "RMAN: $RMAN" >> $RMAN_LOG_FILE echo "ORACLE_SID: $ORACLE_SID" >> $RMAN_LOG_FILE echo "ORACLE_USER: $ORACLE_USER" >> $RMAN_LOG_FILE echo "ORACLE_HOME: $ORACLE_HOME" >> $RMAN_LOG_FILE echo "TNS_ADMIN: $TNS_ADMIN" >> $RMAN_LOG_FILE echo "Default - Full backup requested" >> $RMAN_LOG_FILE BACKUP_TYPE="INCREMENTAL LEVEL=0" CMD_STR=" ORACLE_HOME=$ORACLE_HOME; export ORACLE_HOME; ORACLE_SID=$ORACLE_SID; export ORACLE_SID; TNS_ADMIN=$TNS_ADMIN; export TNS_ADMIN; $RMAN target $TARGET_CONNECT_STR nocatalog log $RMAN_LOG_FILE append << EOF RUN { BACKUP $BACKUP_TYPE SKIP INACCESSIBLE TAG DW_level_0 FILESPERSET 150 DATABASE plus archivelog delete all input; delete force noprompt obsolete device type disk; } EOF " # Initiate the command string if [ "$CUSER" = "root" ] then su - $ORACLE_USER -c "$CMD_STR" >> $RMAN_LOG_FILE RSTAT=$? else /bin/sh -c "$CMD_STR" >> $RMAN_LOG_FILE RSTAT=$? fi # --------------------------------------------------------------------------- # Log the completion of this script. # --------------------------------------------------------------------------- if [ "$RSTAT" = "0" ] then LOGMSG="ended successfully" else LOGMSG="ended in error" /bin/mail -s 'Something wrong with RMAN backup PROD. Check it.' youpost@youmaildomen.ru << EOF Backup DW ended with errors. `/bin/cat $RMAN_LOG_FILE` EOF fi echo >> $RMAN_LOG_FILE echo Script $0 >> $RMAN_LOG_FILE echo ==== $LOGMSG on `date` ==== >> $RMAN_LOG_FILE echo >> $RMAN_LOG_FILE exit $RSTAT ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2016, 11:26:46 |
|
||
|
Настроить горячий бэкап (Linux, Oracle, Rman)
|
|||
|---|---|---|---|
|
#18+
Oracle is so Oracle, Может FORMAT убрать, у тебя вроде перекрывается один файл бэкапа архивных логов другим с той же датой до секунды, у оракла и так формат прописан в параметрах. run { allocate channel mdr_backup device type disk; BACKUP DATABASE PLUS ARCHIVELOG DELETE INPUT; backup current controlfile; delete noprompt obsolete device type disk; } list backup; Я бы примерно так сделала, а что у тебя с архивлогами, может он их все и бэкапит, их удалять надо лишние ненужные. Сделай CROSSCHECK ARCHIVELOG ALL; А потом delete noprompt obsolete device type disk; Он удаленные пометит и удалит из CONTROLFILE. А потом LIST COPY; чтобы посмотреть, что в CONTROL FILE записано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2016, 11:27:21 |
|
||
|
Настроить горячий бэкап (Linux, Oracle, Rman)
|
|||
|---|---|---|---|
|
#18+
Oracle is so Oracle, Код: sql 1. 2. 3. 4. 5. 6. 7. Код: sql 1. 2. 3. 4. 5. 6. 7. Код: sql 1. 2. 3. 4. 5. Вот такие три скриптика для инкрементального бэкапа могу дать, первый уровня 0 раз в неделю, второй в остальные дни собирает инкрементальный бэкап, третий собирает архивлоги в бэкапы архивлогов ежедневно. Еще по идее надо мультиплексировать редологи туда же для полного счастья. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2016, 11:40:33 |
|
||
|
Настроить горячий бэкап (Linux, Oracle, Rman)
|
|||
|---|---|---|---|
|
#18+
nata44845Может FORMAT убрать, у тебя вроде перекрывается один файл бэкапа архивных логов другим с той же датой до секунды, у оракла и так формат прописан в параметрах. И снова блондинка! У него прописан относительный а не абсолютный путь! Садись, два. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2016, 13:35:52 |
|
||
|
Настроить горячий бэкап (Linux, Oracle, Rman)
|
|||
|---|---|---|---|
|
#18+
Q.Tarantino, При чем тут относительный путь, у него имена архивов друг на друга накладываются, из-за того что имя у него до секунд задано. Или надо еще какую-то прибавку к имени, или оставить это ораклу и не задавать свои имена, RMAN все равно как у него файлики будут называться. А предыдущая версия без имени скорее всего бэкапит все архивлоги которые найдет, потому что не подрезаны. Я вон вчера настраивала RMAN задаю FRA 100GB, он мне говорит она у вас уже почти полная (!), а там файлы за 13 год в list copy, пришлось 3 раза сделать полный бэкап (REDUNDANCY=3) и потом его отпустило и он CF вычистил, хотя этих файлов там уже не было на диске. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2016, 06:16:34 |
|
||
|
Настроить горячий бэкап (Linux, Oracle, Rman)
|
|||
|---|---|---|---|
|
#18+
Вот только имя файла (а не путь, насколько я понял) у него один и тот же для всех BACKUP PIECE-s. И, соответственно -- это враньёOracle is so OracleЕсли его запускать из терминала sh backup.sh - все хорошо отрабатывает, все замечательно. ибо BACKUP DATABASE PLUS ARCHIVELOG делает минимум 2 файлика бэкапа, что с одним именем никак нельзя Чтоб файлики бэкапа различались -- туда надо добавлять шаблон ( formatSpec ) Самое простое, но не очень "говорящее" -- %U $ ORACLE_SID=tst rman target / Recovery Manager: Release 11.2.0.3.0 - Production on Fri Jul 1 13:58:34 2016 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. connected to target database: TST (DBID=1662986732) RMAN> run { 2> allocate channel c1 device type disk format '/orabackup/backup/tst/aaa'; 3> backup database plus archivelog; 4> } using target database control file instead of recovery catalog allocated channel: c1 channel c1: SID=72 device type=DISK Starting backup at 01-JUL-16 current log archived channel c1: starting archived log backup set channel c1: specifying archived log(s) in backup set input archived log thread=1 sequence=28067 RECID=58748 STAMP=915903938 ... input archived log thread=1 sequence=28084 RECID=58782 STAMP=916063184 channel c1: starting piece 1 at 01-JUL-16 channel c1: finished piece 1 at 01-JUL-16 piece handle= /orabackup/backup/tst/aaa tag=TAG20160701T135945 comment=NONE channel c1: backup set complete, elapsed time: 00:00:07 Finished backup at 01-JUL-16 Starting backup at 01-JUL-16 channel c1: starting full datafile backup set channel c1: specifying datafile(s) in backup set input datafile file number=00006 name=/u/app/oracle/oradata/tst/users01.dbf ... input datafile file number=00004 name=/u/app/oracle/oradata/tst/idx01.dbf channel c1: starting piece 1 at 01-JUL-16 released channel: c1 RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: failure of backup plus archivelog command at 07/01/2016 13:59:55 ORA-19504: failed to create file " /orabackup/backup/tst/aaa " ORA-27038: created file already exists Additional information: 1 RMAN> run { 2> allocate channel c1 device type disk format '/orabackup/backup/tst/aaa-%U' ; 3> backup database plus archivelog; 4> } allocated channel: c1 channel c1: SID=72 device type=DISK Starting backup at 01-JUL-16 current log archived skipping archived logs of thread 1 from sequence 28067 to 28084; already backed up channel c1: starting archived log backup set channel c1: specifying archived log(s) in backup set input archived log thread=1 sequence=28085 RECID=58783 STAMP=916063237 channel c1: starting piece 1 at 01-JUL-16 channel c1: finished piece 1 at 01-JUL-16 piece handle= /orabackup/backup/tst/aaa-clr9k106_1_1 tag=TAG20160701T140038 comment=NONE channel c1: backup set complete, elapsed time: 00:00:01 Finished backup at 01-JUL-16 Starting backup at 01-JUL-16 channel c1: starting full datafile backup set channel c1: specifying datafile(s) in backup set input datafile file number=00006 name=/u/app/oracle/oradata/tst/users01.dbf ... input datafile file number=00004 name=/u/app/oracle/oradata/tst/idx01.dbf channel c1: starting piece 1 at 01-JUL-16 channel c1: finished piece 1 at 01-JUL-16 piece handle= /orabackup/backup/tst/aaa-cmr9k108_1_1 tag=TAG20160701T140040 comment=NONE channel c1: backup set complete, elapsed time: 00:01:45 Finished backup at 01-JUL-16 Starting backup at 01-JUL-16 current log archived channel c1: starting archived log backup set channel c1: specifying archived log(s) in backup set input archived log thread=1 sequence=28086 RECID=58786 STAMP=916063346 channel c1: starting piece 1 at 01-JUL-16 channel c1: finished piece 1 at 01-JUL-16 piece handle= /orabackup/backup/tst/aaa-cnr9k13i_1_1 tag=TAG20160701T140226 comment=NONE channel c1: backup set complete, elapsed time: 00:00:01 Finished backup at 01-JUL-16 Starting Control File and SPFILE Autobackup at 01-JUL-16 piece handle=/orabackup/backup/tst/TST-c-1662986732-20160701-02 comment=NONE Finished Control File and SPFILE Autobackup at 01-JUL-16 released channel: c1 Oracle is so OracleПредыдущая версия скрипта без даты в имени файла отрабатывала следующим образом: создавалось столько бэкапов, сколько возможно, пока не закончится место на дискеА для этого существует RMAN-команда DELETE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2016, 07:14:40 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39265306&tid=1887984]: |
0ms |
get settings: |
4ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
177ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
28ms |
get tp. blocked users: |
1ms |
| others: | 182ms |
| total: | 412ms |

| 0 / 0 |
