【Oracle】使用exp命令无法导出无数据的空表

本文讨论了Oracle11g中因新特性导致空表不分配segment无法导出的问题,提供了三种解决方法:插入数据、停用新特性以及直接为表分配extent。推荐使用方法三结合方法二,确保新创建库的正常导出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原因:oralce_11g 中的新特性,当表无数据时,不分配 segment,以节省空间,因此导致了 exp 在导出表时,没有数据的表就会被忽略,不予导出。

解决方法:

方法一【推荐指数 0 颗星】:

向空表中插入数据,在删除,这样数据表就分配了 segment,就可以导出了 (比较蠢,不推荐)

方法二【推荐指数 3 颗星】:

停用新特性,这个需要dba的权限

sqlplus / as sysdba       
show parameter deferred_segment_creation;          -- 查看是否启用 true 为启动
alter system set deferred_segment_creation=false;  -- 修改为不启用
show parameter deferred_segment_creation;          -- 查看是否修改成功 false 未启用

存在问题:

关闭新特性后新创建的表才会起作用,关闭前创建的表不生效,需要删除后重新创建新表。

方法三【推荐指数 5 颗星】:

在对应的库上执行以下SQL,得到拼接出来的sql结果,然后拷贝结果在进行

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值