Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
 bash+sqlplus+rman  [new]
MacDuck
Member

Откуда: Москва-Подольск
Сообщений: 6387
Уважаемые коллеги,

пишу вот скрипт дуплицирования базы на другом хосте из последнего по времени бэкпа.

Дано:

- pfile/spfile/passwd и проч. на новом хосте созданы созданы
- есть репозиторий RMAN
- выполняется полный ночной бэкап с архивлогами, которые потом стираются

BACKUP INCREMENTAL LEVEL=0 CHECK LOGICAL DEVICE TYPE 'sbt_tape' DATABASE format 'xxxprod_full_lev0_db_%s_%p_%t.bkp' tag 'xxxPROD_FULL_LEV0_DF' INCLUDE C
URRENT CONTROLFILE;

SQL 'ALTER SYSTEM ARCHIVE LOG CURRENT';
backup DEVICE TYPE 'sbt_tape' archivelog all format 'xxxprod_fulldb_arc_%s_%p_%t.bkp' TAG 'xxxPROD_FULL_LEV0_ARC' delete all input;
BACKUP DEVICE TYPE 'sbt_tape' CURRENT CONTROLFILE FORMAT 'xxxprod_lev0_cf_%s_%p_%t.bkp' TAG 'xxxPROD_LAST_IN_SET_CF';

- ленточка, Legato Networker
- 9-ка (!)

Собственно, сложности:

