powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / 4FAQ - клонирование базы
25 сообщений из 227, страница 1 из 10
4FAQ - клонирование базы
    #33409830
Фотография nata1111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Клонирование базы данных на локальном и удаленном компьютере с использованием пользовательской резервной копии.
(Oracle 8.1.6-10.2.0)


I. Создание резервной копии методом «холодного» копирования
II. Восстановление базы данных на удаленной машине
      1. С сохранением структуры каталогов
      2. В измененной структуре каталогов
      3. Восстановление при отсутствии части файлов
III.Восстановление базы данных на локальной машине.
IV. Создание резервной копии методом «горячего» копирования.
V. Восстановление базы данных из «горячей» копии.
VI. Примеры

I. Создание резервной копии методом "холодного" копирования.

      Холодное (автономное) резервное копирование базы данных выполняется на уровне операционной системы при остановленной базе данных - резервируются файлы, составляющие базу данных Oracle: файлы данных, управляющие файлы, файл параметров. Если остановка базы данных была выполнена в режимах normal\immediate\transactional, то включать в резервную копию файлы оперативных журналов необязательно.

До начала процесса копирования следует выяснить основные параметры базы данных
database name
Код: plaintext
SQL>select name from v$database; 
instance name
Код: plaintext
SQL>select instance_name from v$instance; 
      В общем случае database name = instance name, но при создании клона базы данных на той же машине, что и исходная база, параметры instance name для исходной и клонированной баз должны быть различны.
версия
Код: plaintext
SQL> select  banner from V$version
      Версия ПО, установленная на машину, предназначенную для эксплуатации клонированной базы, должна соответствовать версии исходной базы данных.


Файлы базы данных
ФАЙЛЫ ДАННЫХ
Код: plaintext
SQL>select name,status from v$datafile_header;
ТЕМП-ФАЙЛЫ
Код: plaintext
1.
SQL> select v$tempfile.name, v$tablespace.name from v$tempfile , 
v$tablespace where v$tempfile.ts#= v$tablespace.ts#
      Темп-файлы резервированию не подлежат, но информация об их использовании необходима в дальнейшем. При наличии временного табличного пространства, использующего tempfiles, эти файлы должны быть созданы после открытия клонированной базы.
ЖУРНАЛЬНЫЕ ФАЙЛЫ
Код: plaintext
1.
SQL>select v$logfile.group#, v$logfile.member, v$log.status from v$logfile, 
v$log  where v$logfile.group#=v$log.group#;
      Резервирование журнальных файлов при создании холодной копии необходимо в двух случаях: перед копированием файлов база данных была остановлена в несогласованном состоянии и ее открытие требует восстановление экземпляра; для клонированной базы не желателен сброс последовательности журнальных файлов.
АРХИВНЫЕ ЖУРНАЛЬНЫЕ ФАЙЛЫ
      При создании резервной копии методом холодного копирования, архивные журнальные файлы не нужны. Исключением может быть случай наличия в исходной базе данных файлов данных, требующих восстановление носителя на момент создания резервного набора (например, файлы в состоянии offline)
УПРАВЛЯЮЩИЙ ФАЙЛ
Код: plaintext
SQL>select  name from v$controlfile;
      Резервирование управляющего файла можно проводить двумя способами: холодным копированием определенных запросом файлов или созданием резервной копии управляющего файла командой alter database backup controlfile - в последнем случае клонированная база данных потребует восстановление с дальнейшим сбросом последовательности журнальных файлов.
Резервирование управляющего файла в двоичный файл осуществляется командой
Код: plaintext
SQL>alter  database  backup   controlfile  to <имя файла-копии>;
Резервирование управляющего файла в файл трассировки для дальнейшего скриптового создания
Код: plaintext
SQL>alter  database  backup   controlfile  to trace;
Файл трассировки формируется в каталоге, указанном в параметре инициализации user_dump_dest (или при установке значения по умолчанию в - rdbms/trace)
ФАЙЛ ПАРАМЕТРОВ
Код: plaintext
SQL>select * from v$parameter2 where name in ('spfile', 'ifile');
      Начиная с 9 версии Oracle в качестве файла параметров может использовать как текстовой файл, так и бинарный. По умолчанию, используемый файл расположен в директории <$oracle_home>\database (Windows) или <$oracle_home>/dbs ( linux) и имеет вид init<SID>.ora (текстовой) или spfile<SID>.ora (бинарный)
При использовании spfile для сохранения и редактирования списка параметров для клонированной базы удобно создать текстовой файл командой
Код: plaintext
SQL>create  pfile=<имя  файла>  from spfile;
ФАЙЛ ПАРОЛЕЙ
      При клонировании базы данных файл паролей следует пересоздать.
ФАЙЛЫ NET8
      Дополнительно имеет смысл сохранить директорию <$oracle_home>\network\admin, если предполагается создание клона на удаленной машине.


Перечисленные выше файлы должны быть скопированы средствами ОС и сохранены. При этом копирование файлов данных, журнальных файлов и управляющих файлов должно осуществляться при закрытой базе данных. Не рекомендуется использовать режим shutdown abort, поскольку в этом случае клонированная база потребует восстановления экземпляра и в случае отсутствия текущих (активных) журнальных файлов не может быть открыта.
      При установки базы данных с использованием Database Configuration Assistant автоматически генерируемая структура каталогов имеет вид
