[ОТВЕТИТЬ]
Опции темы
13.03.2011 18:37  
OlegON
В очередной раз проходя, решил записать, может, пригодится кому (товарищи, не пользующиеся RMAN и не делающие оптимизатором бекапы могут дальше не читать).
Итак, есть база pilot и необходимость перенести ее в day_test.
Файлы первой лежат в /pilot/ , вторая должна подняться в /day_test/
Обязательно надо прописать day_test в listener.ora, tnsnames.ora и сделать lsnrctl reload. Потом сделать через orapwd файлик паролем.
запустить базу с инишником
Код:
compatible=10.2.0.4
db_cache_size=500M
pga_aggregate_target=300M
shared_pool_size=200M

open_cursors=300
processes=150

nls_language="AMERICAN"
nls_territory="AMERICA"

PLSQL_OPTIMIZE_LEVEL=0
aq_tm_processes=1
db_block_size=8192
timed_statistics=TRUE
query_rewrite_enabled=FALSE
star_transformation_enabled=FALSE
java_pool_size=0
large_pool_size=0
fast_start_mttr_target=1200
audit_trail=TRUE
remote_login_passwordfile=EXCLUSIVE
sort_area_size=262144
undo_management=AUTO
undo_retention=600
undo_tablespace=UNDOTBS1
job_queue_processes=10
workarea_size_policy=AUTO
_trace_files_public = TRUE
#local_listener=ORALIST10
db_name=day_test
background_dump_dest=/day_test/bdump
core_dump_dest=/day_test/cdump
user_dump_dest=/day_test/udump
control_files=(/day_test/control01.ctl, /day_test/control02.ctl, /day_test/control03.ctl)
instance_name=day_test
db_recovery_file_dest=/day_test
db_recovery_file_dest_size=200G
DB_CREATE_FILE_DEST=/day_test/
DB_FILE_NAME_CONVERT=(/pilot/,/day_test/)
LOG_FILE_NAME_CONVERT=(/pilot,/day_test)
из параметров нужны только три последних (остальные по пути зацеплены из тестовой БД), суть параметров - переименование файлов при дублировании БД, т.е. в пути файлов /pilot/ будет меняться на /day_test/. Стартовать надо в nomount, потому, что ни одного файла БД, кроме инишника, нет. Да, надо еще и spfile сделать, RMAN будет перезапускать БД, поэтому надо и listener прописывать сразу и spfile сделать. Дальше все просто, коннектим к обеим базам и дублируем:
Код:
rman target /
connect auxiliary sys/qqq@day_test
duplicate target database to day_test;
после восстановления БД по указанному пути и наката логов получаем открытую базу... Очень просто потом обновлять дубликат скриптом, просто опустить day_test через startup nomount и прогнать rman еще раз.
 
23.07.2011 10:24  
OlegON
выяснился маленький, но неприятный косячок. Дело в том, что duplicate не создает ни одного tempfile.Т.е. либо писать начальный скриптик со вставкой вроде
Код:
select 'set newname for tempfile '||file#||' to '||'$NEW_PATH/'||''''||name||''';' from v$tempfile;
либо пересоздавать табличные пространства или добавлять в них файлы. Предотпускное изучение доки что-то мне не помогло. Сначала решил, что DB_FILE_NAME_CONVERT не работает с OMF, выкинул DB_CREATE_FILE_DEST, передублировал базу, более внимательно изучил лог, ан нет, нет вообще упоминания, что темпы кто-то пытается создать. В общем, для упрощения скрипта, который мне автоматом переливает базенки, сделал просто - создаю небольшой темп, переключаю на него
Код:
alter database default temporary tablespace tmp;
грохаю старое ТП, создаю новое, переключаю на него, убиваю новое. Не знаю, почему не добавляю файлы уже в существующее, просто как-то больше нравится так.
 
10.08.2011 09:33  
OlegON
Тут уже конвейер из дубликатов тестовых баз пошел, поэтому накидал шаблон скриптика (в данном из work делается pilot), естественно, должно быть все настроено, как выше сказано.
Код:
recreate_pilot.sh
#!/usr/bin/bash
export ORACLE_HOME=/u01/app/oracle/product/10.2.0/Db_1;
export NLS_LANG=AMERICAN_AMERICA.UTF8;
export LD_LIBRARY_PATH=$ORACLE_HOME/lib;
export PATH=$PATH:$ORACLE_HOME/bin:$ORACLE_HOME/lib:$ORACLE_HOME/OPatch;

export ORACLE_SID=pilot;
sqlplus / as sysdba @/u01/app/oracle/nomount

export ORACLE_SID=work;
rman target / nocatalog @/u01/app/oracle/dup_pilot

export ORACLE_SID=pilot;
sqlplus / as sysdba @/u01/app/oracle/tmp_recr

nomount.sql
startup force nomount
exit

dup_pilot
connect auxiliary sys/qqq@pilot
duplicate target database to pilot;
exit

tmp_recr.sql
create temporary tablespace tmp  tempfile size 10M autoextend on next 1G maxsize 10G;
alter database default temporary tablespace tmp;
drop tablespace temp including contents and datafiles;
create temporary tablespace temp tempfile size 10M autoextend on next 1G maxsize 10G;
alter database default temporary tablespace temp;
drop tablespace tmp including contents and datafiles;
exit

tmp_recr.sql
create temporary tablespace tmp  tempfile 'tmp.dbf' size 10M reuse autoextend on next 1G maxsize 10G;
alter database default temporary tablespace tmp;
drop tablespace temp including contents and datafiles;
create temporary tablespace temp tempfile 'temp.dbf' size 10M reuse autoextend on next 1G maxsize 10G;
alter database default temporary tablespace temp;
drop tablespace tmp including contents and datafiles;
exit
 
30.01.2012 22:49  
OlegON
В 11g появилась удобная фича дублирования из бекапа другой БД. Т.е. не требуется подключения к другой базе.
Скрипт очень простой (подробности выше).
Код:
export ORACLE_SID=day_test (в которую заливаем бекап)
startup nomount;
rman auxiliary /
duplicate database to day_test backup location '/путь/fra/';
exit;
 
 
Опции темы



Часовой пояс GMT +3, время: 06:03.

Все в прочитанное - Календарь - RSS - - Карта - Вверх 👫 Яндекс.Метрика
Форум сделан на основе vBulletin®
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd. Перевод: zCarot и OlegON
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.