1.Определяем файлы базы данных и копируем их в
нужное место. Для идентификации необходимых файлов базы данных выполните
запрос:
SELECT NAME, BYTES
FROM (SELECT NAME, BYTES FROM
V$DATAFILE
UNION ALL
SELECT NAME, BYTES FROM
V$TEMPFILE
UNION ALL
SELECT LF.MEMBER
"NAME", L.BYTES
FROM V$LOGFILE LF, V$LOG
L
WHERE LF.GROUP# =
L.GROUP#) USED,
(SELECT SUM (BYTES) AS POO
FROM DBA_FREE_SPACE) FREE
Он покажет все файлы данных, временные
файлы и журналы повторного выполнения. Кроме того, будет показан размер файлов,
чтобы можно было оценить необходимый объем пространства на целевой файловой
системе для хранения.
Кроме того нужно скопировать файлы из каталога
dbs. Кроме spfile.
2.shutdown immediate
3.переносим файлы средствами ОС (время должно
остаться тем, которое было ( scp–p))
4.Убедитесь, что все скопированные файлы и
директории имеют корректного владельца и набор прав доступа.
5.Поднимаем
исходную базуSTARTUP.
6.Создание pfile для новой базы данных. Этот шаг
предполагает, что вы используете spfile, если нет, то скопируйте существующий.
Для создания, выполните в sqlplus:
create pfile='init_новый_SID.ora' from spfile;
Этой командой вы создадите новый pfile в
директории $ORACLE_HOME/dbs.
Только что созданный pfile необходимо
отредактировать. Если клонированная база данных имеет новое имя, то его
требуется сменить, так же как и некоторые пути. Просмотрите созданный файл и
внесите необходимые изменения. Обратите внимание на параметры памяти, например,
если вы клонируете промышленную базу на сервер разработки, уступающий по
параметрам, то необходимо уменьшит соответствующие параметры, например, объем
используемой оперативной памяти.
7.На этом шаге создаются управляющие файлы для
клонированной базы данных. Для этого подключаемся к исходной базе данных и
делаем снимок с текущих управляющих файлов, выполнив в sqlplus:
alter database backup controlfile to trace as '/home/oracle/cr_новый_SID.sql'
8.Теперь, используя текстовый редактор внесите в
полученный файл следующие изменения:
* Удалите все строки в начале файла, до
второй строки, содержащей STARTUP MOUNT
* Удалите все строки, которые начинаются с
–
* Удалите все строки, которые начинаются с
#
* Удалите пустые строки в секции CREATE
CONTROLFILE
* Удалитестроку RECOVER DATABASE USING BACKUP
CONTROLFILE
*
Переместите в начало файла строку CREATE CONTROLFILE. Слово REUSE заменить на
SET. Имя базы данных установить равным новому имени (если его изменили).
Решите, будет ли база данных в режиме archivelog или нет
* Если изменены пути расположения файлов,
то внесите необходимые изменения
Ниже приведен пример, как
примерно должен выглядеть полученный файл, база данных не в режиме ARCHIVELOG и
называется TEST:
STARTUP NOMOUNT
CREATE CONTROLFILE SET DATABASE
"TEST" RESETLOGS FORCE LOGGING NOARCHIVELOG
MAXLOGFILES 50
MAXLOGMEMBERS 5
MAXDATAFILES 100
MAXINSTANCES 1
MAXLOGHISTORY 453
LOGFILE
GROUP 1
'/u03/oradata/test/redo01.log'SIZE
100M,
GROUP 2
'/u03/oradata/test/redo02.log'SIZE
100M,
GROUP 3
'/u03/oradata/test/redo03.log'SIZE 100M
DATAFILE
'/u03/oradata/test/system01.dbf',
'/u03/oradata/test/undotbs01.dbf',
'/u03/oradata/test/cwmlite01.dbf',
'/u03/oradata/test/drsys01.dbf',
'/u03/oradata/test/example01.dbf',
'/u03/oradata/test/indx01.dbf',
'/u03/oradata/test/odm01.dbf',
'/u03/oradata/test/tools01.dbf',
'/u03/oradata/test/users01.dbf',
'/u03/oradata/test/xdb01.dbf',
'/u03/oradata/test/andy01.dbf',
'/u03/oradata/test/psstats01.dbf',
'/u03/oradata/test/planner01.dbf'
CHARACTER SET CL8MSWIN1251
;
ALTER DATABASE OPEN RESETLOGS;
ALTER TABLESPACE TEMP ADD TEMPFILE
'/u03/oradata/test/temp01.dbf'
SIZE
104857600REUSE AUTOEXTEND OFF;
9.Для создания управляющих файлов в новой базе выполните:
sqlplus "/ as sysdba"
@/home/oracle/cr_новый_SID
10.startup
mount;
11.select name from v$datafile;
12.select member from v$logfile;
13.alterdatabase rename file 'старое местоположение файла' to 'новое
местоположение файла';