<$Oracle_base>\
      admin\<$Oracle_sid>
      oradata\<$Oracle_sid >
      flash_recovery_area\<$Oracle_sid>
В этом случае удобнее резервировать не отдельные файлы, а полностью директории admin и oradata с их содержимым.

II. Восстановление базы данных на удаленной машине

      Устанавливается основное программное обеспечение и необходимые патчи. Дистрибутив, используемый для установки ПО для исходной и клонированной баз, должен быть одним и тем же.

1.С сохранением структуры каталогов

      При инсталляции ПО параметр Oracle_home и пути к домашней директории Оракла должны соответствовать определенным на исходной машине.
      После установки ПО необходимо воссоздать структуру каталогов, используемых ораклом для зарезервированных файлов и указанных в файле параметров

background_dump_dest

core_dump_dest

user_dump_dest

audit_file_dest

log_archive_dest_<n>

log_archive_dest\log_archive_duplex_dest

db_recovery_file_dest
      Предоставить права на эти каталоги пользователю, под учетной записью которого работает Оракл.
Далее следует разместить сохраненные файлы следующим образом: файлы данных, управляющие и журнальные файлы раскладываются по их изначальному местоположению на исходной машине. Файл параметров при необходимости переименовываем в init<SID>.ora и помещаем в директорию <$oracle_home>\database (<$oracle_home>/dbs).
Следующая последовательность действий зависит от используемой операционной системы
Windows
      1. устанавливаем переменную окружения oracle_sid
      set oracle_sid=<SID>
           где <SID> =< instance_name >
      2. создаем службу
      <$oracle_home>\bin\oradim.exe -new -sid <SID> -intpwd <пароль
     пользователя sys\internal> -startmode manual
      в результате в сервисах появится и стартует служба с именем OracleService<SID>, а в директории
      <$oracle_home>/database сформируется файл паролей с именем pwd<SID>.ora
Unix
      1. устанавливаем переменную ORACLE_SID
      ORACLE_SID=<SID>
      export ORACLE_SID
      2.создаем файл паролей
      <$oracle_home>/bin/orapwd file=<$oracle_home>/dbs/orapw<SID> password=<пароль пользователя sys\internal>
      На этом этапе система готова к открытию базы данных.
      Дальнейшие действия отличаются для разных версий Oracle.
Для версии 8 открытие базы осуществляется из командной строки программы <$oracle_home>\bin\svrmgrl
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
SVRMGRL> connect internal
password:  <пароль  пользователя internal>
connected.
SVRMGRL>startup 
ORACLE instance started.
…
Database mounted.
Database opened.
Для 9-10 версии используется SQLPLUS- <$oracle_home>\bin\sqlplus
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Enter user-name: sys as sysdba
Enter password: <пароль  пользователя sys>
connected.
SQL> startup pfile='<$oracle_home>/dbs/init<SID>.ora';
ORACLE instance started.
…
Database mounted.
Database opened.
      После открытия базы данных при наличии временных пространств, использующих tempfiles необходимо их создать командой
Код: plaintext
SQL>alter tablespace <ТП> add  tempfile  <путь и имя файла> size 500M 
      Последний этап - обеспечить пользовательский доступ к базе данных средствами Net8. Корректируются файлы tnsnames.ora и listener.ora из сохраненной директории <$oracle_home>/network/admin - в них необходимо изменить параметр host и после этого стартовать процесс прослушиватель : <$Oracle_home>\bin\lsnrctl
Код: plaintext
LSNRCTL>start

2. В измененной структуре каталогов


Изменение каталога для файлов трассировки процессов и расположения архивных журналов осуществляется путем корректировки параметров файла init<SID>.ora
background_dump_dest
core_dump_dest
user_dump_dest
audit_file_dest
log_archive_dest_<n>
log_archive_dest\log_archive_duplex_dest
db_recovery_file_dest


Изменение каталога расположения управляющих файлов осуществляется путем корректировки параметра файла init<SID>.ora
control_files


Изменение местоположения файлов данных и журнальных файлов осуществляется следующим образов:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
--  база  данных  монтируется, но не открывается
SQL>startup  mount ;
--  файлы  данных и  журнальные файлы   средствами ОП  раскладываются 
--  по  новому местоположению и для  каждого из них  выполняется  команда 
SQL>alter database rename  file <путь и имя файла> to <новый путь и имя файла>;
-- например: alter database rename file ‘d:\dbs\redo01.log‘ to  ‘c:\oracle\redo01.log‘;

-- база открывается  для  общего доступа
SQL>alter database open;

3. Восстановление при отсутствии части необходимых файлов.

      Восстановление базы данных может быть проведено и в случае отсутствия части файлов, перечисленных в пункте I. Частичное восстановление возможно при утере части файлов данных, не принадлежащих табличному пространству system


Отсутствует файла параметров инициализации.
Минимальный набор параметров для старта базы данных
      control_files
      db_name
      db_block_size
      в некоторых случаях необходимо указывать параметр compatible .
