`

不同表空间的导入

阅读更多

很多人在进行数据迁移时,希望把数据导入不同于原系统的表空间,在导入之后却往往发现,数据被导入了原表空间。

 

很多人在进行数据迁移时,希望把数据导入不同于原系统的表空间,在导入之后却往往发现,数据被导入了原表空间。
本例举例说明解决这个问题:
1.如果缺省的用户具有DBA权限
那么导入时会按照原来的位置导入数据,即导入到原表空间

$imp bjbbs/passwd file=bj_bbs.dmp fromuser=jive touser=bjbbs grants=n

Import: Release 8.1.7.4.0 - Production on Mon Sep 22 11:49:41 2003

(c) Copyright 2000 Oracle Corporation. All rights reserved.


Connected to: Oracle8i Enterprise Edition Release 8.1.7.4.0 - 64bit Production
With the Partitioning option
JServer Release 8.1.7.4.0 - 64bit Production

Export file created by EXPORT:V08.01.07 via conventional path

Warning: the objects were exported by JIVE, not by you

import done in ZHS16GBK character set and ZHS16GBK NCHAR character set
. . importing table "HS_ALBUMINBOX" 12 rows imported
. . importing table "HS_ALBUM_INFO" 47 rows imported
. . importing table "HS_CATALOG" 13 rows imported
. . importing table "HS_CATALOGAUTHORITY" 5 rows imported
. . importing table "HS_CATEGORYAUTHORITY" 0 rows imported
....
. . importing table "JIVEUSERPROP" 4 rows imported
. . importing table "JIVEWATCH" 0 rows imported
. . importing table "PLAN_TABLE" 0 rows imported
. . importing table "TMZOLDUSER" 3 rows imported
. . importing table "TMZOLDUSER2" 3 rows imported
About to enable constraints...
Import terminated successfully without warnings.


查询发现仍然导入了USER表空间

$sqlplus bjbbs/passwd

SQL*Plus: Release 8.1.7.0.0 - Production on Mon Sep 22 11:50:03 2003

(c) Copyright 2000 Oracle Corporation. All rights reserved.


Connected to:
Oracle8i Enterprise Edition Release 8.1.7.4.0 - 64bit Production
With the Partitioning option
JServer Release 8.1.7.4.0 - 64bit Production

SQL> select table_name,tablespace_name from user_tables;

TABLE_NAME TABLESPACE_NAME
------------------------------ ------------------------------
HS_ALBUMINBOX USERS
HS_ALBUM_INFO USERS
HS_CATALOG USERS
HS_CATALOGAUTHORITY USERS
HS_CATEGORYAUTHORITY USERS
HS_CATEGORYINFO USERS
HS_DLF_DOWNLOG USERS
...
JIVEWATCH USERS
PLAN_TABLE USERS
TMZOLDUSER USERS

TABLE_NAME TABLESPACE_NAME
------------------------------ ------------------------------
TMZOLDUSER2 USERS

45 rows selected.

2.回收用户unlimited tablespace权限
这样就可以导入到用户缺省表空间
SQL> create user bjbbs identified by passwd
2 default tablespace bjbbs
3 temporary tablespace temp
4 /

User created.


SQL> grant connect,resource to bjbbs;

Grant succeeded.

SQL> grant dba to bjbbs;

Grant succeeded.
如果用户已经具有sysdba角色的话就只需要执行以下3步就可以啦!
SQL> revoke unlimited tablespace from bjbbs;

Revoke succeeded.

SQL> alter user bjbbs quota 0 on users;

User altered.

SQL> alter user bjbbs quota unlimited on bjbbs;

User altered.

SQL> exit
Disconnected from Oracle8i Enterprise Edition Release 8.1.7.4.0 - 64bit Production
With the Partitioning option
JServer Release 8.1.7.4.0 - 64bit Production


3.重新导入数据
$ imp bjbbs/passwd file=bj_bbs.dmp fromuser=jive touser=bjbbs grants=n

Import: Release 8.1.7.4.0 - Production on Mon Sep 22 12:00:51 2003

(c) Copyright 2000 Oracle Corporation. All rights reserved.


Connected to: Oracle8i Enterprise Edition Release 8.1.7.4.0 - 64bit Production
With the Partitioning option
JServer Release 8.1.7.4.0 - 64bit Production

Export file created by EXPORT:V08.01.07 via conventional path

Warning: the objects were exported by JIVE, not by you

import done in ZHS16GBK character set and ZHS16GBK NCHAR character set
. . importing table "HS_ALBUMINBOX" 12 rows imported
. . importing table "HS_ALBUM_INFO" 47 rows imported
. . importing table "HS_CATALOG" 13 rows imported
. . importing table "HS_CATALOGAUTHORITY" 5 rows imported
. . importing table "HS_CATEGORYAUTHORITY" 0 rows imported
. . importing table "HS_CATEGORYINFO" 9 rows imported
. . importing table "HS_DLF_DOWNLOG" 0 rows imported
....
. . importing table "JIVEUSER" 102 rows imported
. . importing table "JIVEUSERPERM" 81 rows imported
. . importing table "JIVEUSERPROP" 4 rows imported
. . importing table "JIVEWATCH" 0 rows imported
. . importing table "PLAN_TABLE" 0 rows imported
. . importing table "TMZOLDUSER" 3 rows imported
. . importing table "TMZOLDUSER2" 3 rows imported
About to enable constraints...
Import terminated successfully without warnings.

SQL> select table_name,tablespace_name from user_tables;

TABLE_NAME TABLESPACE_NAME
------------------------------ ------------------------------
HS_ALBUMINBOX BJBBS
HS_ALBUM_INFO BJBBS
HS_CATALOG BJBBS
HS_CATALOGAUTHORITY BJBBS
....
JIVETHREAD BJBBS
JIVETHREADPROP BJBBS
JIVEUSER BJBBS
JIVEUSERPERM BJBBS
JIVEUSERPROP BJBBS
JIVEWATCH BJBBS
PLAN_TABLE BJBBS
TMZOLDUSER BJBBS

TABLE_NAME TABLESPACE_NAME
------------------------------ ------------------------------
TMZOLDUSER2 BJBBS

45 rows selected.
现在数据被导入到正确的用户表空间中. -----

如何已经导入完毕采用下面方式来更换表空间,同时上面的方法也存在一定对表空间规划的问题

另外如果你已经在没有运行以上命令时就已将数据给导入后还可通过alter方式来对表以及索引进行表空间规划.

1:先通过:SELECT 'ALTER INDEX '||INDEX_NAME||' REBUILD TABLESPACE tablespace_name;' FROM USER_INDEXES;语句来得到一个SQL脚本文件.

2:然后在pl/sql developer工具中执行操作即可.

3:当在执行过程中可能会遇到一些不能重新编译的情况,这时可以将这些暂不能编译的放在最后面执行即可.

更改表的所属表空间:alter table a move tablespace tbsname;补充:移动完毕后需重建索引.alte index idx_name rebuild tablespace tablespace_name;

补:在实际应用中遇到了另一种情况就是当按上面第一种方案进行数据导入以后所有的信息全在一个表空间下,这样对于表空间规划不太合理,为了进一步对表空间的规划,又在第一种方案下采用方案二对表空间进行规划,当执行方案二中得到的SQL语句执行时会报出:ORA-01950 no privileges on tablespace 'workindex'这样错误提示,这只要是由于方案一中的alter命令所造成的,可能通过:alter user workflow quota unlimited on workinedx;语句来使workflow用户在workindex表空间上也具有无限制配额即可.然后再执行方案二中得到的alter的SQL脚本!


以下是我工作过程中所使用的导出导入语句

导入语句
导入采用命令行,有利于产生log文件
imp workflow/workflow@WORKFLOW file = /setup/workflow.dmp fromuser=workflow touser=workflow show=n buffer=2048000 ignore=n commit=y grants=y full=n log=/tmp/imp_workflw.log
imp workflow/workflow@WORKFLOW file=/oracle/installfiles/workflow.dmp fromuser=workflow touser=workflow show=n buffer=2048000 ignore=n commit=y grants=y full=n log=/oracle/installfiles/imp_workflw.log
imp workflow/workflow file=/oracle/installfiles/workflow.dmp fromuser=WF9 touser=workflow show=n buffer=2048000 ignore=n commit=y grants=y full=n log=/oracle/installfiles/imp_workflw.log

导入导出Windows下使用以下为IMP/EXP导入导出命令工具在项目中一些常用的方式如下:

1:导出整个方案库
EXP username/password@database FILE=D:filename.dmp log=D:filename.log

2:导入整个方案库 --当源库中存在表或其它信息内容可加入ROWS=Y IGNORE=Y这两个参数--
IMP username/password@database file=D:filename.dmp log=D:filename.log fromuser=exp_username touser=imp_username;

3:导出方案中部分表信息
EXP username/password@database tables=(table_name1,table_name2,table_name3,...) file=D:filename.dmp log=D:filename.log

4:导入方案中部分表信息 --同上--
IMP username/password@database tables=(table_name1,table_name2,table_name3,...) ROWS=Y IGNORE=Y file=D:filename.dmp log=D:filenameimp.log fromuser=exp_username touser=imp_username

5:导出方案中表带子查询条件的数据--也就是导出某张表中满足条件的记录.(用符号将"和'转义)
EXP username/password@database TABLES=(table_name) QUERY="WHERE column_name IN ('column_value1','column_value2','column_value3',...)" file=D:filename.dmp log=D:filename.log

6:导入方案中表的部分记录增量导入
IMP username/password@database tables=(table_name) ROWS=Y IGNORE=Y file=D:filename.dmp log=D:filename_imp.log fromuser=exp_username touser=imp_username

 

分享到:
评论

相关推荐

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

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

    oracle不同用户名及表空间之间的数据导入

    oracle不同用户名及表空间之间的数据导入

    Oracle dmp文件导出导入(还原)到不同的表空间和不同的用户操作

    Oracle dmp文件导出导入(还原)到不同的表空间和不同的用户操作

    oracle 10G 导出至 11G 不同用户不同表空间

    oracle的不同用户不同表空间导入导出

    oracle导入时表空间不一致解决方法

    能够解决oracle导入时表空间不一致问题。不错,已经帮助我好几次了,共享下!

    基于RMAN+可传输表空间TTS迁移AIX平台数据库到Linux

    可传输表空间的特性主要用于进行库对库的表空间复制,要进行...因为可传输表空间主要是复制数据文件到目标路径,然后再使用export/import或Data Pump export/import等应用仅导出/导入表空间对象的元数据到新数据库。

    ORACLE数据库导入导出详细流程

    对oracle数据库的导入导出进行了详细的说明并有详细的命令、语句说明,适合于oracle初学者了解oralce数据库的导入导出流程。另外还介绍了oracle数据库将dmp文件导入到不同的用户及表空间。

    PHP命名空间namespace定义及导入use用法详解

    1.命名空间,即将代码划分成不同空间,不同空间的类名相互独立,互不冲突。一个php文件中可以存在多个命名空间,第一个命名空间前不能有任何代码。内容空间声明后的代码便属于这个命名空间,例如: <?php echo ...

    ORACLE 常用手册导入导出

    ROWS 指定是否要导入表中的行 PARFILE 指定传递给导入实用程序的参数文件名,此文件可以包含这里列出的所有参数 IGNORE 导入时是否忽略遇到的错误,默认为N TABLESPACES 按表空间方式导入,列出要导入的表空间名 --...

    Oracle中利用expdp/impdp备份数据库的使用说明

    NULL 博文链接:https://zzzwp.iteye.com/blog/2313486

    Excel高级插件(17个插件集合)-批量导入插入图片等-Part1

    3.大小灵活:导入的图片可以随心所欲定义其大小,且所有图片都占用相同的大小空间。但却保持图片导入前的比例,不会变形。 4.名称灵活:可以使用近似匹配。例如有两张名为“诺基亚8310”、“诺基亚7600”的图片,只...

    Excel高级插件(17个插件集合)-批量导入插入图片等-Part2

    3.大小灵活:导入的图片可以随心所欲定义其大小,且所有图片都占用相同的大小空间。但却保持图片导入前的比例,不会变形。 4.名称灵活:可以使用近似匹配。例如有两张名为“诺基亚8310”、“诺基亚7600”的图片,只...

    contentful-import:使用contentful-export提供的数据将其导入内容空间的节点模块

    该库可帮助您将生成的文件导入到目标空间。 :red_exclamation_mark: 用作CLI 我们将此工具的CLI版本移到了。 这使我们的用户仅使用和安装一个CLI工具即可获得完整的Contentful体验。 请查看以了解有关如何将其...

    Oracle日常维护故障定位故障排除

    20由于EXP不向上兼容,语言不兼容,导致不同版本、不同字符集的数据库无法导入 21 由于创建表空间时误将其创建在以‘本地管理’,导致在表空间上的所有对象无法修改其存储参数 22 错误地在系统表空间上建无关的数据...

    Oracle数据库恢复工具Oracle Database Unloader(ODU)3.09

    只能在有SYSTEM表空间时才能导出IOT表 支持多种平台的数据库,包括AIX、LINUX、HPUX、SOLARIS、WINDOWS等。能够在一个平台上导出其他平台的数据,比如在Windows 32位系统上,使用AIX系统上的数据文件导出数据。 ...

    oracle数据库修复

    只能在有SYSTEM表空间时才能导出IOT表 支持压缩表 支持表被truncate后的数据恢复 支持表被drop后的数据恢复 在有SYSTEM表空间的情况下,自动获取数据字典信息 支持在没有SYSTEM表空间和数据字典损坏的情况下...

    oracle详解

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

    利用wsdl.exe生成webservice代理类

    此功能针对不同服务之间共享 的相同类型(命名空间、名称和网络签名必须相同) 创建一个具有单一类型定义的代码文件。 请使用 http:// URLs 作为命令行参数来引用 服务,或为本地文件创建一个 discomap 文档。 /...

    python基础教程:包的创建及导入.pdf

    python基础教程:包的创建及导⼊ 基础教程:包的创建及导⼊ 包是⼀种通过⽤"带点号的模块名"来构造 命名空间的⽅法。 例如,模块名 A.B 表⽰ A 包中名为 B 的⼦模块。正如模块的使⽤使得不同模块 的作者不必担⼼彼此...

    空间几何体的三视图与直观图.doc

    “横看成岭侧成峰”,这说明从不同的角度看同一物体视觉的效果可能不同,要比较真实地反映出物体的结构特征,我们可从多角度观看物体,这堂课我们主要学习空间几何体的三视图.在初中,我们已经学习了正方体、长方体...

Global site tag (gtag.js) - Google Analytics