RMAN - переменные

fantozzi
Дата: 03.12.2007 18:09:01
Добрый день коллеги!

У меня вопрос чисто по синтаксису:
Кто-нибудь применял переменные в блоке RMAN?
По логике нужно сделать такую вещь:
RUN {
ALLOCATE CHANNEL ch01 TYPE 'SBT_TAPE';
SQL 'ALTER SYSTEM ARCHIVE LOG CURRENT';
zzz1 = SQL 'SELECT SEQUENCE# FROM V$LOG WHERE STATUS = 'CURRENT'';
BACKUP INCREMENTAL LEVEL=0 TAG hot_db_bk_level0 FILESPERSET 1 FORMAT 'bk_%s_%p_%t' DATABASE;
SQL 'ALTER SYSTEM ARCHIVE LOG CURRENT';
zzz2 = SQL 'SELECT SEQUENCE# FROM V$LOG WHERE STATUS = 'CURRENT'';
BACKUP ARCHIVELOG FROM SEQUENCE zzz1 UNTIL SEQUENCE zzz2;
}

Как видно из скрипта, переменные zzz1 и zzz2, не так ведь присваиваются. А как, найти в гугле я так и не смог, кто-нибудь имел дело?
stranger.
Дата: 03.12.2007 18:55:21
может проще сначала сгенерить весь скрипт из sql ...
Alex Roudnev
Дата: 04.12.2007 01:45:11
stranger.
может проще сначала сгенерить весь скрипт из sql ...

Я бы советовал
- сгенерить
- напечатать с номерами строк в лог файл
- запустить rman

Иначе вы в жизни не разберетесь, если что то не так сработает.
Alex Roudnev
Дата: 04.12.2007 01:48:07
stranger.
может проще сначала сгенерить весь скрипт из sql ...

Я бы советовал
- сгенерить
- напечатать с номерами строк в лог файл
- запустить rman

Иначе вы в жизни не разберетесь, если что то не так сработает.
ALEXEYFIL
Дата: 04.12.2007 08:20:38
fantozzi
Добрый день коллеги!

У меня вопрос чисто по синтаксису:
Кто-нибудь применял переменные в блоке RMAN?
По логике нужно сделать такую вещь:
RUN {
ALLOCATE CHANNEL ch01 TYPE 'SBT_TAPE';
SQL 'ALTER SYSTEM ARCHIVE LOG CURRENT';
zzz1 = SQL 'SELECT SEQUENCE# FROM V$LOG WHERE STATUS = 'CURRENT'';
BACKUP INCREMENTAL LEVEL=0 TAG hot_db_bk_level0 FILESPERSET 1 FORMAT 'bk_%s_%p_%t' DATABASE;
SQL 'ALTER SYSTEM ARCHIVE LOG CURRENT';
zzz2 = SQL 'SELECT SEQUENCE# FROM V$LOG WHERE STATUS = 'CURRENT'';
BACKUP ARCHIVELOG FROM SEQUENCE zzz1 UNTIL SEQUENCE zzz2;
}

Как видно из скрипта, переменные zzz1 и zzz2, не так ведь присваиваются. А как, найти в гугле я так и не смог, кто-нибудь имел дело?


Для примера по использованию переменных.
Есть файл BACKUP.CMD

set ORACLE_SID=%1
set ORACLE_BASE=D:\Oracle\
set ORACLE_HOME=D:\oracle\Ora92
set BACKUP_HOME=%2\%DATE:~-10%
echo run >> rmanbackupINC0.txt
echo { >> rmanbackupINC0.txt

echo CONFIGURE RETENTION POLICY TO REDUNDANCY 1; >> rmanbackupINC0.txt
echo delete obsolete; >> rmanbackupINC0.txt
echo crosscheck backup; >> rmanbackupINC0.txt
echo delete expired backup of database; >> rmanbackupINC0.txt
echo CONFIGURE RETENTION POLICY TO REDUNDANCY 2; >> rmanbackupINC0.txt


echo backup INCREMENTAL LEVEL 0 DATABASE >> rmanbackupINC0.txt
echo format='%BACKUP_HOME%\%ORACLE_SID%\D_%%d_%%s_%%p_inc0.bkp' >> rmanbackupINC0.txt
echo tag='Data_backup_inc0'; >> rmanbackupINC0.txt
REM ECHO *************************************************
echo sql "alter system archive log current"; >> rmanbackupINC0.txt
echo backup archivelog all >> rmanbackupINC0.txt
echo format='%BACKUP_HOME%\%ORACLE_SID%\log_%%d_%%s_%%p_inc0.bkp' >> rmanbackupINC0.txt
echo tag='Archive Log_inc0' >> rmanbackupINC0.txt
echo delete all input; >> rmanbackupINC0.txt

echo } >> rmanbackupINC0.txt

Формируется как видно командный для RMAN файл rmanbackupINC0.txt
run
{

CONFIGURE RETENTION POLICY TO REDUNDANCY 1;
delete obsolete;
crosscheck backup;
delete expired backup of database;
CONFIGURE RETENTION POLICY TO REDUNDANCY 2;
backup INCREMENTAL LEVEL 0 DATABASE
format='D:\ORABACKUP\27.11.2007\TEST\D_%d_%s_%p_inc0.bkp'
tag='Data_backup_inc0';
sql "alter system archive log current";
backup archivelog all
format='D:\ORABACKUP\27.11.2007\TEST\log_%d_%s_%p_inc0.bkp'
tag='Archive Log_inc0'
delete all input;
}

Вот и все использование переменных
__mike__
Дата: 04.12.2007 08:44:58
это для *nix систем
#!/bin/sh


. /home/oracle/oracle.sh

seq=`sqlplus -S "/as sysdba" <<EOF
set heading off feedback off pagesize 0 trimspool on
select max(a.sequence#)
from v\\$archived_log a where a.dest_id=1 and a.applied='YES';
EOF
`

/opt/oracle/bin/rman target / <<EOF
set echo on;
crosscheck archivelog all;
delete noprompt archivelog until sequence $seq;
delete noprompt expired archivelog all;
EOF
fantozzi
Дата: 04.12.2007 13:43:19
Спасибо друзья

Вы весьма помогли, щас буду генерить нормальный файл бекапа