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

1 ... 136 137 138 [ 139 ] 140 141 142 ... 469


Глава 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 особенно полезны, если знать пару-тройку



1 ... 136 137 138 [ 139 ] 140 141 142 ... 469

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