0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<p>Теги: субд, migration, oracle 12c, pdb, pluggable database, transparent tablespaces, transportable tablespaces, asm, asmcmd, imp.par</p>
1
<p>Теги: субд, migration, oracle 12c, pdb, pluggable database, transparent tablespaces, transportable tablespaces, asm, asmcmd, imp.par</p>
2
<h2>Задача: перенести базу 11G в контейнер 12C</h2>
2
<h2>Задача: перенести базу 11G в контейнер 12C</h2>
3
<p>В один прекрасный момент приходит осознание, что куча инстансов по разным серверам - жутко не удобно. И тогда очень кстати оказываются оракловые<strong>pluggable</strong>базы данных.</p>
3
<p>В один прекрасный момент приходит осознание, что куча инстансов по разным серверам - жутко не удобно. И тогда очень кстати оказываются оракловые<strong>pluggable</strong>базы данных.</p>
4
<h2>Итак, приступим</h2>
4
<h2>Итак, приступим</h2>
5
<p>Для миграции будут использованы<strong>transportable tablespaces</strong>. Мигрировать будет рабочие<strong>tablespaces</strong>. Перед тем как их мигрировать, их нужно перевести в режим<strong>READ ONLY</strong>:</p>
5
<p>Для миграции будут использованы<strong>transportable tablespaces</strong>. Мигрировать будет рабочие<strong>tablespaces</strong>. Перед тем как их мигрировать, их нужно перевести в режим<strong>READ ONLY</strong>:</p>
6
SQL> alter tablespace IDXS READ ONLY; SQL> alter tablespace USERS READ ONLY;<p>После этого производим собственно миграцию.</p>
6
SQL> alter tablespace IDXS READ ONLY; SQL> alter tablespace USERS READ ONLY;<p>После этого производим собственно миграцию.</p>
7
expdp userid=\"/ as sysdba\" DIRECTORY=DTPUMP dumpfile=fulldb.dmp logfile=fulldb.log full=y transportable=always version=12.0<p>И копируем файлы данных, для того что бы перенести их на конечную базу. После этого в контейнерной базе создаём новую подключаемую базу:</p>
7
expdp userid=\"/ as sysdba\" DIRECTORY=DTPUMP dumpfile=fulldb.dmp logfile=fulldb.log full=y transportable=always version=12.0<p>И копируем файлы данных, для того что бы перенести их на конечную базу. После этого в контейнерной базе создаём новую подключаемую базу:</p>
8
create pluggable database pdb_new admin userpdb_newadmin identified bypdb_newadmin<p>Если мы создаём базу без использования<strong>ASM</strong>, нужно использовать:</p>
8
create pluggable database pdb_new admin userpdb_newadmin identified bypdb_newadmin<p>Если мы создаём базу без использования<strong>ASM</strong>, нужно использовать:</p>
9
create pluggable database pdb_new admin userpdb_newadmin identified bypdb_newadmin file_name_convert=(‘orcl_old’,’pdb_new’);<p>И можем увидеть её с помощью команды:</p>
9
create pluggable database pdb_new admin userpdb_newadmin identified bypdb_newadmin file_name_convert=(‘orcl_old’,’pdb_new’);<p>И можем увидеть её с помощью команды:</p>
10
<p>Открываем новосозданную базу и смотрим каталог размещения файлов%</p>
10
<p>Открываем новосозданную базу и смотрим каталог размещения файлов%</p>
11
alter pluggable database pdb_new open; alter session set container=pdb_new; select * from v$datafile;<p>Т.к. я использую<strong>ASM</strong>, то через<strong>asmcmd</strong>захожу в нужный каталог для файлов данных и копирую файлы в асм:</p>
11
alter pluggable database pdb_new open; alter session set container=pdb_new; select * from v$datafile;<p>Т.к. я использую<strong>ASM</strong>, то через<strong>asmcmd</strong>захожу в нужный каталог для файлов данных и копирую файлы в асм:</p>
12
cp ‘/mnt/backup/o1_mf_users_by14xy3s_.dbf’ ./ cp ‘/mnt/backup/o1_mf_idxs_by14y2hd_.dbf’ ./<h2>Теперь файлы на месте и можно начинать импорт</h2>
12
cp ‘/mnt/backup/o1_mf_users_by14xy3s_.dbf’ ./ cp ‘/mnt/backup/o1_mf_idxs_by14y2hd_.dbf’ ./<h2>Теперь файлы на месте и можно начинать импорт</h2>
13
<p>Формируем файл импорта<strong>imp.par</strong>:</p>
13
<p>Формируем файл импорта<strong>imp.par</strong>:</p>
14
full=y transport_datafiles=’+asmdata/devora/3E1D4A5F781F667CE055862B2B0CF8FE/DATAFILE/o1_mf_users_by14xy3s_.dbf’, ‘+asmdata/devora/3E1D4A5F781F667CE055862B2B0CF8FE/DATAFILE/o1_mf_idxs_by14y2hd_.dbf’, ‘+asmdata/devora/3E1D4A5F781F667CE055862B2B0CF8FE/DATAFILE/o1_mf_smallblo_by19kmt4_.dbf’<p>Пускаем импорт:</p>
14
full=y transport_datafiles=’+asmdata/devora/3E1D4A5F781F667CE055862B2B0CF8FE/DATAFILE/o1_mf_users_by14xy3s_.dbf’, ‘+asmdata/devora/3E1D4A5F781F667CE055862B2B0CF8FE/DATAFILE/o1_mf_idxs_by14y2hd_.dbf’, ‘+asmdata/devora/3E1D4A5F781F667CE055862B2B0CF8FE/DATAFILE/o1_mf_smallblo_by19kmt4_.dbf’<p>Пускаем импорт:</p>
15
impdp userid=\"sys\/syspwd6@pdb_new as sysdba\" DIRECTORY=BACKUP dumpfile=fulldb.dmp logfile=impbios.log parfile=imp.par<h2>База перенесена!</h2>
15
impdp userid=\"sys\/syspwd6@pdb_new as sysdba\" DIRECTORY=BACKUP dumpfile=fulldb.dmp logfile=impbios.log parfile=imp.par<h2>База перенесена!</h2>
16
<p>Компилируем битые объекты и можно работать.</p>
16
<p>Компилируем битые объекты и можно работать.</p>
17
<p><em>Есть вопрос? Напишите в комментариях!</em></p>
17
<p><em>Есть вопрос? Напишите в комментариях!</em></p>
18
18