首页 / 数据库 / MySQL / Oracle 11g导出空表、少表的解决办法
Oracle 11g中有个新特性,当表无数据时,不分配segment,以节省空间。解决方法: 1)insert一行,再rollback就产生segment了 该方法是在在空表中插入数据,再删除,则产生segment。导出时则可导出空表。 2)设置deferred_segment_creation参数SQL> show parameter deferred_segment_creation
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
deferred_segment_creation boolean TRUE
SQL> alter system set deferred_segment_creation=false;
系统已更改。
SQL> show parameter deferred_segment_creation
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
deferred_segment_creation boolean FALSE需注意的是:该值设置后对以前导入的空表不产生作用,仍不能导出,只能对后面新增的表产生作用。如需导出之前的空表,只能用第一种方法。3)批量处理空表首先使用下面的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 假设我们这里有空表TBL_1,TBL_2,TBL_3,TBL_4,则查询结果如下:alter table TBL_1 allocate extent;alter table TBL_2 allocate extent;alter table TBL_3 allocate extent;alter table TBL_4 allocate extent; 最后我们把上面的SQL语句执行就可以了。在CentOS 6.4下安装Oracle 11gR2(x64) http://www.linuxidc.com/Linux/2014-02/97374.htmOracle 11gR2 在VMWare虚拟机中安装步骤 http://www.linuxidc.com/Linux/2013-09/89579p2.htmDebian 下 安装 Oracle 11g XE R2 http://www.linuxidc.com/Linux/2014-03/98881.htmOracle Linux 6.5安装Oracle 11.2.0.4 x64 http://www.linuxidc.com/Linux/2014-11/109903.htm更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12本文永久更新链接地址