Oracle 11G R2导出空表解决与expdp/impdp使用教程

5星 · 超过95%的资源 需积分: 37 5 下载量 114 浏览量 更新于2024-09-16 收藏 23KB DOCX 举报
"Oracle 11G R2中存在一个问题,即使用传统的EXP工具无法导出空表,因为11G R2的新特性是当表无数据时不分配segment以节省空间。解决这个问题有两种方法:首先,可以在空表中插入一行数据,然后回滚操作,这样就会产生segment,使得空表能够被导出。其次,可以修改系统参数deferred_segment_creation为FALSE,这样无论表是否为空,都会分配segment。但这个参数的改变仅对之后创建的表生效,对于已经存在的空表,仍需使用插入并回滚的方法。此外,还可以通过查询无数据的表并执行相应的ALTER TABLE语句来强制分配extent,从而导出空表。 在Oracle 10G及之后的版本中,引入了新的数据泵工具expdp和impdp,它们可以更有效地处理导出和导入任务,包括导出空表。使用expdp和impdp,首先需要创建一个逻辑目录,这个目录在操作系统层面并不实际存在,然后赋予用户在该目录上的读写权限。接下来,可以通过指定用户、导出文件路径和目录来执行数据导出。例如,对于用户SYSTEM,可以使用如下命令: ```sql CREATE DIRECTORY db_bak AS 'D:\test\dump'; GRANT READ, WRITE ON DIRECTORY db_bak TO system; EXPDP SYSTEM/manager@orcls SCHEMAS=system DUMPFILE=expdp.dmp DIRECTORY=db_bak; ``` 在使用expdp导出时,可以指定多个参数,包括要导出的用户、导出文件名、存储目录以及更多的选项,以便实现更灵活的数据管理和迁移。同样,使用impdp可以将这些导出的数据导入到另一个数据库中。 总结来说,Oracle 11G R2的空表导出问题可以通过修改表结构或系统参数来解决,同时expdp和impdp提供了更强大的数据导出和导入功能,能够处理包括空表在内的各种情况。在日常数据库维护和迁移中,掌握这些方法和工具是非常重要的。"