Значение остальных параметров берутся по умолчанию и в дальнейшем при необходимости могут быть скорректированы. Если значения параметров db_name и db_block_size не известны, можно поставить произвольные значения - при попытке старта Оракл обнаружит несоответствия этих параметров с указанными в управляющем файле и выдаст ошибку (на консоль или в alert.log) с указанием их истинных значений.


Отсутствуют журнальные файлы.
В этом случае возможно открытие базы данных с опцией resetlogs только в случае согласованного состояния базы данных на момент создания холодной копии - в результате сбросится последовательность журнальных файлов, а сами журнальные файлы будут созданы заново.
Последовательность команд, обеспечивающая открытие базы данных в режиме сброса журналов
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SQL>startup  mount;
…
SQL> recover database  until  cancel   using  backup  controlfile;
ORA- 00279 : change  4657702  generated at  11 / 26 / 2005   17 : 04 : 52  needed for thread  1  
ORA- 00289 : suggestion : D:\ORA9\RDBMS\ARC00008. 001  
ORA- 00280 : change  4657702  for thread  1  is in sequence # 8  
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
Cancel  -- на предложение ввести команду
Media recovery cancelled.
SQL> alter database open resetlogs;
Database altered.


Отсутствуют управляющие файлы.
В случае мультиплексирования журнальных файлов отсутствующий файл можно заменить любым из сохранившихся или удалить упоминания о нем из параметра инициализации control_files. Если же не сохранилась ни одна из текущих копий файла, можно использовать: backup-копию + последовательность команд из предыдущего пункта, ведущая к открытию в режиме resetlogs, либо применить скриптовое создание управляющего файла на основе скрипта, сгенерированного командой alter database backup controlfile to trace на исходной базе.
Общая структура SQL-конструкции для создания управляющего файла:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
CREATE CONTROLFILE  SET DATABASE TEST RESETLOGS  NOARCHIVELOG
    MAXLOGFILES  50 
    MAXLOGMEMBERS  5 
    MAXDATAFILES  100 
    MAXINSTANCES  1 
    MAXLOGHISTORY  226 
LOGFILE
  GROUP  1  'Q:\REDO01.LOG'  SIZE 100M,
  GROUP  2  'Q:\REDO02.LOG'  SIZE 100M,
  GROUP  3  'Q:\REDO03.LOG'  SIZE 100M
DATAFILE
  'Q:\SYSTEM01.DBF',
  'Q:\UNDO1.DBF'
CHARACTER SET CL8MSWIN1251;
Создание управляющего файла осуществляется в режиме nomount. В случае использования сгенерированного скрипта следует:
- поменять параметр reuse на set в первой строке CREATE CONTROLFILE REUSE DATABASE …
- установить параметр resetlogs\noresetlogs в зависимости от того, присутствуют ли в резервной копии журнальные файлы и требуется ли сохранить последовательность их нумерации
- тут же можно изменить местоположение файлов и удалить упоминания об отсутствующих файлах данных
      В результате выполнения сценария CREATE CONTROLFILE заново создадутся управляющие файлы базы данных и сама база перейдет в состояние mount.
Далее, база данных открывается фразой
Код: plaintext
1.
SQL>alter  database open  ;
или
Код: plaintext
1.
SQL>alter  database open   resetlogs;
      Пересоздание управляющего файла можно использовать для изменения пути к файлам данных и журнальным файлам. В этом случае соответствующие строки корректируются таким образом, чтобы они отражали новые пути и переименование файлов командами SQL в дальнейшем не требуется. Так же может быть изменен размер журнальных файлов и исключены потерянные файлы данных (в этом случае обязательно использование resetlogs).


Отсутствует часть файлов данных, не принадлежащих табличному пространству system (sysaux)
      Отсутствующие файлы данных могут быть удалены из базы с потерей всех содержащихся данных выполнением следующей команды
Код: plaintext
1.
2.
3.
4.
SQL>startup mount;
…
SQL>alter database datafile 'путь и имя файла' offline  drop;
SQL> alter database  оpen;


III. Восстановление базы данных на локальной машине.


      В этом случае этап установки ПО отсутствует, база данных восстанавливается в тот же oracle_home, что и исходная база, но при этом изменяется ее системный идентификатор. В отличие от предыдущего сценария в этом необходимо осуществить всю последовательность действий по переименованию файлов.


Для клонированной базы данных создаем структуру каталогов для размещения файлов базы и файлов трассировки, предоставляем необходимый права пользователю и изменяем файл параметров инициализации. Кроме перечисленных в пункте II.3 параметров, должны быть установлены\переопределены параметры
      SERVICE_NAME=<NEW_SID>
      INSTANCE_NAME=<NEW_SID>
      LOCK_NAME_SPACE =<NEW_SID>
Windows
      1. устанавливаем переменную окружения oracle_sid
      set oracle_sid=<NEW_SID>
      2. создаем службу
      <$oracle_home>\bin\oradim.exe -new -sid <NEW_SID> -intpwd <пароль
     sys\internal> - startmode manual
      в результате в сервисах появится и стартует служба с именем
     OracleService<NEW_SID>,
      а в директории <$oracle_home>/database сформируется файл паролей с именем pwd<NEW_SID>.ora
