Привете, в этой статье я расскажу о перемещаемых табличных пространствах(Transportable tablespaces) в Oracle 11g. Табличное пространство можно клонировать и затем включить в другую базу данных путем копирования, а также можно исключить из одной базы данных Oracle и включить в другую базу данных Oracle на той же платформе с помощью перемещения.
Перенос данных с помощью перемещения табличных пространств выполняется на порядок быстрее, чем при операциях экспорта/импорта или выгрузки/загрузки, поскольку перемещение табличных пространств состоит только из операций копирования файлов данных и интегрирования метаданных табличных пространств. Перемещение табличных пространств позволяет также перемещать соответствующие индексы, так что после импорта или загрузки табличных данных не требуется перестраивать индексы.
Работа с утилитами экспорта и импорта
Oracle Database позволяет копировать данные между базами данных, а также обмениваться ими с внешними файлами. Копирование осуществляется посредством экспорта и импорта.
Для осуществления данной задачи есть утилиты imp.exe и exp.exe
Переносимые табличные пространства
Оперативное предоставление разработчикам свежей копии данных производственной системы. Использование информации, публикуемой на неперезаписываемых носителях (CD-ROM, DVD и т.п.). Быстрое перемещение данных из оперативной системы в хранилище или в витрину данных.
Ускорение переноса информации достигается за счет замены ресурсоемких процессов экспорта-импорта или выгрузки-загрузки значительно более быстрым копированием файлов данных с одной вычислительной установки на другую.
Выбор самодостаточного набора табличных пространств
Существует ряд условий ограничивающих применение описываемой возможности.
Можно перемещать табличные пространства только между такими базами данных, которые:
1. Имеют одинаковый размер блока (db_block_size), созданы с одинаковой кодировкой (character set), в файлах инициализации (INIT.ORA) исходной и целевых баз данных параметр COMPATIBLE должен быть установлен в значение, работают на совместимых платформах одного и того же производителя оборудования.
Удовлетворение требований можно проверить, выполнив в исходной и целевой БД запрос:
select name, value from v$parameter where name in ('db_block_size','compatible')
union all
selct parameter, value from nls_database_parameters where parameter like '%characterset'
Результаты запросов в исходной и целевой БД, должны быть одинаковые.
2. В целевой базе данных не должно быть табличного пространства с таким же именем, как у подключаемого.
3. Не поддерживается транспортировка: снапшотов и тиражируемых таблиц, функциональных индексов, локальных ссылок на объекты, доменных индексов.
4. Выбор самодостаточного набора табличных пространств
Самодостаточный набор табличных пространств – это совокупность табличных пространств, объекты которых не ссылаются на какие-либо объекты, не содержащиеся в данном наборе.
Для проверки самодостаточности удобно использовать процедуру TRANSPORT_SET_CHECK(для выполнения процедуры требуется роль EXECUTE_CATALOG_ROLE).
begin
sys.dbms_tts.transport_set_check (ts_list => 'USER_DATA', incl_constraints => true);
end;
Результаты ее работы записываются во временную таблицу и их можно посмотреть через системное представление SYS.TRANSPORT_SET_VIOLATIONS:
select * from sys.transport_set_violations
Перенос набора табличных пространств
Сначала следует перевести табличные пространства в состояние READ ONLY(далее в тексте XXX — имя табличного пространства):
ALTER TABLESPACE TS_XXX READ ONLY;
Затем с помощью утилиты EXP экспортируются метаданные словаря.
В командной строке следует изменить кодировку для корректного отображения информации.
set nls_lang=russian_cis.ru8pc866
exp transport_tablespace=y tablespaces=(TS_XXX) triggers=y constraints=y grants=y file=d:exp_xxx log=d:exp_xxx
oracle попросит ввести имя пользователя и пароль:
Имя пользователя: sys/system@orcl2012 as sysdba
orcl2012 – строка подключения к исходной БД.
TRANSPORT_TABLESPACE=Y — указывает, что выполняется экспорт метаданных транспортируемых табличных пространств, TABLESPACES=(USERS, USER_DATA, INDX) — задает список транспортируемых табличных пространств, TRIGGERS=Y – Экспортировать табличные триггеры (если указать N, то триггеры экспортироваться не будут) CONSTRAINTS=Y – Экспортировать ограничения целостности (при N не экспортируются ограничения типов PRIMARY KEY, UNIQUE, FOREIGN KEY и CHECK, однако ограничения NOT NULL экспортируются), GRANTS=Y – Экспортировать привилегии доступа к таблицам (N отменяет экспорт привилегий), FILE=exp_tts и log=exp_tts имя файла с данными и имя файла журнала экспорта.
После того как утилита успешно экспортирует метаданные на выходе будет файл с расширением .dmp.(exp_xxx.dmp)
После экспорта метаданных, можно перевести табличные пространства назад в состояние READ WRITE:
ALTER TABLESPACE TS_XXX READ WRITE;
Подключение набора табличных пространств к целевой БД
Перед импортом, необходимо перенести данные от исходной базы данных к целевой:
Это можно сделать средствами ftp, командной строки или копированием средствами Windows.
Нужно копировать файл табличного пространства(.dbf) от исходной БД к целевой.
В командной строке.
Copy \server1oradataorclTS_XXX.dbf \server2oradataorcl
\server1oradataorclTS_XXX.dbf — путь к файлу перемещаемого табличного пространства на исходной базе данных
\server2oradataorcl — путь, где будет хранится перемещаемое табличное пространство на целевой базе данных
Теперь можно подключать набор табличных пространств к целевой БД
imp transport_tablespace=y DATAFILES=('E:server2oradataorclTS_XXX.dbf') TABLESPACES=(TS_XXX) TTS_OWNERS=(XXXCORE) fromuser=(XXXCORE) touser=(XXXCORE) FILE=D: exp_xxx.dmp LOG=D:imp_xxx.log
oracle попросит ввести имя пользователя и пароль:
sys/system@ora2015 as sysdba
ora2015 – строка подключения к целевой БД.
TRANSPORT_TABLESPACE=Y – указывает, что импортируются метаданные набора подключаемых табличных пространств, DATAFILES=(…) – список, определяющий имена и место расположения подключаемых файлов данных, TABLESPACES=(TS_XXX) – список табличных пространств. Если параметр не задан, то список берется из файла экспорта. Если задан, то сверяется со списком, содержащимся в файле экспорта (в случае несовпадения будет выдано сообщение об ошибке). TTS_OWNERS=( XXXCORE) – список схем, которым принадлежат объекты в подключаемых табличных пространствах. Если параметр не задан, то список берется из файла экспорта. Если задан, то сверяется со списком, содержащимся в файле экспорта (в случае несовпадения будет выдано сообщение об ошибке). FROMUSER=( XXXCORE), TOUSER=( XXXCORE) – имена исходных и соответствующих им целевых схем.
Если импорт завершен успешно, можно проверять наличие данных на целевой БД.
Используемая литература литература:
- Тидуэлл Д. XSLT / Д. Тидуэлл – СПб: Символ-Плюс, 2010. – 960 с.
- www.emanual.ru
- docs.oracle.com/cd/B19306_01/server.102/b14231/tspaces.htm
Автор: DevAndrew