`

不同表空间的导入

阅读更多

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

 

很多人在进行数据迁移时,希望把数据导入不同于原系统的表空间,在导入之后却往往发现,数据被导入了原表空间。
本例举例说明解决这个问题:
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中实现这一目标。 首先,...

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

    假设需要将一个名为`EXPDAT.dmp`的DMP文件从用户`qfyx`的`qfyx_ts`表空间导入到新用户`qctyx`下的`qctyx_ts`表空间中,可以按照以下步骤操作: 1. **创建表空间和用户**: - 创建表空间`qctyx_ts`。 - 创建用户`...

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

    ### Oracle导入时表空间不一致解决方法 在Oracle数据库管理中,经常会出现因表空间不一致而导致的数据导入失败的问题。本文将详细介绍如何解决这一常见问题,并确保数据能够顺利地从一个环境迁移到另一个环境中。 ...

    Oracle利用传输表空间导出导入数据的步骤

    在目标数据库中导入表空间 - **第四步**:在目标数据库epras中创建一个新的用户ts,并暂时不对其进行授权。 - **第五步**:使用sysdba权限执行导入操作,将之前导出的dmp文件导入到epras数据库中。 - **第六步**:...

    oracle创建用户、表空间、导入导出命令

    ### Oracle 创建用户、表空间及导入导出命令详解 #### 一、创建表空间 在 Oracle 数据库中,表空间是存储数据的基本单位。表空间由一个或多个数据文件组成,用于存储表、索引等数据库对象。创建表空间通常包括创建...

    plsql下不同用户数据导入

    2. 在导出数据时,需要勾选 Include Storage 选项,以便包括存储信息,例如表空间名称和初始大小。 3. 在导出数据时,需要勾选 Include Owner 选项,以便控制对象是否前缀与业主。 4. 在导出数据时,可以选择 Single...

    不同数据库之间的数据导入导出

    本文将深入探讨不同数据库之间进行数据导入导出的方法,特别关注两个具体案例:一是表空间相同情况下的数据迁移,二是表空间不同的情况下的数据迁移。 #### 表空间相同的数据导入导出 当两个数据库(假设为db1和...

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

    - 在不同用户和表空间之间导入数据时,`remap_schema`和`remap_tablespace`参数是关键。例如,`impdp susan/susan@orcl directory='您创建的目录的名称' dumpfile='导出的文件名称' remap_schema=原用户名:新用户名...

    Oracle多个表空间合并成一个表空间,验证通过

    为了简化管理和提高效率,我们可能希望将这些不同的表空间中的数据合并到一个新的或现有的表空间中。 #### 步骤详解 ##### 第一步:查询当前用户下的所有表空间 首先需要了解当前用户下存在哪些表空间。这可以通过...

    oralce 导入导出授权创建表空间名

    - **表空间导入**:仅导入指定表空间的数据。 - 命令示例:`imptpl/tpl@bzqck file=D:\gcp\п\׼\initbzktpl20090317.dmp fromuser=tpl touser=tpl tables=(sy_department)` #### 特殊情况处理 - 当需要删除指定表...

    Oracle创建用户、表空间、导入导出、...命令

    这条命令与创建临时表空间类似,但有几点不同: - `CREATE TABLESPACE`:创建的是永久表空间。 - `LOGGING`:启用归档模式,确保事务的完整性和一致性。 - 其他参数与临时表空间创建相同。 #### 创建用户并分配表...

    oracle表的导入导出-命令

    这将只导入table1表。 3. 当表已存在时,`ignore=y`选项可以帮助跳过错误并继续其他导入操作。 在执行导入导出时,操作者必须具有足够的权限,例如DBA权限。可以通过`tnsping`测试数据库连接性。例如,`tnsping ...

    Oracle不同用户和表空间之间的数据备份与还原

    Oracle 不同用户和表空间之间的数据备份与还原 Oracle 数据库中,备份和还原数据是非常重要的操作步骤。本文将为大家提供 Oracle 不同用户和表空间之间的数据备份和还原操作步骤和语句。 一、EXP 备份和还原 EXP ...

    广西非税:从创建表空间到导入包

    这个主题“广西非税:从创建表空间到导入包”涵盖了数据库管理系统的基础操作,特别是针对Oracle数据库,因为通常涉及SQL脚本进行数据管理。让我们深入探讨一下这个话题的相关知识点。 首先,创建表空间是数据库...

    Oracle创建删除用户、角色、表空间、导入导出数据库命令行方式总结

    导出数据库的部分或全部数据,导入到另一个数据库或者同一个数据库的不同表空间。 9. 错误处理: 如果在删除表空间前误删了数据文件,可能造成数据库异常。这时可以通过SQL*Plus以操作系统用户身份连接,执行恢复...

    在oracle两个表空间之间移动表

    导入表 使用`IMP`命令将表导入到新的表空间。 ```bash imp user_name/password@dbname fromuser=user_name touser=user_name file=dump_file.dmp TABLESPACES=new_tablespace log=log_file.log ``` 这种方法虽然...

    5.1 PLSQL创建表空间-关联用户-DMP文件导入 1

    ### 创建表空间与用户管理 ...通过上述步骤,我们可以有效地管理和维护Oracle数据库中的表空间以及用户的权限分配,同时也可以方便地进行数据导入操作。这些操作对于Oracle数据库管理员来说是非常重要的技能。

Global site tag (gtag.js) - Google Analytics