最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

ORACLE 11g不能导出空表的解决方法

来源:动视网 责编:小OO 时间:2025-09-27 08:07:28
文档

ORACLE 11g不能导出空表的解决方法

ORACLE11g不能导出空表的解决方法oracle11g新增了一个参数:deferred_segment_creation,含义是段延迟创建,默认是true。当deferred_segment_creation=true时,新创建的表在未插入数据前,数据库不会立即为此表分配segment,也就是说不占用数据空间,只有在向此表中插入数据后才真正分配空间。这样虽可以节省少量的空间,但也会造成其他问题。当使用exp命令进行数据库导出时,未分配空间的表是不会导出的,如此造成了数据库的不完整,给数据库
推荐度:
导读ORACLE11g不能导出空表的解决方法oracle11g新增了一个参数:deferred_segment_creation,含义是段延迟创建,默认是true。当deferred_segment_creation=true时,新创建的表在未插入数据前,数据库不会立即为此表分配segment,也就是说不占用数据空间,只有在向此表中插入数据后才真正分配空间。这样虽可以节省少量的空间,但也会造成其他问题。当使用exp命令进行数据库导出时,未分配空间的表是不会导出的,如此造成了数据库的不完整,给数据库
ORACLE 11g不能导出空表的解决方法

oracle 11g新增了一个参数:deferred_segment_creation,含义是段延迟创建,默认是true。当deferred_segment_creation=true时,新创建的表在未插入数据前,数据库不会立即为此表分配segment,也就是说不占用数据空间,只有在向此表中插入数据后才真正分配空间。

这样虽可以节省少量的空间,但也会造成其他问题。当使用exp命令进行数据库导出时,未分配空间的表是不会导出的,如此造成了数据库的不完整,给数据库的迁移带来麻烦。

解决未分配空间的表不导出的问题可采取如下方法:

修改deferred_segment_creation参数值为false

当deferred_segment_creation参数的值设为FALSE后,无论是空表还是非空表,都分配segment。

在sqlplus中执行如下命令:

SQL> alter system set deferred_segment_creation=false;

查看设置后的参数值

SQL> show parameter deferred_segment_creation;

该值设置后只对后面新增的表产生作用,对之前建立的空表不起作用,并且要重新启动数据库,参数才能生效。

使用ALLOCATE EXTENT命令手动为空表分配空间

使用ALLOCATE EXTENT可以为数据库对象分配Extent。其语法如下:

ALLOCATE EXTENT { SIZE integer [K | M] | DATAFILE 'filename' | INSTANCE integer }
可以针对数据表、索引、物化视图等手工分配Extent。 

ALLOCATE EXTENT使用样例: 

ALLOCATE EXTENT 

ALLOCATE EXTENT(SIZE integer [K | M]) 

ALLOCATE EXTENT(DATAFILE 'filename') 

ALLOCATE EXTENT(INSTANCE integer)

ALLOCATE EXTENT(SIZE integer [K | M] DATAFILE 'filename') 

ALLOCATE EXTENT(SIZE integer [K | M] INSTANCE integer)

构建对空表分配空间的SQL命令

SQL> conn esb/esb

SQL> select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0;

如果是其他用户可使用如下语句

SQL>  select 'alter table '||table_name||' allocate extent;' from all_tables where owner='ESB' and num_rows=0;

或:

SQL>  select 'alter table '||table_name||' allocate extent;' from dba_tables where owner='ESB' and num_rows=0;

执行对空表分配空间的SQL命令

SQL>alter table ESB_SVCVER_MIGRATSCHEMA allocate extent;

SQL>alter table ESB_REVERSAL allocate extent;

SQL>alter table ESB_REVERSAL_SUB allocate extent;

SQL>alter table ESB_STAT allocate extent;

SQL>alter table BPL_PROCESSDEFINITION allocate extent;

SQL>alter table ESB_FAMSGSCHEMA allocate extent;

执行完已上命令再执行exp命令,没有数据的表就可以正常导出了。

文档

ORACLE 11g不能导出空表的解决方法

ORACLE11g不能导出空表的解决方法oracle11g新增了一个参数:deferred_segment_creation,含义是段延迟创建,默认是true。当deferred_segment_creation=true时,新创建的表在未插入数据前,数据库不会立即为此表分配segment,也就是说不占用数据空间,只有在向此表中插入数据后才真正分配空间。这样虽可以节省少量的空间,但也会造成其他问题。当使用exp命令进行数据库导出时,未分配空间的表是不会导出的,如此造成了数据库的不完整,给数据库
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top