欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

oracle数据库空表处理

程序员文章站 2022-05-07 09:07:10
...

最近在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。如下图所示
oracle数据库空表处理

第三步、执行生成的语句

生成出来的语句就是空表的压缩空间的语句,复制出来执行即可!

第四步、执行数据库导出的脚本

创建用户: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