Oracle 11g空表导出解决方案与新工具expdp/impdp详解
需积分: 9 146 浏览量
更新于2024-09-09
收藏 49KB DOC 举报
Oracle数据库的数据迁移、备份和恢复是数据库运维中的重要任务。本文主要关注Oracle 11g R2版本中遇到的一个问题:使用exp工具导出空表时,由于新特性导致无法正常导出。11g R2在处理空表时,会避免分配存储空间以节省资源,但这也使得空表在export操作中无法被识别。为解决这个问题,文章提供了两种方法:
1. **插入数据然后回滚**:
- 在空表中插入一行数据,这会触发Oracle为表分配存储空间(segment)。
- 插入后立即执行一个ROLLBACK操作,撤销数据更改,但保留了segment。
- 这时,可以使用exp工具导出包含空表的数据。
2. **修改`deferred_segment_creation`参数**:
- 将系统参数`deferred_segment_creation`设为`FALSE`,无论表是否为空,都会在导出时强制分配segment。
- 但是,这个改变仅对后续新建或修改的表有效,对历史空表没有影响,需要单独处理。
为了导出历史空表,可以使用SQL查询来找到这些表,然后执行`ALTER TABLE`命令分配extent,例如:
```sql
SELECT 'ALTER TABLE ' || table_name || ' ALLOCATE EXTENT;'
FROM user_tables
WHERE num_rows = 0;
```
执行查询结果后,就可以导出包含这些空表的数据库了。
Oracle 10g及更高版本引入了expdp和impdp工具,它们专门用于数据传输,相比于传统的exp和imp,提供了更高级的功能。以下是使用expdp的基本步骤:
- **创建逻辑目录**:
- 使用管理员账户(如system)创建一个逻辑目录,如'db_bak',路径为'd:\test\dump',注意这只是在Oracle内部表示的,不直接对应操作系统中的目录。
- 创建命令:`createdirectory db_bak as 'd:\test\dump';`
- **检查和赋权**:
- 查看当前目录权限:`select * from dba_directories;`
- 给system用户在指定目录的读写权限:`grant read, write on directory db_bak to system;`
- **导出数据**:
- 使用expdp命令,指定用户名(如system或manager)、目标服务器(如orcls),以及导出选项(schemas=system, dumpfile=expdp.d`)。
通过以上方法,无论是利用传统exp工具还是新式的expdp工具,都可以有效地进行Oracle数据库的数据导入导出,包括处理空表的问题。这对于数据库管理员来说是一项重要的技能,确保数据的完整性和一致性,以及在必要时进行有效的数据备份和恢复。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2013-01-06 上传
2014-10-08 上传
2020-09-10 上传
亚军_何
- 粉丝: 0
- 资源: 14
最新资源
- Java语言教程&案例&相关项目资源.zip
- Python库 | destral-1.7.3.tar.gz
- ArduinoAndroidBluetooth:Arduino 和 Android 蓝牙与 DF-BluetoothV3 通信
- RtpAnalyzeriOS:适用于iOS设备的RTP丢包分析器
- eloquent-faster:简单的无IO高速缓存,用于雄辩的模型更改器和访问器配置
- placement-prep
- HTML5+Three.js实现浓烟翻滚大雾弥漫场景动画效果源码.zip
- 20210808-中泰证券-银行业专题测算:地方债务与银行风险、资产增速,高安全边际.rar
- Python库 | desolver-3.0.0.tar.gz
- blogify:面向极简主义者和开发者的博客平台
- SQL是一种用于管理关系型数据库管理系统(RDBMS)的标准化语言
- syncany-plugin-ftp:Syncany FTP 插件
- aws-rds-manager::cloud::hammer_and_wrench::sparkles:提供用于管理RDS快照的实用程序
- html5+TweenMax.js实现跟随鼠标层叠出现隐藏的图片动画效果源码.zip
- 20210807-天风证券-纺织服装行业专题研究:JK制服,破译文化圈层,把握Z世代风向,掘金细分市场.rar
- 基于hadoop的好友推荐系统