- скрипт хотелось бы наиболее общий, на входе задавать имя базы, соответственно, dbid, кусок с бэкапом CF, из которого восстанавливать CF на новом хосте брать из репозитория
(
select * from (select handle from rc_backup_piece where db_id=(select dbid from rc_database where name='$dbname') and device_type='SBT_TAPE'
order by completion_time desc) where rownum=1;

Так как элегантно скармливать результаты селектов из репозитория bash скрипту для формирования rman-блоков? Неужели через спул-файл только? Или я совсем туплю от гриппа?

- до чего лучше ставить
set until ...
исходя из инфы в репозитории?

Леhитраот!
5 авг 08, 14:25    [6028842]     Ответить | Цитировать Сообщить модератору
 Re: bash+sqlplus+rman  [new]
sql+
Guest
Что такое репозиторий - каталог восстановления?

Что значит передать кусок с бэкапом CF на вход скрипта?
5 авг 08, 14:37    [6028930]     Ответить | Цитировать Сообщить модератору
 Re: bash+sqlplus+rman  [new]
__mike__
Member

Откуда: Белгород
Сообщений: 553
возможно так
str=`sqlplus -s '/as sysdba' <<EOF
set heading off feedback off termout off
select * from (select handle from rc_backup_piece where db_id=(select dbid from rc_database where name='$dbname') and device_type='SBT_TAPE'
order by completion_time desc) where rownum=1;
EOF

а потом строку передавать параметром в скрипт
5 авг 08, 14:42    [6028960]     Ответить | Цитировать Сообщить модератору
 Re: bash+sqlplus+rman  [new]
MacDuck
Member

Откуда: Москва-Подольск
Сообщений: 6387
sql+
Что такое репозиторий - каталог восстановления?


Ну да.

sql+

Что значит передать кусок с бэкапом CF на вход скрипта?


Мы создаем базу с нуля. И, следовательно, должны сделать сначала что-то типа

set dbid xxxxxxx;
startup nomount;

run {
allocate channel ch1 DEVICE TYPE 'SBT_TAPE' PARMS  'ENV=(NSR_SERVER=xxxx, NSR_CLIENT=xxxxx, NSR_DATA_VOLUME_POOL=xxxxPROD)';
restore controlfile from 'xxxprod_cf_auto_c-2119976-20080730-02.bkp';
release channel ch1;
}

так вот как правильно имя этого 'xxxprod_cf_auto_c-2119976-20080730-02.bkp' взять. Наиболее элегантно.
5 авг 08, 14:43    [6028965]     Ответить | Цитировать Сообщить модератору
 Re: bash+sqlplus+rman  [new]
sql+
Guest
А извлечение из бэкапа будет происходить именно на другом хосте, подразумевается что там ленточный агент стоит?
5 авг 08, 14:52    [6029033]     Ответить | Цитировать Сообщить модератору
 Re: bash+sqlplus+rman  [new]
MacDuck
Member

Откуда: Москва-Подольск
Сообщений: 6387
sql+
А извлечение из бэкапа будет происходить именно на другом хосте, подразумевается что там ленточный агент стоит?


Стоит там агент. Не в нем дело. Ручками все отработал. Хочется общий скрипт.
5 авг 08, 14:53    [6029040]     Ответить | Цитировать Сообщить модератору
 Re: bash+sqlplus+rman  [new]
MacDuck
Member

Откуда: Москва-Подольск
Сообщений: 6387
__mike__
возможно так
str=`sqlplus -s '/as sysdba' 


и далее: Именно так и делал, только спулил имя в файлик. Твой str=` - супер идея, только там проскакивает дурацкое и ненужное Connected. (после коннекта к каталогу) до имени куска.
5 авг 08, 14:56    [6029068]     Ответить | Цитировать Сообщить модератору
 Re: bash+sqlplus+rman  [new]
__mike__
Member

Откуда: Белгород
Сообщений: 553
MacDuck
__mike__
возможно так
str=`sqlplus -s '/as sysdba' 


и далее: Именно так и делал, только спулил имя в файлик. Твой str=` - супер идея, только там проскакивает дурацкое и ненужное Connected. (после коннекта к каталогу) до имени куска.


тогда разбить на 2 части
5 авг 08, 15:03    [6029133]     Ответить | Цитировать Сообщить модератору
 Re: bash+sqlplus+rman  [new]
MacDuck
Member

Откуда: Москва-Подольск
Сообщений: 6387
__mike__

тогда разбить на 2 части


Извини, не понял.
5 авг 08, 15:04    [6029150]     Ответить | Цитировать Сообщить модератору
 Re: bash+sqlplus+rman  [new]
pravednik
Member

Откуда: Jacksonville, FL
Сообщений: 16268
MacDuck
__mike__

тогда разбить на 2 части


Извини, не понял.

посмотри на ноту 137181.1

думаю, буде самое оно
5 авг 08, 15:08    [6029193]     Ответить | Цитировать Сообщить модератору
 Re: bash+sqlplus+rman  [new]
sql+
Guest
MacDuck
sql+
А извлечение из бэкапа будет происходить именно на другом хосте, подразумевается что там ленточный агент стоит?


Стоит там агент. Не в нем дело. Ручками все отработал. Хочется общий скрипт.


Почему так например нельзя?

Заходишь на "другой хост" и :
export ORACLE_SID=<sid>
rman target / catalog <tnscatalog>
startup nomount;
restore controlfile;
sql 'alter database mount';
set until....
restore database;
recover database;
sql 'alter database open resetlogs';
5 авг 08, 15:20    [6029279]     Ответить | Цитировать Сообщить модератору
 Re: bash+sqlplus+rman  [new]
sql+
Guest
__mike__
возможно так
str=`sqlplus -s '/as sysdba' <<EOF
set heading off feedback off termout off
select * from (select handle from rc_backup_piece where db_id=(select dbid from rc_database where name='$dbname') and device_type='SBT_TAPE'
order by completion_time desc) where rownum=1;
EOF

а потом строку передавать параметром в скрипт


Смысл определять DBID, если DB_NAME в каталоге уникально?
Если неуникально, то запросом выше так определять DBID нельзя, иначе он вернёт несколько значений.
5 авг 08, 15:47    [6029499]     Ответить | Цитировать Сообщить модератору
 Re: bash+sqlplus+rman  [new]
недо scna
Member

Откуда:
Сообщений: 762
MacDuck
как правильно имя этого 'xxxprod_cf_auto_c-2119976-20080730-02.bkp' взять

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

p.s. чего в аське не отвечаешь?
5 авг 08, 16:05    [6029658]     Ответить | Цитировать Сообщить модератору
 Re: bash+sqlplus+rman  [new]
MacDuck
Member

Откуда: Москва-Подольск
Сообщений: 6387
sql+

Смысл определять DBID, если DB_NAME в каталоге уникально?


Да, ты прав. Искусственно усложнил задачу. Имя куска нужно явно для случая БЕЗ каталога.
5 авг 08, 16:10    [6029692]     Ответить | Цитировать Сообщить модератору
 Re: bash+sqlplus+rman  [new]
MacDuck
Member

Откуда: Москва-Подольск
Сообщений: 6387
недо scna
там все подобные скрипты уже есть



Ткни, где это там есть.
5 авг 08, 16:11    [6029701]     Ответить | Цитировать Сообщить модератору
 Re: bash+sqlplus+rman  [new]
недо scna
Member

Откуда:
Сообщений: 762
MacDuck
Ткни, где это там есть.

NetWorker V7.3 (Linux and Solaris Systems) Administrator's Guide
стр. 313, Recovering Cloned Data
5 авг 08, 16:29    [6029809]     Ответить | Цитировать Сообщить модератору
 Re: bash+sqlplus+rman  [new]
недо scna
Member

Откуда:
Сообщений: 762
MacDuck
там проскакивает дурацкое и ненужное Connected. (после коннекта к каталогу) до имени куска.

а обрезать?
5 авг 08, 16:30    [6029824]     Ответить | Цитировать Сообщить модератору
 Re: bash+sqlplus+rman  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18486
1. Почему бы не использовать DUPLICATE ?
2. Почему бы не использовать AUTOBACKUP CONTROLFILE и, соответственно, restore controlfile from autobackup. Он хватанет последний
6 авг 08, 02:40    [6031306]     Ответить | Цитировать Сообщить модератору
 Re: bash+sqlplus+rman  [new]
__mike__
Member

Откуда: Белгород
Сообщений: 553
sql+
__mike__
возможно так
str=`sqlplus -s '/as sysdba' <<EOF
set heading off feedback off termout off
select * from (select handle from rc_backup_piece where db_id=(select dbid from rc_database where name='$dbname') and device_type='SBT_TAPE'
order by completion_time desc) where rownum=1;
EOF

а потом строку передавать параметром в скрипт


Смысл определять DBID, если DB_NAME в каталоге уникально?
Если неуникально, то запросом выше так определять DBID нельзя, иначе он вернёт несколько значений.


ну этот запрос не мой Картинка с другого сайта.

2MacDuck - а где именно проскакивает Connected?
я не использовал никогда каталог - просто контролфайл
6 авг 08, 08:02    [6031505]     Ответить | Цитировать Сообщить модератору
 Re: bash+sqlplus+rman  [new]
MacDuck
Member

Откуда: Москва-Подольск
Сообщений: 6387
Вячеслав Любомудров
1. Почему бы не использовать DUPLICATE ?


А не хочется соединяться с исходной. Отрабатывается в т.ч. и восстановление на резервном хосте при недоступной исходной.


Вячеслав Любомудров

2. Почему бы не использовать AUTOBACKUP CONTROLFILE и, соответственно, restore controlfile from autobackup. Он хватанет последний


И использует. И восстанавливаю уже простой командой.
6 авг 08, 11:24    [6032451]     Ответить | Цитировать Сообщить модератору
 Re: bash+sqlplus+rman  [new]
MacDuck
Member

Откуда: Москва-Подольск
Сообщений: 6387
sql+

export ORACLE_SID=<sid>
rman target / catalog <tnscatalog>

sql 'alter database open resetlogs';


А вот тут две небольшие засады: первая с регистрацией одно-dbid/dbname-ной инкарнации в каталоге.
Нужно не забыть сделать reset до предпоследней и превратить восстановленную в orphan.

Вторая - с регистрацией в каталоге нагенеренных логов в дубликате.

Т.е. нужно просто восстанавливать CF будучи соединенным с репозиторием, а потом отсобачиваться и делать restore/recover.
6 авг 08, 11:27    [6032484]     Ответить | Цитировать Сообщить модератору
 Re: bash+sqlplus+rman  [new]
недо scna
Member

Откуда:
Сообщений: 762
MacDuck
восстанавливаю уже простой командой.

таки мой юзер-мануал помог? ;)
6 авг 08, 11:28    [6032493]     Ответить | Цитировать Сообщить модератору
 Re: bash+sqlplus+rman  [new]
MacDuck
Member

Откуда: Москва-Подольск
Сообщений: 6387
недо scna
MacDuck
Ткни, где это там есть.

NetWorker V7.3 (Linux and Solaris Systems) Administrator's Guide
стр. 313, Recovering Cloned Data


Саш, ну жду эту доку от FujitsuSiemens, у меня такого нет. На dimaseleznev at gmail dot com.
6 авг 08, 11:29    [6032501]     Ответить | Цитировать Сообщить модератору
 Re: bash+sqlplus+rman  [new]
MacDuck
Member

Откуда: Москва-Подольск
Сообщений: 6387
__mike__

2MacDuck - а где именно проскакивает Connected?


А от коннекта с каталогом.
6 авг 08, 11:30    [6032511]     Ответить | Цитировать Сообщить модератору
 Re: bash+sqlplus+rman  [new]
недо scna
Member

Откуда:
Сообщений: 762
MacDuck
На dimaseleznev at gmail dot com.

выслал еще вчера на dima_seleznev [at] mail [dot] ru
не туда?
6 авг 08, 11:33    [6032529]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
Все форумы / Oracle Ответить