oracle11G更改默认参数使imp可以导出空表

Oracle11gR2引入了deferred_segment_creation参数,默认为true,导致新建未填充数据的表不立即分配空间。这可能导致导入空表的问题。解决方法包括以sysdba身份调整数据库参数至false,以及通过PL/SQL处理已存在的空表,分配extent以确保正常操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

oracle11gR2 新增了一个参数:deferred_segment_creation,从字面理解含义是段延迟创建,该参数取值范围是true和false,默认是true。如果deferred_segment_creation为true,当新建表并且没有向其中插入数据的时候,这个表不会立即分配extent,即不占数据空间,只有insert数据后才分配空间,这样做可以节省少量的空间。但是也给初接触oracle11gR2的人带来了麻烦,如果deferred_segment_creation为false,那就和之前版本创建表一样,创建时即分配extent。

下面的方法用与oracle11gR2装上之后,没有调整数据库空表的参数,并且已经初始化

一、调整数据库参数(如果是plsql环境 ,请在命令窗口中执行,不能是查询窗口)

C:\sqlplus  “/as sysdba”

调整方式:登入sqlplus

查看当前参数值:

show parameter deferred_segment_creation

输入调整参数语句:

alter system set deferred_segment_creation=false scope=both;

二、通过plsql调整处理现有空表

select 'alter table '||table_name||' allocate extent (size 64k);' sql_text,table_name,tablespace_name

from user_tables

where table_name not in

(select segment_name from user_segments where segment_type = 'TABLE');

三、将sql_test列 全部复制出来,放到sql窗口,全部执行以下即可,至此,该问题将处理完毕,后续使用过程中将不会再出现问题。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值