`
javaoldboy
  • 浏览: 71294 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

exp/imp工具的使用

阅读更多

Export/Import 使用技巧与常见错误

Export 和 Import 是一对读写Oracle数据的工具. Export 将 Oracle 数据库中的数据输出到操作系统文件中, Import 把这些文件中的数据读到Oracle 数据库中. Export/Import可以用来完成以下工作: 数据归档, 数据库升级, 备份数据库, 把数据从一个数据库移到另一个数据库, 回收数据库存储碎片等等.
  
   使用Export除了要保证磁盘或磁带上有足够的空间, 还必须执行expvew.sql和expvew.sql来创建Export使用的示图, 并创建EXP_FULL_DATABASE ROLE. 使用Export的用户应具有CREATE SESSION的权限, 若要Export其他用户的表还要有EXP_FULL_DATABASE ROLE.同样, 使用Import必须用catex.sql来创建IMP_FULL_DATABASE ROLE. 使用Import的用户应具有CREATE SESSION的权限. Import只能读入用Export创建的文件. 如果该文件是全库Export, 使用Import的用户还要有IMP_FULL_DATABASE ROLE.   

   Export/Import有三个级别: 表级, 用户级和全数据库级.

   表级允许Export/Import指定的表而不涉及其他数据库对象. 用户级Export/Import只针对属于指定用户的全部数据库对象. 只有拥有EXP_FULL_DATABASE/IMP_FULL_DATABASE ROLE 的用户才能使用全数据库级的Export/Import.

      有三种方式执行Export/Import: 参数文件方式, 命令行方式和交互式.

      使用参数文件是一种比较好的方式, 格式为:

         Exp <username/password> PARFILE = <filename>

         Imp <username/password> PARFILE = <filename>

      命令行方式是指在命令行中指定参数:

         Exp <username/password> TABLES = (emp,dept) GRANTS = y

         Imp <username/password> FROMUSER = scott TOUSER = test TABLES = (emp,dept)

      交互式只要敲入Exp或Imp然后回答屏幕上的提问即可.

下面介绍一些EXPORT/IMPORT的使用技巧

   - 把数据库对象从一个用户移到另一个用户

      Oracle 不允许直接改变表的拥有者, 利用Export/Import可以达到这一目的.

      假设要把表 T 的拥有者User1改为User2,  具体步骤是:

         - exp system/manager tables = User1.T

         - imp system/manager fromuser = User1 touser = User2 tables = T

         - drop table User1.T

         - 把数据库对象从一个表空间移到另一个表空间

      建表时可以指定表空间, 表空间一经确定就部能随意改变. 若要表 T 从表空间 tbs1移到表空间 tbs2, 就要采用以下方法:

         - exp <user/passwd> tables = T

         - imp <user/passwd> tables = T indexfile =  temp.sql

         - drop table T

         - 编辑 temp.sql 只保留所需的建表命令并指定表空间为tbs2

         - 以表的所有者执行temp.sql

         - imp <user/passwd> tables = T ignore = Y

     - 只输出一个的表空间

      通常数据库设计成用户若属于某个表空间, 那么这个用户创建的数据库对象也在该表空间内.

   Export某个表空间可用如下方法:

         - 查看表空间内所有用户

             spool owners
           
             select owner

             from dba_segments

             where tablespace_name = '<TablespaceName>';
           

            spool off

            
         - 查看表空间内所有数据库对象

             spool objects

             select owner, object_name, object_type

             from  dba_objects

             where owner = 'owner1'

             or   owner = 'owner2'

                  ...

             or   owner = 'ownern';

             spool off

        - 作表级Export         

   - 从Exp文件中提取创建数据库对象的命令

     在IMPORT时使用 'INDEXFILE =  FileName', IMPORT把创建数据库对象的命令输出到指定的文件中, 编辑后运行这个文件就能建立数据库对象.

   

下面介绍Export/Import 使用中几个常见的问题和解决办法

   - Export/Import 使用不同的字符集

      Export文件中包含着字符信息. 如过输入/输出都使用担字节字符集, 如EBCDIC或US7ASCII, 输入时将自动进行字符集转换. 转换过程中, 若输出文件中含有的目标字符集中不能匹配的字符会自动设成缺省字符.

      对于多字节字符集, 如ZHS16CGB231280, 通常不能自动转换, 只有在字符串长度不变的情况下才能自动转换.      

   - 空间不够 -- 碎片问题

      有些时候, 即使数据库仍有足够的空间, 使用IMPORT时却出空间不够的错误. 出现这种现象通常是由于数据库中存在碎片, 即有很多小的不连续的空闲空间. 解决办法是先将数据库全库EXPORT(FULL=Y), SHUTDOWN数据库, 重新建库(CREATE DATABASE)后用IMPORT FULL=Y恢复数据.


   - ROLLBACK段不够

      Export/Import使用过程中, 如果数据量很大会出现'ROLLBACK段不够'的错误. 这时要建一个足够大的ROLLBACK段, 使它ONLINE而其他ROLLBACK段OFFLINE. 这样, Export/Import使用这个大ROLLBACK段, 从而避免上述现象.




* 空间不够 -- 碎片问题

解决办法是先将数据库全库EXPORT(FULL=Y), SHUTDOWN数据库, 重新建库(CREATE DATABASE)后用IMPORT FULL=Y恢复数据.
*/

不同观点:

解决碎片,应该在表空间这个层次上就可以了,
1。exp 出要整理的表空间的各个用户。
2。删除表空间,重新建立该表空间
3。再imp

   - ROLLBACK段不够

  /*    Export/Import使用过程中, 如果数据量很大会出现'ROLLBACK段不够'的错误. 这时要建一个足够大的ROLLBACK段, 使它ONLINE而其他ROLLBACK段OFFLINE. 这样, Export/Import使用这个大ROLLBACK段, 从而避免上述现象.

*/

imp时使用参数 commit=y ,就可以避免要求很大的回退段,
imp 到底用哪个ROLLBACK段是没法指定的,
如果系统刚启动,oracle顺序地用 初始化参数文件中指定的ROLLBACK段
而后,事务以“最少使用原则”选取使用ROLLBACK段。
除非,在imp前,让一个大ROLLBACK段online,紧接着imp,
否则很难说,oralce就正好用大ROLLBACK段。

分享到:
评论

相关推荐

    exp/imp导出导入工具的使用

    Oracle 数据库的 EXP/IMP 工具是数据库管理员(DBA)进行数据迁移、备份和恢复的重要工具。本文将详细介绍这两个工具的使用方法。...但EXP/IMP工具因其简单易用性,在小型或特定场景下仍然非常实用。

    exp/imp2导入导出

    - exp/imp2 是 exp/imp 工具的一个增强版本,它提供了更多高级特性来支持数据迁移和恢复操作。 - 通过这些工具,用户可以轻松地导出整个数据库、单个表或指定的表空间,也可以将导出的数据导入到另一个数据库中。 ...

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

    本文将深入探讨Oracle数据库中使用exp/imp工具进行逻辑增量备份的方法及其恢复策略。 1一、实现需求 在Oracle数据库环境中,确保数据安全性和可用性是关键。逻辑增量备份的主要目标是在最小化系统停机时间和资源...

    oracle exp imp详解

    导入/导出是ORACLE幸存的最古老的两个命令行工具,其实我从来不认为Exp/Imp是一种好的备份方式,正确的说法是Exp/Imp只能是一个好的转储工具,特别是在小型数据库的转储,表空间的迁移,...下面说明一下EXP/IMP的使用。

    Oracle expimp,备份或导入时注意的事项

    Oracle exp/imp 是Oracle数据库系统提供的两个实用工具,用于数据的备份和恢复。exp(Export)用于导出数据库中的对象和数据,而imp(Import)则用于将这些导出的数据导入到另一个数据库中。在实际操作中,由于各种...

    oracle数据库exp_imp命令详解[参考].pdf

    Oracle 数据库 exp/imp 命令详解 Oracle 数据库 exp/imp 命令是 Oracle 中最常用的命令之一。...exp/imp 命令是 Oracle 数据库备份和恢复的重要工具,了解其使用方法和参数可以帮助我们更好地备份和恢复数据库。

    exp/imp命令详解(实例)

    Oracle数据库的备份是确保数据安全的关键操作,其中exp和imp命令是进行逻辑备份的主要工具。逻辑备份相较于物理备份,不需要数据库运行在归档模式下,也不需要大量的外部存储设备,如磁带库,因此在很多业务环境中更...

    exp,imp 与 expdp,impdp 对比 及使用中的一些优化事项.doc

    传统的exp/imp工具和现代的expdp/impdp工具分别代表了不同的技术路线和发展阶段。本文将对这两种工具进行深入的比较,并探讨它们在实际应用中的优化策略。 #### 二、exp/imp 与 expdp/impdp 的基本介绍 **1. exp/...

    oracle命令 exp&imp命令详解

    IMP(Import)命令则是Oracle的数据泵导入工具,用于将由EXP创建的导出文件中的数据导入到数据库中。基本语法如下: ```bash imp [username/password@connect_string] file=import_file_name.log fromuser=username...

    oracle数据迁移.docx

    oracle 数据迁移可以使用传统的 exp/imp 工具,也可以使用数据泵 expdp/impdp 工具。 exp/imp 工具是 oracle 数据迁移的传统方法,用于将数据库中的对象和数据导出到一个二进制文件中,然后将该文件导入到目标...

    EXP IMP详解

    Oracle的EXP和IMP工具是早期Oracle数据库管理系统中用于数据导入与导出的命令行实用程序。虽然随着时间的推移,更先进的备份和恢复方法如RMAN( Recovery Manager)已逐渐取代了它们,但在某些特定场景下,EXP和IMP...

    oracleClient安装包exp和imp文件.zip

    综上所述,"oracleClient安装包exp和imp文件.zip"提供了一个完整的Oracle客户端环境,结合EXP和IMP工具,用户可以高效地管理和迁移数据库数据,这对于数据库管理员和开发者来说是非常有价值的资源。

    Oracle 管道 解决Exp/Imp大量数据处理问题

    Oracle的exp和imp工具是数据库管理员进行数据备份、迁移和重组的重要手段。这两个工具执行逻辑备份,即将数据库对象和数据转换成一个名为.dmp的文件,以便在需要时重新导入到数据库中。然而,对于大型数据库,exp...

    imp与exp的注意事项

    在Oracle数据库管理中,`exp`(Export)和`imp`(Import)是两个非常重要的工具,用于数据的备份和恢复。这两个工具帮助用户在不同的数据库之间移动数据,或者在数据库的不同状态之间恢复数据。然而,使用它们的过程...

Global site tag (gtag.js) - Google Analytics