ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 11g exp不能导出空表

11g exp不能导出空表

原创 Linux操作系统 作者:frog-qs 时间:2011-05-20 10:23:50 0 删除 编辑
在和开发做一次数据库迁移的时候,exp出来,然后imp,发现居然空表没有导出来,网上查了下资料发现11g在exp时不导出空表。11g的新特新,无数据,不分配segment以此来节约空间。
 
解决办法:
1.insert 一行数据再rollback,
2.设置deferred_segment_creation=false(该设置,只对后来创建表起作用)
alter system set deferred_segment_creation=false
3.用expdp/impdp
 
知识盲点:对11g新特性不了解,不了解新特性的情况下就去操作导致失败。
 
找出空表方法:
DECLARE
v_table tabs.table_name%TYPE;
v_sql VARCHAR2(888);
v_q NUMBER;
CURSOR c1 IS
SELECT table_name tn FROM tabs;
TYPE c IS REF CURSOR;
c2 c;
BEGIN
DBMS_OUTPUT.PUT_LINE('以下为空数据表的表名:');
FOR r1 IN c1 LOOP
v_table :=r1.tn;
v_sql :='SELECT count(*) q FROM '||v_table||' where rownum = 1';
OPEN c2 FOR v_sql;
LOOP
FETCH c2 INTO v_q;
EXIT WHEN c2%NOTFOUND;
IF v_q=0 THEN
DBMS_OUTPUT.PUT_LINE(v_table);
END IF;
END LOOP;
CLOSE c2;
END LOOP;
EXCEPTION
WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE('Error occurred');
END;
 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22779291/viewspace-695814/,如需转载,请注明出处,否则将追究法律责任。

上一篇: ORA-09925 ,ORA-27086
请登录后发表评论 登录
全部评论

注册时间:2009-10-27

  • 博文量
    132
  • 访问量
    243179