Oracle 11g R2导出空表解决方案:expdp与参数设置
需积分: 37 70 浏览量
更新于2024-09-16
收藏 23KB DOCX 举报
"Oracle 11g R2中,由于新增特性,exp工具无法导出空表。然而,有几种解决方法可以应对这个问题。一种是通过在空表中插入并回滚数据,使得表产生segment;另一种是设置系统参数deferred_segment_creation为FALSE,但这只对新创建的表生效;还有一种是通过查询并执行SQL语句来强制分配segment。此外,从Oracle 10g开始引入的expdp工具可以成功导出空表,这是一种更现代且功能强大的数据泵导出工具。在使用expdp之前,需要创建逻辑目录,并给予相应用户的读写权限。"
在Oracle 11g R2中,数据库管理系统引入了一个新特性,即对于没有数据的表,系统不再自动分配segment以节省存储空间。这一改变导致使用传统的exp工具尝试导出空表时会遇到问题。不过,有几种策略可以解决这个问题:
1. **插入并回滚数据**:在空表中插入一条记录,然后执行ROLLBACK操作。这样会迫使Oracle为表分配segment,即使数据被回滚后,表依然被认为有数据,从而可以在exp中导出。
2. **修改系统参数deferred_segment_creation**:这个参数控制是否在数据插入时立即创建segment。将其设置为FALSE意味着无论表是否有数据,都会立即分配segment。可以通过ALTER SYSTEM SET DEFERRED_SEGMENT_CREATION=FALSE SCOPE=BOTH;命令进行设置。但需要注意,该设置只对设置后的表生效,已存在的空表仍不能导出,需要使用其他方法。
3. **查询并执行SQL语句**:可以使用SQL查询找出所有的空表,并构造ALTER TABLE语句来手动分配extent。例如,`SELECT 'ALTER TABLE ' || table_name || ' ALLOCATE EXTENT;' FROM user_tables WHERE num_rows = 0;`,然后执行这些语句,为空表分配segment,使它们能在exp中被导出。
从Oracle 10g开始,Oracle提供了新的数据泵工具expdp(Export Data Pump)和impdp(Import Data Pump),这些工具更加强大,能够处理更多复杂情况,包括导出空表。使用expdp,首先需要创建一个逻辑目录,例如`CREATE DIRECTORY db_bak AS 'D:\test\dump';`。接着,要确保用户具有在该目录上读写权限,如`GRANT READ, WRITE ON DIRECTORY db_bak TO system;`。最后,执行expdp命令来导出数据,如`expdp system/manager@orcls schemas=system dumpfile=expdp.dmp directory=db_bak;`,其中system是用户名,manager是密码,orcls是数据库连接服务名,schemas定义要导出的模式,dumpfile指定输出的dump文件名,directory则是之前创建的逻辑目录。
总结来说,Oracle 11g R2的这个新特性虽然有助于节省存储空间,但也给导出空表带来了挑战。通过理解这些解决方法,我们可以灵活地处理这类问题,确保顺利导出数据。而expdp工具的使用则提供了一种更为高效和全面的数据导出解决方案。
2012-12-12 上传
2013-12-18 上传
点击了解资源详情
点击了解资源详情
2021-12-29 上传
点击了解资源详情
luhu_2005
- 粉丝: 0
- 资源: 3
最新资源
- 探索数据转换实验平台在设备装置中的应用
- 使用git-log-to-tikz.py将Git日志转换为TIKZ图形
- 小栗子源码2.9.3版本发布
- 使用Tinder-Hack-Client实现Tinder API交互
- Android Studio新模板:个性化Material Design导航抽屉
- React API分页模块:数据获取与页面管理
- C语言实现顺序表的动态分配方法
- 光催化分解水产氢固溶体催化剂制备技术揭秘
- VS2013环境下tinyxml库的32位与64位编译指南
- 网易云歌词情感分析系统实现与架构
- React应用展示GitHub用户详细信息及项目分析
- LayUI2.1.6帮助文档API功能详解
- 全栈开发实现的chatgpt应用可打包小程序/H5/App
- C++实现顺序表的动态内存分配技术
- Java制作水果格斗游戏:策略与随机性的结合
- 基于若依框架的后台管理系统开发实例解析