Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 RMAN&SHELL  [new]
Wupper
Member

Откуда:
Сообщений: 3
Добрый вечер!
Я делаю бэкап на диск для нескольких баз одинаковой структуры.

AIX 6.1 Oracle 10.2.0.4 Shell: ksh

для одной базы:

#!/bin/sh
# $1=ORACLE_SID
$1=d3i
. ~/.profile_$1;
rman target system/password nocatalog << EOF
RUN {
ALLOCATE CHANNEL ch1 TYPE
DISK FORMAT '/usr/oracle/backup/$1/%d_DB_%u_%s_%p';
BACKUP DATABASE PLUS ARCHIVELOG;
RELEASE CHANNEL ch1;
}
EXIT;
EOF

Попытался провести "рационализацию": только одна запись в crontabe для бэкапа 5 баз.
backup_for.sh

#!/bin/sh
# $1=ORACLE_SID

for 1 in d3i d3j d3k d3l d3m
do
. ~/.profile_$1;
rman target system/password nocatalog << EOF
RUN {
ALLOCATE CHANNEL ch1 TYPE
DISK FORMAT '/usr/oracle/backup/$1/%d_DB_%u_%s_%p';
BACKUP DATABASE PLUS ARCHIVELOG;
RELEASE CHANNEL ch1;
}
EXIT;
done
EOF
Не получается.
./backup_for.sh[3]: 0403-057 Syntax error at line 3 : `for' is not matched.
В интернете нашел сообщение:
"you cannot use dot-commands from within shell commands. the steps are broken
up into pieces prior to, containing, and after the dot-commands. "
Похоже на мой случай
Помогите решить проблему
24 окт 11, 20:36    [11491802]     Ответить | Цитировать Сообщить модератору
 Re: RMAN&SHELL  [new]
Zh71
Member

Откуда: Владимирская область
Сообщений: 72
По моему должно быть так:

#!/bin/sh
# $1=ORACLE_SID

for 1 in d3i d3j d3k d3l d3m
do
. ~/.profile_$1;
rman target system/password nocatalog << EOF
RUN {
ALLOCATE CHANNEL ch1 TYPE
DISK FORMAT '/usr/oracle/backup/$1/%d_DB_%u_%s_%p';
BACKUP DATABASE PLUS ARCHIVELOG;
RELEASE CHANNEL ch1;
}
EXIT;
EOF
done

Сочетание <<- EOF в скрипте означает, что командный интерпретатор должен читать текст файла сценария до тех пор, пока не встретиться символ EOF.

Скрипты RMAN
24 окт 11, 21:16    [11491907]     Ответить | Цитировать Сообщить модератору
 Re: RMAN&SHELL  [new]
Oleg M.Ivanov
Member

Откуда: Москва
Сообщений: 1164
Wupper,

На RELEASE CHANNEL будет выдавать ошибку. Для 10-ки это ошибка.
25 окт 11, 10:12    [11493113]     Ответить | Цитировать Сообщить модератору
 Re: RMAN&SHELL  [new]
pravednik
Member

Откуда: Jacksonville, FL
Сообщений: 16268
Oleg M.Ivanov
Wupper,

На RELEASE CHANNEL будет выдавать ошибку. Для 10-ки это ошибка.

почему это ?
RMAN> run{
2> allocate channel ch1 type disk;
3> release channel ch1;
4> }

using target database control file instead of recovery catalog
allocated channel: ch1
channel ch1: sid=159 devtype=DISK

released channel: ch1
25 окт 11, 10:30    [11493243]     Ответить | Цитировать Сообщить модератору
 Re: RMAN&SHELL  [new]
Wupper
Member

Откуда:
Сообщений: 3
Zh71
cпасибо за Ваш совет
Изменил и сделал бэкап для Oracle 11.2(spfile). (для одной базы работает)
Для двух не получется.

#!/bin/sh
# $1=ORACLE_SID

for 1 in d4i d4j
do
. ~/.profile_$1;
rman target system/password nocatalog << EOF
RUN {
ALLOCATE CHANNEL ch1 TYPE
DISK FORMAT '/usr/oracle/backup/$1/%d_SP_%u_%s_%p';
BACKUP SPFILE;
RELEASE CHANNEL ch1;
}
EXIT;
EOF
done

получил:
sh: 1: This is not an identifier.
не знаю в чем причина: SHELL или RMAN
В интернете оптимистично написано:
The main advantage of ksh over the traditional Unix shell is in its use as a programming language. KSH support for loop.
http://www.cyberciti.biz/faq/ksh-for-loop/
С числами и выражениями, деиствительно, все работает.

Не знаю куда дальше копать.
Может быть естъ идея, как решить проблему.
25 окт 11, 17:30    [11497643]     Ответить | Цитировать Сообщить модератору
 Re: RMAN&SHELL  [new]
Wupper
Member

Откуда:
Сообщений: 3
Ошибся в выборе переменной: заменил 1 на sid и все заработало.
27 окт 11, 12:25    [11507985]     Ответить | Цитировать Сообщить модератору
 Re: RMAN&SHELL  [new]
Aliona
Member

Откуда: Питер
Сообщений: 4023
Wupper,

у Вас постановка задачи неправильная.
Лучше бэкапы запускать независимо друг от друга в отдельных строках крона.
27 окт 11, 14:27    [11509250]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить