Импорт с опцией destroy=Y

Oleg Afanasiev
Дата: 12.11.2008 14:35:21
Хотелось бы уточнить для себя, что происходит при импорте с данной опцией
Насколько я понимаю , этот режим используется для быстрого восстановления БД из файла полного экспорта с пересозданием табличных пространств.
Коллега сделал так:
exp system/passs@database1 owner=someuser1 file=someuser1.dmp
в базе database2 существует пользователь someuser2
imp system/passs@database2 fromuser=someuser1 touser=someuser2 destroy=Y file=someuser1.dmp
При этом он утверждает, что все объекты и данные пользователя someuser2 обновились
данными пользователя someuser1(структуры одинаковые)

Теоретически, должен был пересоздаться defaul tablespace в котором хранились объекты
someuser2 при условии, что оно такое же как и у someuser1.

А если они имеют разное имя?
Что вообще произошло на самом деле?

У меня сейчас нет локального сервера , не могу сделать тест.


-----------------------
Вечны налоги,
Смерть и потеря данных.
Что на этот раз?
pravednik
Дата: 12.11.2008 15:38:32
SQL> select username, DEFAULT_TABLESPACE from dba_users where username like 'SOM%';

USERNAME                       DEFAULT_TABLESPACE
------------------------------ ------------------------------
SOMEUSER2                      SOME_2
SOMEUSER1                      SOME_1



SQL> select object_name, object_type, owner from dba_objects where owner like 'SOM%';

OBJECT_NAME      OBJECT_TYPE         OWNER
---------------- ------------------- ------------------------------
X                TABLE               SOMEUSER1
Y                TABLE               SOMEUSER2


SQL>exit 
--##################################
C:\>exp.exe system/xxxx@xe owner=someuser1 file= c:\someuser1.dmp

Export: Release 10.2.0.1.0 - Production on Wed Nov 12 14:21:55 2008

Copyright (c) 1982, 2005, Oracle.  All rights reserved.


Connected to: Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production
Export done in CL8MSWIN1251 character set and AL16UTF16 NCHAR character set
server uses AL32UTF8 character set (possible charset conversion)

About to export specified users ...
. exporting pre-schema procedural objects and actions
. exporting foreign function library names for user SOMEUSER1
. exporting PUBLIC type synonyms
. exporting private type synonyms
. exporting object type definitions for user SOMEUSER1
About to export SOMEUSER1 s objects ...
. exporting database links
. exporting sequence numbers
. exporting cluster definitions
. about to export SOMEUSER1 s tables via Conventional Path ...
. . exporting table                              X         50 rows exported
......
Export terminated successfully without warnings.

C:\>imp.exe system/xxxxx@xe fromuser=someuser1 touser=someuser2 file= c:\someuser1.dmp destroy=Y

Import: Release 10.2.0.1.0 - Production on Wed Nov 12 14:24:15 2008

Copyright (c) 1982, 2005, Oracle.  All rights reserved.


Connected to: Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production

Export file created by EXPORT:V10.02.01 via conventional path
import done in CL8MSWIN1251 character set and AL16UTF16 NCHAR character set
import server uses AL32UTF8 character set (possible charset conversion)
. importing SOMEUSER1 s objects into SOMEUSER2
. . importing table                            "X"         50 rows imported
Import terminated successfully without warnings.
--##################################

SQL> select segment_NAME, segment_TYPE, OWNER, TABLESPACE_NAME from dba_segments where owner like 'SOM%';

SEGMENT_NAME         SEGMENT_TYPE       OWNER                          TABLESPACE_NAME
-------------------- ------------------ ------------------------------ ------------------------------
X                    TABLE              SOMEUSER1                      SOME_1
Y                    TABLE              SOMEUSER2                      SOME_2
X                    TABLE              SOMEUSER2                      SOME_2

повторный импорт
C:\>imp.exe system/xxxxx@xe fromuser=someuser1 touser=someuser2 file= c:\someuser1.dmp destroy=Y
Export file created by EXPORT:V10.02.01 via conventional path
import done in CL8MSWIN1251 character set and AL16UTF16 NCHAR character set
import server uses AL32UTF8 character set (possible charset conversion)
. importing SOMEUSER1's objects into SOMEUSER2
IMP-00015: following statement failed because the object already exists:
 "CREATE TABLE "X" ("X" NUMBER)  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 25"
 "5 STORAGE(INITIAL 65536 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) "
 "                    LOGGING NOCOMPRESS"
Import terminated successfully with warnings.

C:\>
из чего следует, что данная опция имеет смысл только при полном exp/imp так как тогда в дампе сохраняется инфа, позволяющая создавать ТП (и реюзать датафайлы в данных ТП)