Oracle impdp导入后表空间很大的解决方法

今天使用impdp命令导入 DMP文件,文件才100M,导入之后表空间占磁盘空间达9G,查资料研究之后发现是表跟索引的初始大小太大了,解决方法如下:

一、使用以下语句生成的SQL语句重新设置所有表跟索引的初始大小(其中BC2022是用户名)

--表
select 'ALTER TABLE '||owner||'.'||table_name||' MOVE TABLESPACE '||tablespace_name||' STORAGE(INITIAL 64K NEXT 32K);' 
  from dba_tables 
 where owner='BC2022' and initial_extent>65536  ;
 
--索引
select 'ALTER INDEX '||owner||'.'||index_name||' REBUILD STORAGE(INITIAL 64K NEXT 32K);' 
  from dba_indexes 
 where owner='BC2022'  and initial_extent>65536;


--分区表
select 'ALTER table '||table_owner||'.'||table_name||' MOVE PARTITION '||PARTITION_NAME||' STORAGE(INITIAL 64K NEXT 32K);'   
  from DBA_tab_PARTITIONS 
 where table_owner='BC2022' and initial_extent>65536;
 
--分区索引
select 'ALTER INDEX '||index_owner||'.'||index_name||' REBUILD PARTITION '||PARTITION_NAME||' STORAGE(INITIAL 64K NEXT 32K);'   
  from DBA_ind_PARTITIONS 
 where index_owner='BC2022' and initial_extent>65536;

二、使用alter index index_name rebuild  online; 语句重置所有索引

三、使用expdp命令备份当前用户数据到dmp文件

expdp username/password@orcl directory=databakdir dumpfile=bc2022_%date:~0,4%-%date:~5,2%-%date:~8,2%.dmp schemas=bc2022  logfile=bc2022_%date:~0,4%-%date:~5,2%-%date:~8,2%.log

四、删除用户,再删除表空间

1、drop user bc2022 cascade; --删除用户

2、drop tablespace tablespace_name including contents and datafiles; --删除表空间及对应数据文件

五、创建用户、创建表空间

六、重新用impdp导入第三步备份的dmp文件,此时表空间只占磁盘200M了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值