Oracle11g解决空表导出问题:exp与deferred_segment_creation
需积分: 44 116 浏览量
更新于2024-09-11
收藏 41KB PDF 举报
"Oracle11g使用exp导出空表以解决备份中空表缺失的问题。这涉及到Oracle11g数据库的默认配置和空表的segment分配策略。"
在Oracle11g数据库中,遇到使用exp工具导出数据时空表无法被导出的情况,主要是由于两个原因:
1. Oracle11g默认情况下不会为空表分配segment。Segment是Oracle数据库中存储表和索引数据的基本逻辑单元,当表没有数据时,系统为了节省空间,可能不会立即创建对应的segment。
2. 另一个原因是`deferred_segment_creation`参数默认设置为TRUE。这个参数控制是否在创建表时立即分配segment,如果设置为TRUE,Oracle会延迟segment的创建,直到有数据插入到表中。
为了解决这个问题,有以下两种方法:
**方法一:修改系统参数**
可以通过执行SQL命令来临时更改`deferred_segment_creation`参数的值,使其为FALSE,这样新创建的空表就会分配segment。具体操作如下:
```sql
SQL> alter system set deferred_segment_creation=false;
```
然后检查参数设置是否生效:
```sql
SQL> show parameter deferred_segment_creation;
```
请注意,这种方法仅对设置之后创建的空表有效,对于已经存在的空表,需要采取其他措施。
**方法二:手动分配Extent**
对于已经存在的空表,可以使用`ALTER TABLE`语句结合`ALLOCATE EXTENT`命令来手动为这些空表分配Extent。Extent是segment内的物理存储单元。例如,你可以执行以下命令:
```sql
alter table aTableName allocate extent;
```
`ALLOCATE EXTENT`命令有不同的选项,如指定大小(SIZE integer[K|M])、数据文件名(DATAFILE 'filename')或实例号(INSTANCE integer)。你需要根据实际需求选择合适的语法。
这两种方法可以帮助你在Oracle11g环境中成功导出包含空表的数据。在进行备份和恢复操作时,确保所有需要的表,无论是否为空,都能正确地被导出和导入,这对于完整的数据库备份至关重要。在完成导出后,如果你不希望空表占用额外的空间,可以考虑将`deferred_segment_creation`参数恢复为默认值TRUE。
2012-07-08 上传
2011-11-21 上传
2012-12-12 上传
2015-06-22 上传
2019-08-15 上传
romantic11000
- 粉丝: 38
- 资源: 4
最新资源
- 探索AVL树算法:以Faculdade Senac Porto Alegre实践为例
- 小学语文教学新工具:创新黑板设计解析
- Minecraft服务器管理新插件ServerForms发布
- MATLAB基因网络模型代码实现及开源分享
- 全方位技术项目源码合集:***报名系统
- Phalcon框架实战案例分析
- MATLAB与Python结合实现短期电力负荷预测的DAT300项目解析
- 市场营销教学专用查询装置设计方案
- 随身WiFi高通210 MS8909设备的Root引导文件破解攻略
- 实现服务器端级联:modella与leveldb适配器的应用
- Oracle Linux安装必备依赖包清单与步骤
- Shyer项目:寻找喜欢的聊天伙伴
- MEAN堆栈入门项目: postings-app
- 在线WPS办公功能全接触及应用示例
- 新型带储订盒订书机设计文档
- VB多媒体教学演示系统源代码及技术项目资源大全