Oracle数据搬迁时建表参数pctfree的修改

最近在进行数据迁移时需要修改部分表的pctfree和initrans参数,因此对修改的方式进行了讨论。
pctfree参数增大会使数据块的空闲空间同步增加,块的使用率就会下降。但是直接修改已有表的pctfree和initrans参数参数,针对已有块的空闲空间是不会改变的,例如:当前表的pctfree设置为10,手工调整为20后,表使用的块的数量是不会改变的。
有两种方式可供选择:
(1)先在新的数据库中新建表,建表是将pctfree和initrans参数设置为需要的值,再用数据泵的方式将原始库导出,增量的方式导入新库;
(2)直接在原始库上对表结构进行修改,再通过数据泵的方式进行导出导入。
针对第一种方法是肯定没有问题的,但是操作起来不太方便。个人比较倾向于第二种方法,但是由于数据泵是采用块数据搬迁的方式进行导出的,所以不清楚导入以后块的空闲空间会不会改变,因此进行了测试。
测试步骤:
(1)找一张数据量在20M左右的表,其pctfree=10,我测试的表名为A;
(2)新建一张表B,其pctfree=20,其余与A表相同;
(3)执行INSERT INTO B SELECT * FROM A;
(4)将A的pctfree修改为20,并通过数据泵导出A表;
(5)将A表的名称修改为C(避免数据泵导入时重复);
(6)数据泵导入A表。
查询表情况,结果如下
SEGMENT_NAME BYTES BLOCKS
表名 目前占用的大小 占用了多少个block
C 22020096(21MB) 2688
B 26214400(25MB) 3200
A 26214400(25MB) 3200
通过上表可以看出两种方式迁移数据后,其表大小与所占数据块是一致的,说明数据泵导入时其pctfree已经生效,新数据库的数据存储没有完全照搬老的数据块。

以上纯属个人简介,不对之处请指教。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值