Программирование >>  Oracle 

1 ... 124 125 126 [ 127 ] 128 129 130 ... 469


410 Глава 8

Перенос данных

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

На переносимые табличные пространства налагается ряд ограничений.

Исходная и целевая базы данн1х должн1 работать на одной аппаратной платформе. Нельзя, например, перенести файлы данных с Windows NT на HP/UX. Файл DMP можно копировать из одной ОС в другую, но файлы данных - нет; в отличие от файлов DMP, файлы данных - зависимы от ОС.

Исходная и целевая базы данных должн1 использовать один и тот же набор символов. Нельзя, например, взять набор файлов из базы данных с набором символов WE8ISO8859P1 и подключить их к экземпляру, работающему в кодировке UTF8.

В целевой базе данн1х не должно б1ть табличного пространства с тем же име-

нем. Будет использоваться имя табличного пространства из исходной базы данных. Если в целевой базе данных уже есть табличное пространство с таким именем, сервер Oracle не сможет подключить одноименное.

Размеры блока в исходной и целевой базе даннгх должна! совпадать. Нельзя под-

ключить файл из базы данных с размером блока 4 Кбайт к базе данных с размером блока 8 Кбайт.

Необходимо переносить самодостаточн1й набор объектов. Например, нельзя переносить табличное пространство, содержащее индекс, не перенося при этом табличное пространство, содержащее индексируемую таблицу.

Нельзя переносить некоторые объект!. Это материализованные представления,

индексы по функциям, прикладные индексы (например, создаваемые компонентом interMedia), ссылки и очереди (advanced queues) с несколькими реципиентами.

В исходной базе данн1х переносимое табличное пространство должно временно переведено в режим READ ONLY. Речь идет о периоде времени, достаточном для экспортирования метаданных табличного пространства и копирования файлов данных.

Нельзя переносить объект!, принадлежащие пользователю SYS. Если в таблич-

ном пространстве имеются объекты, принадлежащие SYS, перенос завершится неудачно. Это означает, что такие объекты, как сегменты отката, табличное пространство SYSTEM и др., не могут быть перенесены (что логично, поскольку нет смысла транспортировать эти объекты).



Импорт и экспорт 411

В следующем примере показаны все шаги, необходимые для переноса табличного пространства. Чтобы было интереснее, я использую два табличных пространства. Начнем с организации табличных пространств, таблиц и создания нового пользователя:

SQL> create tablespace tts ex1

2 datafile c:\oracle\oradata\tkyte816\tts exl.dbf size 1m

3 extent management local uniform size 64k; Tablespace created.

SQL> create tablespace tts ex2

2 datafile c:\oracle\oradata\tkyte816\tts ex2.dbf size lm

3 extent management local uniform size 64k; Tablespace created.

SQL> create user tts user identified by tts user

2 default tablespace tts ex1

3 temporary tablespace temp; User created.

SQL> grant dba to tts user; Grant succeeded.

SQL> connect tts user/tts user Connected.

SQL> create table emp as select * from scott.emp; Table created.

SQL> create table dept as select * from scott.dept; Table created.

SQL> create index emp idx on emp(empno) tablespace tts ex2; Index created.

SQL> create index dept idx on dept(deptno) tablespace tts ex2; Index created.

SQL> select object type, object name,

2 decode (status, INVALID ,*,) status,

3 tablespace name

4 from user objects a, user segments b

5 where a.object name = b.segment name (+)

6 order by object type, object name

OBJECT TYPE OBJECT NAME S TABLESPACE NAME

INDEX DEPT IDX TTS EX2

EMP IDX TTS EX2

TABLE DEFT TTS EX1

EMP TTS EX1

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



412 Глава 8

SQL> exec sys.dbms tts.transport set check(tts exl, TRUE); PL/SQL procedure successfully completed.

SQL> select * from sys.transport set violations; no rows selected

SQL> exec sys.dbms tts.transport set check(tts ex2 , TRUE); PL/SQL procedure successfully completed.

SQL> select * from sys.transport set violations;

VIOLATIONS

Index TTS USER.EMP IDX in tablespace TTS EX2 points to table TTS USER.BMP

in tablespace TTS EX1

Index TTS USER.DEPT IDX in tablespace TTS EX2 points to table TTS USER.DEPT

in tablespace TTS EX1

SQL> exec sys.dbms tts.transport set check(tts exl, tts ex2, TRUE); PL/SQL procedure successfully completed.

SQL> select * from sys.transport set violations; no rows selected

Табличное пространство TTS EX1 можно переносить, поскольку оно содержит только данные таблицы и является самодостаточным. Однако попытка перенести табличное пространство TTS EX2 закончится неудачей, поскольку оно содержит индексы, но не таблицы, по которым эти индексы построены. Два табличных пространства, TTS EX1 и TTS EX2, можно перенести вместе, поскольку при этом переносятся и таблицы, и индексы.

Процедуру SYS.DBMS TTS может выполнять любой администратор базы данн1х (администраторы обычно имеют привилегию EXECUTE ANY PROCEDURE) или любой пользователь, которому предоставлена роль EXECUTE CATALOG ROLE. В рез-тате выполнения этой процедуры в динамически создаваемую таблицу записываются все ошибки, которые могут возникнуть при попытке переноса указанных табличных пространств. Теперь все готово для отсоединения или переноса соответствующих таблич-н1х пространств. Начнем с перевода их в режим READ ONLY:

SQL> alter tablespace tts exl read only; Tablespace altered.

SQL> alter tablespace tts ex2 read only; Tablespace altered.

Затем выполняется команда ЕХР:

SQL> host exp userid=sys/change on install as sysdba

transport tablespace=y

tablespaces=(tts exl,tts ex2)

Export: Release 8.1.6.0.0 - Production on Mon Mar 19 19:26:26 2001 (c) Copyright 1999 Oracle Corporation. All rights reserved. Production

With the Partitioning option



1 ... 124 125 126 [ 127 ] 128 129 130 ... 469

© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика