本文主要是介绍oracle数据库空表处理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
最近在oracle数据库还原时,出现好多表没有导入成功,这是因为什么呢,网上查阅资料,导库前需要进行数据库的空表处理。这里记录下来,方便备查。
数据库版本:oracle 11g
第一步、设置 延迟段创建
deferred_segment_creation 延迟段创建(Oracle 11g的新特性)
alter system set deferred_segment_creation=false;
设置为 true,即创建一个表时,不分配空间,只有插入第一条数据时才分配空间。
优点:加快建表速度,节约空间
缺点:export导出是不会导出空表
第二步、查询当前用户下所有空表
Select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0 or num_rows is null;
执行SQL后,会生成若干可执行的语句,即空表的更改语句 修改表extent。如下图所示
第三步、执行生成的语句
生成出来的语句就是空表的压缩空间的语句,复制出来执行即可!
第四步、执行数据库导出的脚本
创建用户:gzgl ,密码:gzgl ,默认工作空间:DATA
在windows的cmd窗口下执行数据导入命令
imp gzgl/gzgl @orcl full=y file=D:/20191231.dmp log=D:/20191231.dmp.log
空表处理后,数据库的导入就会好很多。
博客来源:
【1】https://www.cnblogs.com/guazixing/p/7600327.html
这篇关于oracle数据库空表处理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!