HTML Diff
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&gt; alter tablespace IDXS READ ONLY; SQL&gt; alter tablespace USERS READ ONLY;<p>После этого производим собственно миграцию.</p>
6 SQL&gt; alter tablespace IDXS READ ONLY; SQL&gt; 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