Unix
      1. устанавливаем переменную ORACLE_SID
      ORACLE_SID=<NEW_SID>
      export ORACLE_SID
      2.создаем файл паролей
      <$oracle_home>/bin/orapwd file=<$oracle_home>/dbs/orapw<NEW_SID>
      password=<пароль пользователя
sys\internal>


Стартуем базу данных в режиме mount и осуществляем переименование файлов.


При необходимости создаем темп-файлы и открываем базу.


Добавляем в tnsnames.ora псевдоним для созданной базы. В случае необходимости корректируем файл listener.ora и перезапускаем процесс прослушивания: <$Oracle_home>\bin\lsnrctl
Код: plaintext
1.
2.
LSNRCTL>stop
LSNRCTL>start


IV. Создание резервной копии методом «горячего» копирования.

      Метод холодного копирования не применим для баз данных, требующие непрерывного постоянного доступа пользователей, поскольку данный метод предполагает закрытие БД.
      Если производственные потребности не позволяют прервать работу базы данных, то используется механизм выполнения резервирования базы данных в ходе ее использования – горячее резервное копирование (online backup). Метод «горячего» резервного копирования применяется только для баз данных, функционирующих в режиме archivelog. Копировать БД рекомендуется в период ее наименьшей нагрузки.
      Перед началом резервирования следует определить табличные пространства базы данных и соответствующие им файлы.
Код: plaintext
1.
2.
SQL>select v$tablespace.name, v$datafile.name from  v$tablespace, v$datafile 
where  v$tablespace.ts#=v$datafile.TS#;
Определенные таким образом табличные пространства на момент осуществления физического копирования их файлов данных должны быть переведены в режим «backup» командой
Код: plaintext
1.
SQL> alter tablespace <tablespace> begin backup;
После завершения копирования необходимо выполнить оператор
Код: plaintext
1.
SQL> alter tablespace <tablespace> end backup;
При этом переводить табличный пространства в backup-режим можно как последовательно, так и одновременно.
      Резервирование табличных пространств, находящихся в режиме offline и read only осуществляется без перевода их в режим «backup». Статус табличного пространства можно определить из представления dba_tablespaces.
      После окончания копирования всех табличных пространств следует создать резервную копию управляющего файла и заархивировать не заархивированные журнальные файлы.
Код: plaintext
1.
SQL> alter database   backup  controlfile  to <tarce\file_name>
и
Код: plaintext
1.
SQL> alter  system  archive log  current;
      Для восстановления базы данных будут затребованы все архивные журнальные файлы, сформированные с момента перевода первого табличного пространства в режим «backup».

V. Восстановление базы данных из «горячей» копии.

      Процесс восстановления базы данных из «горячей» копии отличается тем, что перед открытием базы необходимо осуществить восстановление носителя c использованием резервной копии управляющего файла. Перед этим рекомендуется поместить необходимые архивные журнальные файлы в директорию log_archive_dest \log_archive_dest_1\db_recovery_file_dest
Код: plaintext
1.
2.
SQL> startup mount;
SQL> recover  database  until cancel  using backup  controlfile;
На запрос имени архивного журнала ввести AUTO либо полный путь к файлу. После того, как все журнальные файлы применятся, открыть базу данных с опцией resetlogs
Код: plaintext
1.
SQL> alter database open resetlogs;

ПРИМЕРЫ

1. Создание клона базы данных из холодной резервной копии на локальной машине.
ОС - RHEL AS 3
Oracle - 10.2.0.1
Database name – ora10
Установленные переменные окружения
ORACLE_SID=ora10
ORACLE_HOME= /u01/app/oracle/oracle/product/10.2.0/db_1
SID клонированной базы данных - oracopy
В наличии имеется резервный набор файлов данных и скрипт создания управляющего файла.
      Для размещения файлов клонированной базы данных под пользователем oracle создадим директорию /u01/app/oracle/oradata/oracopy/, поскольку владельцем каталога /u01, в котором расположена домашняя директория Oracle и файлы исходной базы данных является пользователь oracle, предоставлять на нее права нет необходимости.
      Корректируем скрипт создания управляющего файла
Исходный
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "ORA10" NORESETLOGS  ARCHIVELOG
    MAXLOGFILES  16 
    MAXLOGMEMBERS  3 
    MAXDATAFILES  100 
    MAXINSTANCES  8 
    MAXLOGHISTORY  292 
LOGFILE
  GROUP  1  '/u01/app/oracle/oradata/ora10/redo01.log'  SIZE 50M,
  GROUP  2  '/u01/app/oracle/oradata/ora10/redo02.log'  SIZE 50M,
  GROUP  3  '/u01/app/oracle/oradata/ora10/redo03.log'  SIZE 50M
-- STANDBY LOGFILE
DATAFILE
  '/u01/app/oracle/oradata/ora10/system01.dbf',
  '/u01/app/oracle/oradata/ora10/undotbs01.dbf',
  '/u01/app/oracle/oradata/ora10/sysaux01.dbf',
  '/u01/app/oracle/oradata/ora10/b2_data01.dbf',
  '/u01/app/oracle/oradata/ora10/b2_idx01.dbf',
  '/u01/app/oracle/oradata/ora10/data01.dbf'
CHARACTER SET CL8MSWIN1251;
Исправленный
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
STARTUP NOMOUNT
CREATE CONTROLFILE SET DATABASE "ORA10"  RESETLOGS  NOARCHIVELOG
    MAXLOGFILES  16 
    MAXLOGMEMBERS  3 
    MAXDATAFILES  100 
    MAXINSTANCES  8 
    MAXLOGHISTORY  292 
LOGFILE
  GROUP  1  '/u01/app/oracle/oradata/oracopy/redo01.log'  SIZE 50M,
  GROUP  2  '/u01/app/oracle/oradata/oracopy /redo02.log'  SIZE 50M,
  GROUP  3  '/u01/app/oracle/oradata/oracopy /redo03.log'  SIZE 50M
DATAFILE
  '/u01/app/oracle/oradata/oracopy/system01.dbf',
  '/u01/app/oracle/oradata/oracopy/undotbs01.dbf',
  '/u01/app/oracle/oradata/oracopy/sysaux01.dbf',
-- убираем  упоминания о файлах, принадлежащих «лишним» ТП
  '/u01/app/oracle/oradata/oracopy/data01.dbf'
CHARACTER SET CL8MSWIN1251;
      Сохраняем сценарий в файл /u01/ct.sql
      Помещаем файлы данных из резервной копии в каталог /u01/app/oracle/oradata/oracopy. Для новой базы данных формируем файл параметров, предварительно выполнив на исходной запрос:
Код: plaintext
1.
2.
3.
4.
5.
SQL>select name,value from v$parameter2 where name in ('spfile', 'ifile');
NAME 	VALUE
-----      ------
spfile	
ifile	
Исходная база данных использует текстовой файл параметров, который по умолчанию находится в каталоге /u01/app/oracle/oracle/product/10.2.0/db_1/dbs/ и имеет имя initora10.ora. Сформируем файл параметров для клонированной базы с именем initoracopy.ora и следующим содержимым:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
db_block_size= 8192   --размер блока  исходной  базы
db_name=ora10  
instance_name=oracopy
service_names=oracopy
lock_name_space=oracopy
control_files=("/u01/app/oracle/oradata/oracopy/control01.ctl")
compatible= 10 . 2 . 0 . 1 . 0 
sga_target= 200000000  
pga_aggregate_target= 200000000 
undo_management=AUTO 
undo_tablespace=UNDOTBS1

      Создаем файл паролей
[oracle@linux /]/u01/app/oracle/oracle/product/10.2.0/db_1/bin/orapwd file= /u01/app/oracle/oracle/product/10.2.0/db_1/dbs/orapworacopy password=sys

      Устанавливаем переменные окружения
[oracle@linux /] ORACLE_SID=oracopy
[oracle@linux /] export ORACLE_SID
      Далее необходимо создать управляющий файл для клонированной базы. Для обеспечения возможности работы на одной машине двух баз данных с одинаковыми именами используется параметр LOCK_NAME_SPACE, однако в версии 10 он считается устаревшим, хотя и сохраняет свою функциональность. Но для корректного создания управляющего файла в момент выполнения сценария ct.sql основная база данных должна быть потушена.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
SQL>@/u01/ct.sql;
ORA- 32004 : obsolete and/or deprecated parameter(s) specified
ORACLE instance started.
Total System Global Area   201326592  bytes
Fixed Size                   1218508  bytes
Variable Size               67110964  bytes
Database Buffers           130023424  bytes
Redo Buffers                 2973696  bytes
Control file created.
SQL> shutdown immediate;
ORA- 01109 : database not open
Database dismounted.
ORACLE instance shut down.
Теперь можно открыть исходную базу данных, а затем клонированную.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SQL> startup mount;
ORA- 32004 : obsolete and/or deprecated parameter(s) specified
ORACLE instance started.
Total System Global Area   201326592  bytes
Fixed Size                   1218508  bytes
Variable Size               67110964  bytes
Database Buffers           130023424  bytes
Redo Buffers                 2973696  bytes
Database mounted.
SQL> alter database open resetlogs;
Для используемого по умолчанию временного табличного пространства добавляем файлы данных.
Код: plaintext
1.
2.
3.
4.
5.
SQL>select tablespace_name from dba_tablespaces where contents='TEMPORARY';
TABLESPACE_NAME
-----------------------------
TEMP
SQL> alter tablespace  temp add  tempfile '/u01/app/oracle/oradata/ oracopy/temp01.dbf' size 500M;
На клиентских машинах добавляем в файл tnsnames.ora псевдоним для вновь созданной базы данных:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
oracopy =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = linux)(PORT =  1521 ))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = oracopy)
    )
  )
Проверим, зарегистрирована ли клонированная база процессом прослушивателя
[oracle@linux /]/u01/app/oracle/oracle/product/10.2.0/db_1/bin/lsnrctl
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
LSNRCTL> status
STATUS of the LISTENER
...........
Alias                     LISTENER
……………
    Services Summary...
     Instance "ora10", status READY, has  1  handler(s) for this service...
      Instance "oracopy", status READY, has  1  handler(s) for this service...
…………..
    The command completed successfully
LSNRCTL>

2. Создание клона базы данных из «горячей» резервной копии на локальной машине.
ОС - WINDOWS 2000
Oracle – 9.2.0.6
Database name – base
SID клонированной базы данных - basebk
      Определяем табличные пространства и файлы данных для копирования
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
SQL>select v$tablespace.name, v$datafile.name from  v$tablespace, v$datafile 
where  v$tablespace.ts#=v$datafile.TS#;   	
NAME	                         NAME
----------------------       ---------------
Q:\BASE\SYSTEM01.DBF      SYSTEM
Q:\BASE\USERS01.DBF         USERS
Q:\BASE\UNDO01.DBF          UNDOTBS
      Журнальные файлы
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
SQL> select v$logfile.group#, v$logfile.member, v$log.status from v$logfile, v$log  
where v$logfile.group#=v$log.group#;
GROUP#   MEMBER	                    STATUS
------   -----------------------  ---------------
 1            Q:\BASE\REDO01.LOG          INACTIVE
 2            Q:\BASE\REDO02.LOG          INACTIVE
 3            Q:\BASE\REDO03.LOG          CURRENT
Темп-файлы
Код: plaintext
1.
2.
3.
4.
5.
SQL> select v$tempfile.name, v$tablespace.name from v$tempfile , v$tablespace 
where v$tempfile.ts#= v$tablespace.ts#;
NAME                        NAME
---------------------  --------
Q:\BASE\TEMP01.DBF  TEMP
      Переводим все табличные пространства в режим “backup”
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
SQL> alter tablespace  system begin backup;
SQL> alter tablespace  users begin backup;
SQL> alter tablespace  undotbs begin backup;
-- резервируем  файлы  средствами ОС
SQL> alter tablespace  system end backup;
SQL> alter tablespace  users end backup;
SQL> alter tablespace  undotbs end backup;
      Создаем backup-копию управляющего файла
Код: plaintext
1.
SQL>alter database  backup  controlfile to 'q:\controlbk.ctl';
      Архивируем незаархивированные журнальные файлы
Код: plaintext
1.
SQL> alter system  archive log  current;
      Сохраняем файл параметров.
      Воссоздаем следующую структуру каталогов для клонированной базы данных

D:\ora9\oradata\basebk -- файлы данных
          \archive -- архивные журналы
D:\ora9\admin\basebk -- файл параметров и файлы трассировок
          \ bdump
          \ cdump
          \ pfile
          \ udump

      В каталог D:\ora92\oradata\basebk помещаем файлы данных и управляющий файл, в подкаталог archive – архивные журналы.
      Формируем файл параметров. На исходной базе выполним запрос
Код: plaintext
1.
2.
3.
4.
5.
SQL>select name,value from v$parameter2 where name in ('spfile', 'ifile');
NAME     	VALUE
-----      --------------------------------------------------
spfile      	
ifile        	d:\ora9\admin\base\pfile\init.ora
d:\ora9\admin\base\pfile\init.ora:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
control_files=("q:\base\control01.ctl")
db_name=base
instance_name=base

background_dump_dest=d:\ora9\admin\base\bdump
core_dump_dest=d:\ora9\admin\base\cdump
user_dump_dest=d:\ora9\admin\base\udump

log_archive_dest_1="location=q:\base\archive"

Файл параметров для клонированной базы -d:\ora9\admin\basebk\pfile\init.ora
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
control_files=(" D:\ora9\oradata\basebk\ controlbk.ctl")
db_name=base
instance_name=basebk
services_name=basebk
lock_name_space=basebk

background_dump_dest=d:\ora9\admin\basebk\bdump
core_dump_dest=d:\ora9\admin\basebk\cdump
user_dump_dest=d:\ora9\admin\basebk\udump

log_archive_dest_1="location=q:\basebk\archive"

      Создаем службу
D:\ora9\bin\oradim.exe -new -sid basebk -intpwd sys - startmode manual
Устанавливаем переменные окружения
D:\ora9>set oracle_sid=basebk
Восстанавливаем и открываем базу данных
D:\ora9\bin\sqlplus.exe
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
Enter user-name: sys as sysdba
Enter password: *****
Connected to an idle instance.
SQL>startup  mount pfile='d:\ora9\admin\basebk\pfile\init.ora'
.....................................................................................
Database  mounted.
-- переименовываем файлы данных
SQL>alter database  rename file 'q:\base\system01.dbf' to 'd:\ora9\oradata\basebk\system01.dbf';
SQL>alter  database  rename file 'q:\base\undo01.dbf' to 'd:\ora9\oradata\basebk\undo01.dbf';
SQL>alter  database  rename file 'q:\base\users01.dbf' to 'd:\ora9\oradata\basebk\users01.dbf';
SQL>alter  database  rename file 'q:\base\redo01.log' to '‘d:\ora9\oradata\basebk\redo01.log';
SQL>alter  database  rename file 'q:\base\redo02.log' to 'd:\ora9\oradata\basebk\redo02.log';
SQL>alter  database  rename file 'q:\base\redo02.log' to 'd:\ora9\oradata\basebk\redo02.log';
-- восстанавливаем  базу
SQL> recover database  until  cancel   using  backup  controlfile;
ORA- 00279 : change  4657702  generated at  11 / 26 / 2005   17 : 04 : 52  needed for thread  1  
ORA- 00289 : suggestion : D:\ORA9\ORADATE\BASEBK\ARC00008. 001  
ORA- 00280 : change  4657702  for thread  1  is in sequence # 8  
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
AUTO  
....................................................................................
ORA- 00308 : cannot open archive log 'D:\ORA9\ORADATE\BASEBK\ARC00018.001'
ORA- 27041 : unable to open file
OSD- 04002 : unable to open file
O/S-Error: (OS  2 ) 
SQL> alter database open resetlogs;
Database altered.
--создаем файлы  временного табличного пространства
SQL>alter tablespace temp add  tempfile  'd:/ora9/oradata/basebk/temp01.dbf' size 500M;
...
Рейтинг: 0 / 0
4FAQ - клонирование базы
    #33409833
