关于:imp导入时 并没导入到用户指定的默认表空间解释和测试

 
关于:imp时并没没导入到用户指定的默认表空间解释和测试
解释:exp的不仅仅是自己建表时候的create table 语句,还有其他的比如指定表空间等等其他的一些参数。可以通过imp时候只查看导入语句 变一了了之
如果没有相应的表空间就会导入到默认表空间,如果有源数据库导出表的表空间则直接导入默认的原来数据库的表空间,并不是当前数据库对用户默认的表空间
测试:

用户叫做T/T

1、库中没有niptest表空间,默认表空间usersimp情况

2、库中有niptest表空间,默认表空间users imp情况  

3、库中有niptest空间,回收unlimited tablespace 给予(回收)额外权限 的imp情况

4、库中没有niptest表空间,额外权限和用户默认表空间不是一个表空间的imp情况

①测试

SQL> select file_name,tablespace_name from dba_data_files;

FILE_NAME                                                   TABLESPACE_NAME

--------------------------------------------------------------------------------

E:\APP\ADMINISTRATOR\ORADATA\ORACLE11G\USERS01.DBF                   USERS

E:\APP\ADMINISTRATOR\ORADATA\ORACLE11G\UNDOTBS01.DBF                    UNDOTBS1

E:\APP\ADMINISTRATOR\ORADATA\ORACLE11G\SYSAUX01.DBF                SYSAUX

E:\APP\ADMINISTRATOR\ORADATA\ORACLE11G\SYSTEM01.DBF                SYSTEM

E:\APP\ADMINISTRATOR\ORADATA\ORACLE11G\TEST1.DBF                TEST1

SQL>

 

create user t identified by t;

grant dba to t;

SQL> select username,default_tablespace from dba_users where username='T';

 

USERNAME                       DEFAULT_TABLESPACE

------------------------------ ------------------------------

T                              USERS

 

SQL>

E:\app\Administrator\product\11.2.0\dbhome_1\BIN>imp t/t file='D:\DB_BAKE\aaaaaa.dmp' full=y

Import: Release 11.2.0.1.0 - Production on 星期四 5 2 20:26:51 2013

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

 

连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

经由直接路径由 EXPORT:V10.02.01 创建的导出文件

 

警告: 这些对象由 NIP 导出, 而不是当前用户

 

已经完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的导入

. 正在将 NIP 的对象导入到 T

. 正在将 NIP 的对象导入到 T

. . 正在导入表                 "PB_BASIC_CODE"导入了         458 

成功终止导入, 但出现警告。

 

SQL> select table_name,tablespace_name from user_tables;

 

TABLE_NAME                     TABLESPACE_NAME

------------------------------ ------------------------------

PB_BASIC_CODE                  USERS

 

SQL>

 

②测试

SQL> create tablespace niptest datafilE 'E:\APP\ADMINISTRATOR\ORADATA\ORACLE11G\niptest001.DBF'size 100M;

 

表空间已创建。

 

SQL> select file_name,tablespace_name from dba_data_files;

FILE_NAME                                                   TABLESPACE_NAME

--------------------------------------------------------------------------------

E:\APP\ADMINISTRATOR\ORADATA\ORACLE11G\USERS01.DBF                   USERS

E:\APP\ADMINISTRATOR\ORADATA\ORACLE11G\UNDOTBS01.DBF                    UNDOTBS1

E:\APP\ADMINISTRATOR\ORADATA\ORACLE11G\SYSAUX01.DBF                SYSAUX

E:\APP\ADMINISTRATOR\ORADATA\ORACLE11G\SYSTEM01.DBF                SYSTEM

E:\APP\ADMINISTRATOR\ORADATA\ORACLE11G\NIPTEST001.DBF                     NIPTEST

E:\APP\ADMINISTRATOR\ORADATA\ORACLE11G\TEST1.DBF                TEST1

SQL>

 

SQL> drop table PB_BASIC_CODE purge;

 

表已删除。

 

SQL>

E:\app\Administrator\product\11.2.0\dbhome_1\BIN>imp t/t file='D:\DB_BAKE\aaaaaa.dmp' full=y

-------&gt   successful

 

SQL> select table_name,tablespace_name from user_tables;

 

TABLE_NAME                     TABLESPACE_NAME

------------------------------ ------------------------------

PB_BASIC_CODE                  NIPTEST

 

SQL>

查看下exp表的表空间

E:\app\Administrator\product\11.2.0\dbhome_1\BIN>imp t/t

Import: Release 11.2.0.1.0 - Production on 星期四 5 2 20:30:04 2013

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

 

连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

 

仅导入数据(yes/no): no >

 

导入文件: EXPDAT.DMP> D:\DB_BAKE\aaaaaa.dmp

 

输入插入缓冲区大小 (最小为 8192) 30720>

 

经由直接路径由EXPORT:V10.02.01 创建的导出文件

 

警告: 这些对象由 NIP 导出, 而不是当前用户

 

已经完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的导入

只列出导入文件的内容(yes/no): no > yes

 

导入整个导出文件(yes/no): no > yes

. 正在将 NIP 的对象导入到 T

 "CREATE TABLE "PB_BASIC_CODE" ("BASIC_ID" NUMBER(10, 0) NOT NULL ENABLE, "BC"

 "DLS_CD_NO" VARCHAR2(6), "BASIC_CD_ID" VARCHAR2(10) NOT NULL ENABLE, "BASIC_"

 "CD_DES" VARCHAR2(60), "BASIC_CD_STATE" VARCHAR2(1) NOT NULL ENABLE, "BASIC_"

 "PRG" VARCHAR2(10))  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 STORAGE(I"

 "NITIAL 65536 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "

 ""NIPTEST" LOGGING NOCOMPRESS"

 " ALTER TABLE "PB_BASIC_CODE" MODIFY ("BASIC_CD_STATE" DEFAULT '0'  )"

. . 正在跳过表 "PB_BASIC_CODE"

。。。。。。。。。。。。

成功终止导入, 没有出现警告。

 

E:\app\Administrator\product\11.2.0\dbhome_1\BIN>

 

 

③测试:

SQL> revoke UNLIMITED TABLESPACE from T;

 

撤销成功。

 

SQL>  alter user T quota unlimited on users;(就算指定了users表空间限制,由于库中有niptest表空间。不给权限没法写入 也不会导入到其他表空间中)

 

用户已更改。

 

SQL> alter user T quota unlimited on niptest;

 

用户已更改。

 

SQL> select table_name,tablespace_name from user_tables;

 

TABLE_NAME                     TABLESPACE_NAME

------------------------------ ------------------------------

PB_BASIC_CODE                  NIPTEST

 

SQL>

SQL> alter user T  quota 0 on NIPTEST;(回收权限再次测试  库中有niptest 没有权限无法访问)

 

用户已更改。

 

SQL> drop table PB_BASIC_CODE purge;

 

表已删除。

 

E:\app\Administrator\product\11.2.0\dbhome_1\BIN>imp t/t file='D:\DB_BAKE\aaaaaa.dmp' full=y

 

Import: Release 11.2.0.1.0 - Production on 星期四 5 2 20:52:40 2013

 

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

 

 

连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

 

经由直接路径由EXPORT:V10.02.01 创建的导出文件

 

警告: 这些对象由 NIP 导出, 而不是当前用户

 

已经完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的导入

. 正在将 NIP 的对象导入到 T

. 正在将 NIP 的对象导入到 T

. . 正在导入表                 "PB_BASIC_CODE"

IMP-00058: 遇到 ORACLE 错误 1536

ORA-01536: 超出表空间 'NIPTEST' 的空间限额

IMP-00017: 由于 ORACLE 错误 942, 以下语句失败:

 "ALTER TABLE "PB_BASIC_CODE" ADD CONSTRAINT "FK_PB_BASIC_FK_BS_CD__PB_BASIC""

 " FOREIGN KEY ("BCDLS_CD_NO") REFERENCES "PB_BASIC_CODE_LIST" ("BCDLS_CD_NO""

 ") ENABLE NOVALIDATE"

IMP-00003: 遇到 ORACLE 错误 942

ORA-00942: 表或视图不存在

即将启用约束条件...

IMP-00017: 由于 ORACLE 错误 2430, 以下语句失败:

 "ALTER TABLE "PB_BASIC_CODE" ENABLE CONSTRAINT "FK_PB_BASIC_FK_BS_CD__PB_BAS"

 "IC""

成功终止导入, 但出现警告。

 

-------------------------------------------

exp表的源表空间删除,指定默认表空间

SQL>  drop tablespace niptest including contents and datafiles;

 

表空间已删除。

 

SQL>

 

SQL> select file_name,tablespace_name from dba_data_files;

FILE_NAME                                                   TABLESPACE_NAME

--------------------------------------------------------------------------------

E:\APP\ADMINISTRATOR\ORADATA\ORACLE11G\USERS01.DBF                   USERS

E:\APP\ADMINISTRATOR\ORADATA\ORACLE11G\UNDOTBS01.DBF                    UNDOTBS1

E:\APP\ADMINISTRATOR\ORADATA\ORACLE11G\SYSAUX01.DBF                SYSAUX

E:\APP\ADMINISTRATOR\ORADATA\ORACLE11G\SYSTEM01.DBF                SYSTEM

E:\APP\ADMINISTRATOR\ORADATA\ORACLE11G\TEST1.DBF                TEST1

SQL>

再回收 UNLIMITED TABLESPACE 默认表空间和quota都指定的也是users时候导入表  表空间是’默认表空间‘和’quota(额外权限)‘指定的表空间

如果默认表空间和quota(额外权限)的表空间不是指定的一个,则导入的只是表结构 将导入到默认表空间指定的表空间中

E:\app\Administrator\product\11.2.0\dbhome_1\BIN>imp t/t file='D:\DB_BAKE\aaaaaa.dmp' full=y

-------&gt   successful

 

④测试:

SQL> select table_name,tablespace_name from user_tables;

 

TABLE_NAME                     TABLESPACE_NAME

------------------------------ ------------------------------

PB_BASIC_CODE                  USERS

 

 

SQL> select * from user_role_privs;

 

USERNAME                       GRANTED_ROLE                   ADM DEF OS_

------------------------------ ------------------------------ --- --- ---

T                              DBA                            YES YES NO

 

SQL> select username,default_tablespace from dba_users where username='T';

 

USERNAME                       DEFAULT_TABLESPACE

------------------------------ ------------------------------

T                              TEST1

 

SQL> SELECT tablespace_name FROM user_TS_QUOTAS;

 

TABLESPACE_NAME

------------------------------

USERS

E:\app\Administrator\product\11.2.0\dbhome_1\BIN>imp t/t file='D:\DB_BAKE\aaaaaa.dmp' full=y

-------&gt  fail

IMP-00058: 遇到 ORACLE 错误 1950

ORA-01950: 对表空间 'TEST1' 无权限

IMP-00017: 由于 ORACLE 错误 942, 以下语句失败:

 

SQL> select table_name,tablespace_name from user_tables;

 

TABLE_NAME                     TABLESPACE_NAME

------------------------------ ------------------------------

PB_BASIC_CODE                  TEST1    ----&gt  只有表结构

 

SQL> 



  结论:

如用户默认表空间是USERSexp源默认表空间是niptest ,库中没有niptest的话会导入到users表空间,有niptest表空间的话则会导入到niptest表空间

回收unlimited tablespace 给予额外权限niptest表空间权限会正常导入,否则报错

额外权限和用户默认表空间是一个的话可以正常导入,否则知道表结构到用户默认表空间



来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28602568/viewspace-760169/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/28602568/viewspace-760169/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值