![]() |
|
Программирование >> Oracle
Глава 8 Итак, мы создали табличное пространство и установили его в качестве стандартного для пользователя. Затем мы создали организованную по индексу таблицу с двумя сегментами - сегментом индекса и дополнительным сегментом. Мы создали таблицу со столбцом типа CLOB, состоящую из трех сегментов. Затем мы создали фрагментиро-ванную таблицу из семи сегментов. Наконец, имеется еще обычная, простая таблица. Выполним экспорт схемы: tkyte@TKYTE816> host exp userid=tkyte/tkyte owner=tkyte и удалим табличное пространство: tkyte@TKYTE816> drop tablespace exp test including contents; Tablespace dropped. tkyte@TKYTE816> alter user tkyte default tablespace data; User altered. При импорте этой схемы почти все таблицы не будут восстановлены: tkyte@TKYTE816> host imp userid=tkyte/tkyte full=y Import: Release 8.1.6.0.0 - Production on Tue Mar 20 19:03:18 2001 (c) Copyright 1999 Oracle Corporation. All rights reserved. Connected to: Oracle8i Enterprise Edition Release 8.1.6.0.0 - Production With the Partitioning option JServer Release 8.1.6.0.0 - Production Export file created by EXPORT:V08.01.06 via conventional path import done in WE8ISO8859P1 character set and WE8ISO8859P1 NCHAR character sat . importing TKYTEs objects into TKYTE IMP-00017: following statement failed with ORACLE error 959: CREATE TABLE T2 ( NUMBER(*,0), Y CLOB) PCTFREE 10 PCTUSED 40 INITRA NS 1 MAXTRANS 255 LOGGING STORAGE (INITIAL 65536) TABLESPACE EXP TEST LOB ( Y ) STORE AS (TABLESPACE EXP TEST ENABLE STORAGE IN ROW CHUNK 8192 PCT VERSION 10 NOCACHE STORAGE(INITIAL 65536)) IMP-00003: ORACLE error 959 encountered ORA-00959: tablespace EXP TEST does not exist IMP-00017: following statement failed with ORACLE error 959: CREATE TABLE T3 (X NUMBER(*,0), A NUMBER(*,0)) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 LOGGING TABLESPACE EXP TEST PARTITION BY RANGE ( A ) (PARTITION PART 1 VALUES LESS THAN (2) PCTFREE 10 PCTUSED 40 INIT RANS 1 MAXTRANS 255 STORAGE (INITIAL 65536) TABLESPACE EXP TEST LOGGING, P ARTITION PART 2 VALUES LESS THAN (3) PCTFREE 10 PCTUSED 40 INITRANS 1 MA XTRANS 255 STORAGE (INITIAL 65536) TABLESPACE EXP TEST LOGGING, PARTITION PART 3 VALUES LESS THAN (4) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 25 5 STORAGE(INITIAL 65536) TABLESPACE EXP TEST LOGGING, PARTITION PART 4 VALUES LESS THAN (5) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 STORAGE (INITIAL 65536) TABLESPACE EXP TEST LOGGING, PARTITION PART 5 VALUES LE SS THAN (6) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 STORAGE(INITIAL Импорт и экспорт 447 65536) TABLESPACE EXP TEST LOGGING, PARTITION PART 6 VALUES LESS THAN ( 7) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 STORAGE (INITIAL 65536) ТА BLESPACE EXP TEST LOGGING, PARTITION PART 7 VALUES LESS THAN (8) PCTFR EE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 STORAGE (INITIAL 65536) TABLESPACE EXP TEST LOGGING ) IMP-00003: ORACLE error 959 encountered ORA-00959: tablespace EXP TEST does not exist . . importing table T4 0 rows imported IMP-00017: following statement failed with ORACLE error 959: CREATE TABLE T1 ( X NUMBER(*,0), Y VARCHAR2 (25) , PRIMARY KEY ( X ) EN ABLE) ORGANIZATION INDEX NOCOMPRESS PCTFREE 10 INITRANS 2 MAXTRANS 255 LOG GING STORAGE (INITIAL 65536) TABLESPACE EXP TEST PCTTHRESHOLD 50 OVERFLOW PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 LOGGING STORAGE(INITIAL 6553 6) TABLESPACE EXP TEST IMP-00003: ORACLE error 959 encountered ORA-00959: tablespace EXP TEST does not exist Import terminated successfully with warnings. Единственная восстановленная безошибочно таблица - это простая нормальная таблица. Для этой таблицы утилита IMP переписала SQL-оператор. Она удалила первую обнаруженную конструкцию TABLESPACE EXPTEST и переписала оператор CREATE. Этот переписанный оператор CREATE успешно выполнился. Другие операторы CREATE, переписанные аналогично, не выполнились. Единственное решение этой проблемы - создать таблицы заранее, а затем импортировать с параметром IGNORE=Y. Если под рукой нет операторов CREATE TABLE для таблиц, их, конечно, можно восстановить из DMP-файла с помощью параметра INDEXFILE=Y. Это позволит изменить операторы, подставив соответствующую информацию о табличных пространствах вручную. В нашем случае, поскольку операторы ЯОД мне известны, я просто создам необходимые три таблицы, указав при необходимости новые табличные пространства: tkyte@TKYTE816> create table tl 2 (x int primary key, у varchar2 (25)) 3 organization index 4 overflow tablespace data 5 / Table created. tkyte@TKYTE816> create table t2 2 (x int, у clob) Table created. tkyte@TKYTE816> create table t3 2 (x int, 3 a int default to char(sysdate,d) 5 PARTITION BY RANGE (a) 7 PARTITION part l VALUES LESS THAN(2), 8 PARTITION part 2 VALUES LESS THAN(3), Глава 8 9 PARTITION part 3 VALUES LESS THAN(4), 10 PARTITION part 4 VALUES LESS THAN(5), 11 PARTITION part 5 VALUES LESS THAN(6), 12 PARTITION part 6 VALUES LESS THAN(7) , 13 PARTITION part 7 VALUES LESS THAN(8) 14 ) 15 / Table created. и после этого смогу импортировать данные без ошибок: tkyte@TKYTE816> host imp userid=tkyte/tkyte full=y ignore=y Import: Release 8.1.6.0.0 - Production on Tue Mar 20 19:03:20 2001 (c) Copyright 1999 Oracle Corporation. All rights reserved. Connected to: Oracle8i Enterprise Edition Release 8.1.6.0.0 With the Partitioning option JServer Release 8.1.6.0.0 - Production Production created by EXPORT:V08.01.06 via conventional path in WE8ISO8859P1 character set and WE8ISO8859P1 NCHAR character Export file import done set . importing TKYTEs objects . importing table . . importing partition . . importing partition . . importing partition . . importing partition . importing partition . . importing partition . . importing partition . importing table . . importing table into TKYTE T2 T3 : PART 1 T3 : PART 2 T3 : PART 3 T3 : PART 4 T3 : PART 5 T3 : PART 6 T3 : PART 7 T4 0 rows imported rows rows rows rows rows rows rows 0 rows imported imported imported imported imported imported imported imported imported T1 0 rows Import terminated successfully without warnings. Что будет, если для некоторых объектов предложенный обходной путь не подойдет и утилита IMP по-прежнему будет выдавать сообщение об ошибке ORA-00959 tablespace name does not exist. Единственное временное решение, которое мне удалось найти, - создать объект заранее (как было показано выше), а затем создать очень небольшие табличные пространства с требуемыми утилитой IMP именами. Для этих табличных пространств надо задать настолько маленькие файлы данных, чтобы в них нельзя было что-то реально создать. Теперь утилита IMP будет работать, и в дальнейшем эти табличные пространства можно будет удалить. Резюме В этой главе мы рассмотрели много вариантов использования средств экспорта и импорта. Я представил решения типичных проблем и ответы на часто задаваемые вопросы по поводу этих средств. Утилиты ЕХР и IMP особенно полезны, если знать пару-тройку
|
© 2006 - 2025 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки. |