Фотография nata1111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
замечания? дополнения? возмущения?
:)
...
Рейтинг: 0 / 0
4FAQ - клонирование базы
    #33409860
Фотография Vadim_Maximov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В FAQ это вряд ли пойдет имхо. Нужно дорабатывать. Много умных слов, непонятных чайникам и есть небольшие ляпы. Сейчас более подробно отвечать не готов, посмотрю завтра.

P.S. nata1111: это твоя шестая тема, у меня в избранном :)
...
Рейтинг: 0 / 0
4FAQ - клонирование базы
    #33409867
Фотография nata1111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vadim_Maximovэто твоя шестая тема, у меня в избранном :)
тебе-то оно зачем?
ткни на ляпы, плиз - а то как сам понимаешь, поиск бревен в собственном глазу... :)
...
Рейтинг: 0 / 0
4FAQ - клонирование базы
    #33409868
Фотография Ааз
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наташа - умничка. Качественно. Достаточно подробно, но без замутняющих дело подробностей.

Комментарии все-таки добавлю:
Если остановка базы данных была выполнена в режимах normal\immediate\transactional, то включать в резервную копию файлы оперативных журналов необязательно.Но желательно. Новичек может "упереться" в RESETLOGS/NORESETLOGS... 3. Восстановление при отсутствии части необходимых файлов.

Восстановление базы данных может быть проведено и в случае отсутствия части файлов, перечисленных в пункте I. Частичное восстановление возможно при утере части файлов данных, не принадлежащих табличному пространству system
При бэкапе после аварийной остановки может потребоваться undo. Обычно говорю, что undo - это "почти system". Не думаю, что стоит подробно останавливаться на этом, но и умалчивать нехорошо.

Всего
...
Рейтинг: 0 / 0
4FAQ - клонирование базы
    #33409871
Фотография juks@gala.net
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторДобавляем в tnsnames.ora псевдоним для созданной базы. В случае необходимости корректируем файл listener.ora и перезапускаем процесс прослушивания: <$Oracle_home>\bin\lsnrctl
Тут никсовые слеши
...
Рейтинг: 0 / 0
4FAQ - клонирование базы
    #33409875
Фотография Vadim_Maximov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nata1111 Vadim_Maximovэто твоя шестая тема, у меня в избранном :)
тебе-то оно зачем?
ткни на ляпы, плиз - а то как сам понимаешь, поиск бревен в собственном глазу... :)Статья нормальная для HX, Вячеслава Любюмудрова, Владимира Бегуна, Ааз'а, нас с тобой, и прочих. А для FAQ'a тяжеловата имхо. Нужно облегчить немного (готов попробовать взять на себя этот труд).

P.S: Почему тема в избранном? Люблю легкое и доступное изложение сложных тем.
...
Рейтинг: 0 / 0
4FAQ - клонирование базы
    #33409877
Фотография juks@gala.net
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vadim_Maximov nata1111 Vadim_Maximovэто твоя шестая тема, у меня в избранном :)
тебе-то оно зачем?
ткни на ляпы, плиз - а то как сам понимаешь, поиск бревен в собственном глазу... :)Статья нормальная для HX, Вячеслава Любюмудрова, Владимира Бегуна, Ааз'а, нас с тобой, и прочих. А для FAQ'a тяжеловата имхо. Нужно облегчить немного (готов попробовать взять на себя этот труд).

P.S: Почему тема в избранном? Люблю легкое и доступное изложение сложных тем.
Для HX, Вячеслава Любюмудрова, Владимира Бегуна, Ааз'а, нас с тобой, и прочих она как раз и не нужна
...
Рейтинг: 0 / 0
4FAQ - клонирование базы
    #33409880
Фотография Vadim_Maximov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это понятно. Но сабж звучит как "4FAQ - клонирование базы".
Об этом и речь.
...
Рейтинг: 0 / 0
4FAQ - клонирование базы
    #33409884
Фотография nata1111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей, спасибо за оценку и замечания - если дело дойдет до FAQ - обязательно учту.

2Вадим: отлично! тогда дело за тобой :)

PS
"для HX, Вячеслава Любюмудрова, Владимира Бегуна, Ааз'а, нас с тобой" - черт, мне нравится такое сопоставление ;)
...
Рейтинг: 0 / 0
4FAQ - клонирование базы
    #33409888
Фотография Vadim_Maximov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nata11112Вадим: отлично! тогда дело за тобой :)Попробую завтра.

nata1111"для HX, Вячеслава Любюмудрова, Владимира Бегуна, Ааз'а, нас с тобой" - черт, мне нравится такое сопоставление ;)Ты не поняла. Это нам (и им всем оно должно нравится )
...
Рейтинг: 0 / 0
4FAQ - клонирование базы
    #33409895
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужно заметить, что OEM 10g обделен вниманием в этом факе. Репозитарий и консоль тупым копированием не переносится на компьютер-клон и требует пересоздания. Об этом на форуме писали не раз, грабли известные и менее документированные чем изложенное.

Спасиба.
...
Рейтинг: 0 / 0
4FAQ - клонирование базы
    #33409911
Фотография hell
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Relic HunterНужно заметить, что OEM 10g обделен вниманием в этом факе. Репозитарий и консоль тупым копированием не переносится на компьютер-клон и требует пересоздания. Об этом на форуме писали не раз, грабли известные и менее документированные чем изложенное.


Помимо OEM можно клон еще сделать:

1. RMAN
2. Exp/Imp
...
Рейтинг: 0 / 0
4FAQ - клонирование базы
    #33410038
AndrK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nata111
Код: plaintext
select * from v$parameter2 where name in ('spfile', 'ifile');

мне просто интересно почему v$parameter 2
...
Рейтинг: 0 / 0
4FAQ - клонирование базы
    #33410406
Фотография Я и ёжик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vadim_Maximov А для FAQ'a тяжеловата имхо. Нужно облегчить немного (готов попробовать взять на себя этот труд).

Мне кажется все доступно изложено, чего там еще облегчать то?
...
Рейтинг: 0 / 0
4FAQ - клонирование базы
    #33410944
Фотография Apex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне понравилось. Согласен с Андреем, чего уж облегчать-то? То что он выглядит громоздко, так зато расписано хорошо.
Один ворпос:
авторИзменение местоположения файлов данных и журнальных файлов осуществляется следующим образов:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Изменение местоположения файлов данных и журнальных файлов осуществляется следующим образов:

--  база  данных  монтируется, но не открывается
SQL>startup  mount ;
--  файлы  данных и  журнальные файлы   средствами ОП  раскладываются 
--  по  новому местоположению и для  каждого из них  выполняется  команда 
SQL>alter database rename  file <путь и имя файла> to <новый путь и имя файла>;
-- например: alter database rename file ‘d:\dbs\redo01.log‘ to  ‘c:\oracle\redo01.log‘;

-- база открывается  для  общего доступа
SQL>alter database open;

А почему просто не отредактировать скрипт создания control file и не пересоздать его?
-------------------------------------------------------
Автор благодарит алфавит за любезно предоставленные ему буквы.
...
Рейтинг: 0 / 0
4FAQ - клонирование базы
    #33411005
kapelan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
передвинуть все на другую платформу ?
этот вопрос игнорируется.
...
Рейтинг: 0 / 0
4FAQ - клонирование базы
    #33411010
Фотография juks@gala.net
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ApexА почему просто не отредактировать скрипт создания control file и не пересоздать его?
-------------------------------------------------------
Автор благодарит алфавит за любезно предоставленные ему буквы.
Пересоздание control file есть риск
...
Рейтинг: 0 / 0
4FAQ - клонирование базы
    #33411080
Фотография nata1111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Apex
А почему просто не отредактировать скрипт создания control file и не пересоздать его?

Чуть дальше есть упоминания о такой возможности, а в первом примере так и сделано :)
Хотелось расположить пункты в порядке нарастающей сложности операций.
...
Рейтинг: 0 / 0
4FAQ - клонирование базы
    #33411100
Фотография nata1111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Relic HunterНужно заметить, что OEM 10g обделен вниманием в этом факе. Репозитарий и консоль тупым копированием не переносится на компьютер-клон и требует пересоздания. Об этом на форуме писали не раз, грабли известные и менее документированные чем изложенное.

Спасиба.
ок, действительно, стоит добавить, раз уж админы десятки без OEM никак... :)
...
Рейтинг: 0 / 0
4FAQ - клонирование базы
    #33411125
Фотография nata1111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kapelanпередвинуть все на другую платформу ?
этот вопрос игнорируется.
hell
Помимо OEM можно клон еще сделать:
1. RMAN
2. Exp/Imp

в теме затронуто только пользовательское резервирование
...
Рейтинг: 0 / 0
4FAQ - клонирование базы
    #33411135
Кекис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добавить вариант клонирования при помощи RMAN. Будет короче и проще.
...
Рейтинг: 0 / 0
4FAQ - клонирование базы
    #33411218
Фотография hell
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nata1111
в теме затронуто только пользовательское резервирование

Э, что такое "пользовательское резервирование"(гугл не знает)? Если пользователь<>админ - как этот умный пользователь остановит базу, или сделает begin backup?
...
Рейтинг: 0 / 0
4FAQ - клонирование базы
    #33411286
Фотография nata1111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пользовательское резервирование ==User-Managed Backup
...
Рейтинг: 0 / 0
4FAQ - клонирование базы
    #33411291
Кекис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Управляемое пользователем лучше звучит :)
...
Рейтинг: 0 / 0
25 сообщений из 227, страница 1 из 10
Форумы / Oracle [игнор отключен] [закрыт для гостей] / 4FAQ - клонирование базы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]