`

Oracle用imp导入 用户表时选择表空间的问题

阅读更多
引用
【imp导入 用户表时选择表空间的问题】

     在一个数据库里把一个用户A的在表空间AA上的表用exp导出到exp.dmp文件中,再把它导入到另一台机器上的数据库里,这时她用的是用户B,默认表空间是BB,但是用imp导入时我们发现表是导入到了B用户下,但是还是存在了AA表空间里面,但是她需要导入到BB里

SQL> create user myhuang identified by myhuang default tablespace myhuang;//先创建一个用户
SQL> grant resource,connect to myhuang;
SQL> grant dba to myhuang;//赋DBA权限
SQL> revoke unlimited tablespace from myhuang;//撤销此权限
SQL> alter user myhuang quota 0 on system;//将用户在System表空间的配额置为0

SQL> alter user myhuang quota unlimited on myhuang;//设置在用户在myhuang表空间配额不受限。

经过上述设置后,就可以用imp导入数据,数据将会进入指定的myhuang表空间:

C:\Documents and Settings\myhuang>imp system/123456@vdb fromuser=lnxh touser=myhuang file=G:\myhuang\lnxh.dmp ignore=y grants=n

顺便说两个小问题:
(1)IMP-00003: 遇到 ORACLE 错误 1658
ORA-01658: 无法为表空间 MYHUANG 中的段创建 INITIAL 区
通常这个问题可以通过Resize增加表空间数据文件大小来解决。
(2)删除表空间
SQL> drop tablespace myhuang including contents and datafiles;


引用
【如何移动一个带有lob字段的表到另外一个表空间】

     大家都知道在我们建立含有lob字段的表时,oracle会自动为lob字段建立两个单独的segment,一个用来存放数据,另一个用来存放索引,并且它们都会存储在对应表指定的表空间中。但是当我们用alter table tb_name move tablespace tbs_name;来对表做空间迁移时只能移动非lob字段以外的数据,而如果我们要同时移动lob相关字段的数据,我们就必需用如下的含有特殊参数据的文句来完成,它就是: 
alter table tb_name move tablespace tbs_name lob (col_lob1,col_lob2) store as(tablesapce tbs_name); 

SQL> alter table test_blob move tablespace SYSTEM;
Table altered

SQL> ALTER TABLE test_blob MOVE
  2  TABLESPACE tools
  3  LOB (FILE_BIN,FILE_BIN2) STORE AS
  4  (TABLESPACE tools);
Table altered

SQL> select t.segment_name, t.segment_type, t.tablespace_name
  2  from sys.user_segments t
  3  where t.segment_name like 'SYS_%';
SEGMENT_NAME                  SEGMENT_TYPE       TABLESPACE_NAME

SYS_IL0000025842C00003$$      LOBINDEX           TOOLS
SYS_IL0000025842C00002$$      LOBINDEX           TOOLS
SYS_LOB0000025842C00002$$     LOBSEGMENT         TOOLS
SYS_LOB0000025842C00003$$     LOBSEGMENT         TOOLS

6 rows selected


引用
【导入含有blob字段的表到不同的表空间的问题】

      官方文档说到了,不针对含有blob字段等的表,如果导入,会报“ORA-00959: 表空间'EXAMPLE'不存在”的错误。那么,下面主要介绍如何导入含有blob字段的表到不同的表空间的一种方法(针对oracle 9i,10g可以用impdp来解决,其中有个参数remap_tablespace=as:bs)
步骤:
1、获取含有blob字段表的DDL:
   可以使用oracle pl/sql包获取,也可以使用第三方工具toad、pl/sql developer
SQL> set long 4000
SQL> set pagesize 0
SQL> select dbms_metadata.get_ddl('TABLE','T_RES_PATIENT') from dual; 
1、获取含有blob字段表的DDL:可以使用oracle pl/sql包获取,也可以使用第三方工具toad、pl/sql developer。

------------------------------------------------------------------------------
SQL> set long 4000
SQL> set pagesize 0
SQL> select dbms_metadata.get_ddl('TABLE','T_RES_PATIENT') from dual; 

  CREATE TABLE "WHU"."T_RES_PATIENT"(    
"ONECARD_NO" VARCHAR2(20) NOT NULL ENABLE,
"IDENTITYCARD_NO" VARCHAR2(30),
"ADDRESS" VARCHAR2(100),
"WORKPLACE" VARCHAR2(100),
"PATIENT_NAME" VARCHAR2(64) NOT NULL ENABLE,
"BIRTHDAY" VARCHAR2(10),
"CASTE" VARCHAR2(10),
"GENDER" VARCHAR2(4),
"NOTE" VARCHAR2(128),
"PHOTO" BLOB,
"MARRY" VARCHAR2(10),
"BADDRESS" VARCHAR2(128),
"NATION" VARCHAR2(20),
"COUNTRY" VARCHAR2(20),
"RNAME" VARCHAR2(20),
"RELATION" VARCHAR2(20),
"PADDRESS" VARCHAR2(128),
"HADDRESS" VARCHAR2(128),
"TYPE" VARCHAR2(10) NOT NULL ENABLE,
"TEL" VARCHAR2(20),
"ZYTYPE" VARCHAR2(10),
"CASE_NO" VARCHAR2(20) NOT NULL ENABLE,
"CARD_ID" VARCHAR2(3),
"GENDER_NO" VARCHAR2(1),
"TITLE_NAME" VARCHAR2(16),
"COL_NAME" VARCHAR2(32),
CONSTRAINT "PK_RES_PATIENT" PRIMARY KEY ("CASE_NO")
USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
TABLESPACE "WHU"  ENABLE
) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
TABLESPACE "WHU"
LOB ("PHOTO") STORE AS (
TABLESPACE "WHU" ENABLE STORAGE IN ROW CHUNK 8192 PCTVERSION 10
NOCACHE
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT))
------------------------------------------------------------------------------ 

2、修改获取的DDL中表空间名称为新的表空间名称,实例中,修改原有表空间“WHU”为“WOLF”,然后在要导入数据的数据库中创建表。

------------------------------------------------------------------------------
SQL> CREATE TABLE "T_RES_PATIENT"
2     (    "ONECARD_NO" VARCHAR2(20) NOT NULL ENABLE,
3          "IDENTITYCARD_NO" VARCHAR2(30),
4          "ADDRESS" VARCHAR2(100),
5          "WORKPLACE" VARCHAR2(100),
6          "PATIENT_NAME" VARCHAR2(64) NOT NULL ENABLE,
7          "BIRTHDAY" VARCHAR2(10),
8          "CASTE" VARCHAR2(10),
9          "GENDER" VARCHAR2(4),
10          "NOTE" VARCHAR2(128),
11          "PHOTO" BLOB,
12          "MARRY" VARCHAR2(10),
13          "BADDRESS" VARCHAR2(128),
14          "NATION" VARCHAR2(20),
15          "COUNTRY" VARCHAR2(20),
16          "RNAME" VARCHAR2(20),
17          "RELATION" VARCHAR2(20),
18          "PADDRESS" VARCHAR2(128),
19          "HADDRESS" VARCHAR2(128),
20          "TYPE" VARCHAR2(10) NOT NULL ENABLE,
21          "TEL" VARCHAR2(20),
22          "ZYTYPE" VARCHAR2(10),
23          "CASE_NO" VARCHAR2(20) NOT NULL ENABLE,
24          "CARD_ID" VARCHAR2(3),
25          "GENDER_NO" VARCHAR2(1),
26          "TITLE_NAME" VARCHAR2(16),
27          "COL_NAME" VARCHAR2(32),
28           CONSTRAINT "PK_RES_PATIENT" PRIMARY KEY ("CASE_NO")
29    USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255
30    STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
31    PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
32    TABLESPACE "WOLF"  ENABLE
33     ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
34    STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
35    PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
36    TABLESPACE "WOLF"
37   LOB ("PHOTO") STORE AS (
38    TABLESPACE "WOLF" ENABLE STORAGE IN ROW CHUNK 8192 PCTVERSION 10
39    NOCACHE
40    STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
41    PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)); 

表已创建。 

SQL> desc t_res_patient;
名称                                      是否为空? 类型
----------------------------------------- -------- ---------------------------- 

ONECARD_NO                                NOT NULL VARCHAR2(20)
IDENTITYCARD_NO                                    VARCHAR2(30)
ADDRESS                                            VARCHAR2(100)
WORKPLACE                                          VARCHAR2(100)
PATIENT_NAME                              NOT NULL VARCHAR2(64)
BIRTHDAY                                           VARCHAR2(10)
CASTE                                              VARCHAR2(10)
GENDER                                             VARCHAR2(4)
NOTE                                               VARCHAR2(128)
PHOTO                                              BLOB
MARRY                                              VARCHAR2(10)
BADDRESS                                           VARCHAR2(128)
NATION                                             VARCHAR2(20)
COUNTRY                                            VARCHAR2(20)
RNAME                                              VARCHAR2(20)
RELATION                                           VARCHAR2(20)
PADDRESS                                           VARCHAR2(128)
HADDRESS                                           VARCHAR2(128)
TYPE                                      NOT NULL VARCHAR2(10)
TEL                                                VARCHAR2(20)
ZYTYPE                                             VARCHAR2(10)
CASE_NO                                   NOT NULL VARCHAR2(20)
CARD_ID                                            VARCHAR2(3)
GENDER_NO                                          VARCHAR2(1)
TITLE_NAME                                         VARCHAR2(16)
COL_NAME                                           VARCHAR2(32)
------------------------------------------------------------------------------ 

3、从原有数据库中导出这张表数据

------------------------------------------------------------------------------
E:\dbTest>exp xxxx/xxxx@xxxx tables=(t_res_patient) file=e:\dbTest\expPatient.dmp log=e:\dbTest\expPatinet.log 

Export: Release 9.2.0.1.0 - Production on 星期四 8月 13 12:08:04 2009 

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved. 

连接到: Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production
已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集 

即将导出指定的表通过常规路径 ...
. . 正在导出表                   T_RES_PATIENT      63443 行被导出
在没有警告的情况下成功终止导出。
------------------------------------------------------------------------------ 

4、导入数据:使用ignore=Y参数导入。

------------------------------------------------------------------------------
E:\dbTest>imp ****/**** tables=(t_res_patient) ignore=Y file=e:\dbTest\expPatient.dmp log=e:\dbTest\impPatient.log 

Import: Release 9.2.0.1.0 - Production on 星期四 8月 13 12:16:39 2009 

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved. 

连接到: Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production 

经由常规路径导出由EXPORT:V09.02.00创建的文件 

警告: 此对象由 ****导出, 而不是当前用户 

已经完成ZHS16GBK字符集和AL16UTF16 NCHAR 字符集中的导入
. 正在将****的对象导入到 ****
. . 正在导入表                 "T_RES_PATIENT"      63443行被导入
成功终止导入,但出现警告。
------------------------------------------------------------------------------

查询导入数据记录:

------------------------------------------------------------------------------
SQL> select count(*) from t_res_patient; 

  COUNT(*)
----------
63443
------------------------------------------------------------------------------ 

由此可见导入成功。


http://cache.baidu.com/c?m=9f65cb4a8c8507ed4fece7631046893b4c4380146d96864968d4e414c42246071d35bcfa6c714c519280613652e91e09b7b07d6f310923b690ca9f4aaae8d36a659c6269304a895662d40edfba5154cb37e72afeae69f0ca8325e0dfc5a5de4325c844040ad0aed60a1715ba7886112695a28e38114861cdfa3115e829703eee2557b737ee90317970f7e1dc2c5bb32dc7116780ae45a74e12a263d4081a5453d13aa67b203131905857f8534c0285ea2df05a7a5754c05fb2c9d6c69f5ffadbfd41e9edbca9&p=893d890d85cc47fa10bd9b7f0f00&user=baidu
分享到:
评论
2 楼 sd6815892 2012-03-17  
太感谢了,帮我解决了个问题
1 楼 javalcj 2011-10-31  
你好,想请教一下关于imp往其他表空间导数据的问题,我用了你的方法但是报错,能方便留个联系方式吗,QQ什么的,你加我也可以41465181,谢谢

相关推荐

    Oracle中如何使用imp语句导入不同表空间?

    在实际工作中,有时需要将exp导出的历史备份dmp文件进行恢复,若之前的建表语句及表空间名无法找到,则直接用imp语句进行导入的话可能...使用本文方法可将exp导出的数据用imp导入不同的表空间,从而有效解决此问题。

    oracle 删除表后imp导入数据的脚本

    一般的做法是直接删除表空间然后imp导入数据,但是我这边的情况是远程有一个web始终连着,为了免得每天还要去启动那个web服务,我就采用了这个做法,只删除表,这样不会断开连接,注意,这个web只是白天在用。...

    ORACLE导入数据文件到指定的表空间

    NULL 博文链接:https://duqiangcise.iteye.com/blog/734041

    从一个表空间 另一个表空间

    我以前一直使用users表空间作为默认空间,最近想把现有用户的数据都转到一 个新建的表空间中,可是发现Imp后所有表还是在users表空间里面,查阅了一些 资料,说是Oracle自己没有提供分配表空间的功能,Exp的时候把表的...

    oracle用imp导入dmp文件的方法

    oracle命令行登录 sqlplus 用户名/密码 创建用户 ... 创建表空间 create tablespace 表空间名 datafile 'D:\oracle11\oradata\库名\XXX.pdf' size 200M autoextend on next 50m maxsize 1000m ; 用户授权 ...imp导入d

    Oracle数据库逻辑增量备份之exp/imp

    Oracle数据库逻辑增量备份之exp/imp 1 一、实现需求 1 二、逻辑备份恢复工具exp/imp 2 1、逻辑备份原理 2 2、exp语法和参数 2 3、imp语法和参数 3 三、exp逻辑备份 4 1、exp表模式备份 4 2、exp用户模式备份 5 3、...

    浅谈入门级oracle数据库数据导入导出步骤

    2.如果熟悉命令,建议用exp/imp命令导入导出,避免第三方工具版本差异引起的问题,同时效率更高,但特别注意:采用命令时要注意所使用的用户及其权限等细节。 3.在目标数据库导入时需要创建与导出时相同的用户名...

    oracle exp imp详解

    导入/导出是ORACLE幸存的最古老的两个命令行工具,其实我从来不认为Exp/Imp是一种好的备份方式,正确的说法是Exp/Imp只能是一个好的转储工具,特别是在小型数据库的转储,表空间的迁移,表的抽取,检测逻辑和物理...

    oracle重建表空间及导入导出数据

    根据语句自动生成Oracle表空间的创建脚本语句。实现傻瓜化的操作

    oracle导入导出命令byxiao

    用imp和exp命令导入导出oracle数据库。从创建表空间,到创建用户,授权,导入等等命令都写了例子。 只要照着命令来一般都能够实现导入导出的功能。

    oracle导入数据库方法

    -- remap_tablespace=JIAOWU:USERS 数据库对象本来存在于JIAOWU表空间,现在你不想放那儿了,想换到USERS,就用这个remap_tablespace=JIAOWU:USERS 结果是所有JIAOWU中的对象都会建在USERS表空间中。 这样做的前提是...

    ORACLE EXPIMP的使用详解

    主要讲述exp,imp常用选项,表空间传输,导入导出字符集,导入导出常见问题

    ORACLE 常用手册导入导出

    TABLESPACES 按表空间方式导入,列出要导入的表空间名 --导入 --整个文件导入 imp accp/accp@accp file=d:\item_back.dmp ignore=y full=y --特定用户的表导入到指定的用户下面 imp system/aptech@accp file=d:\...

    EXP IMP详解

    导入/导出是ORACLE幸存的最古老的两个命令行工具,其实我从来不认为Exp/Imp是一种好的备份方式,正确的说法是Exp/Imp只能是一个好的转储工具,特别是在小型数据库的转储,表空间的迁移,表的抽取,检测逻辑和物理...

    Oracle 数据泵详解

    在10g之前,传统的导出和导入分别使用EXP工具和IMP工具,从10g开始,不仅保留了原有的EXP和IMP工具,还提供了数据泵导出导入工具EXPDP和IMPDP.使用EXPDP和IMPDP时应该注意的事项: 1)EXP和IMP是客户端工具程序,它们既...

    Oracle数据库经典学习教程

    走进Oracle 2 1. Oracle简介 3 2. Oracle安装 4 3. Oracle客户端工具 9 4. Oracle服务 16 5. Oracle启动和关闭 17 6. Oracle用户和权限 18 7. 本章总结 21 8. 本章练习 22 ...3. IMP导入 128 4. 常见问题 128

    Oracle点滴积累

    expimp导出导入工具的使用.doc,Oracle 单记录函数.doc,Oracle 的内存管理.ppt,Oracle9I计划管理表空间.pdf,Oracle备份与恢复.doc,Oracle返回树关系列表Sql.doc,Oracle里时间的应用.doc,Oracle体系结构概述....

    Oracle 11g 数据库常用操作

    1. 创建表空间 2. 创建用户并赋予权限 3. Exp 导出用户对象 4. IMP 导入用户对象

    oracle_exp_imp详解

    导入/导出是ORACLE幸存的最古老的两个命令行工具,其实我从来不认为Exp/Imp是一种好的备份方式,正确的说法是Exp/Imp只能是一个好的转储工具,特别是在小型数据库的转储,表空间的迁移,表的抽取,检测逻辑和物理...

Global site tag (gtag.js) - Google Analytics