oss导出数据为空时怎么处理_数据库导出时有空表导不出的解决方法

oracle11g

在用

exp

命令备份数据库时,

如果表中没有数据报

EXP-00011

错误,

对应的表不存在。

这导致对应的空表无法备份。

原因:

11g

默认创建一个表时不分配

segment

只有在插入数据时才会产生

(当然也可以强制分配)

以节省磁盘空间。

对于已经存在的空表解决办法:

就是想办法让空表有

segment

,第一种:可以通过插入数据的方式(不想要这些数据可以回滚)

,只

要有

insert

动作就会分配

segment

第二种:就是强制分配:

alter table tablename

allocate extent;

如果采用第二种可以用以下方法:

1

、用以下这句查找空表:

select 'alter table '||table_name||' allocate extent;' from

user_tables where num_rows=0;

2

、把查询结果导出,执行导出的语句

;

为了后面创建的表能直接分配

segment

用系统账户登录数据库,修改参数

deferred_segment_creation

(

11g

新增的)

。该参数即指是否

延迟创建

segment

,默认为

true

。如果想让表创建时就分配

segment

,那么就应该修改该参数为

false

alter system set deferred_segment_creation=false

。如下所示:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值