Oracle11g使用exp导出空表

1、Oracle11g默认对空表不分配segment,故使用exp导出Oracle11g数据库时,空表不会导出。

2、设置deferred_segment_creation 参数为FALSE后,无论是空表还是非空表,都分配segment。

   在sqlplus中,执行如下命令:

   SQL>alter system set deferred_segment_creation=false;

   查看:
   SQL>show parameter deferred_segment_creation;


   该值设置后只对后面新增的表产生作用,对之前建立的空表不起作用。

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

   查询当前用户下的所有空表(一个用户最好对应一个默认表空间)。命令如下:

   -----------
   SQL>select table_name from user_tables where NUM_ROWS=0;
   -----------


   根据上述查询,可以构建针对空表分配空间的命令语句,如下:

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


   批量输出上述生成的SQL语句,建立C:\createsql.sql,其内容如下:

   -----------
   set heading off;
   set echo off;
   set feedback off;
   set termout on;
   spool C:\allocate.sql;
   Select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0;
   spool off;
   -----------


   执行C:\createsql.sql,命令如下:
   -----------
   SQL>@ C:\createsql.sql;
   -----------

   执行完毕后,得到C:\allocate.sql文件。

   打开该文件会看到,已经得到对所有空表分配空间的命令SQL语句。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值