方法一:
Select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0;
在plsql执行上面查询语句
将查询结果复制出来在plsql执行就可以了
方法二:
--导出前执行这个
DECLARE
I INTEGER;
B VARCHAR2(200);
BEGIN
FOR C IN (select 'alter table '||table_name||' allocate extent' as txt
from user_tables A where A.TEMPORARY='N' AND (A.NUM_ROWS = 0 OR A.NUM_ROWS IS NULL)
AND NOT EXISTS (SELECT 1 FROM USER_EXTENTS B
WHERE B.SEGMENT_NAME=A.table_name
AND B.SEGMENT_TYPE LIKE 'TABLE%')
) LOOP
DBMS_OUTPUT.PUT_LINE(C.txt);
EXECUTE IMMEDIATE C.txt;
END LOOP;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.put_line(SQLERRM);
END;
/
I INTEGER;
B VARCHAR2(200);
BEGIN
FOR C IN (select 'alter table '||table_name||' allocate extent' as txt
from user_tables A where A.TEMPORARY='N' AND (A.NUM_ROWS = 0 OR A.NUM_ROWS IS NULL)
AND NOT EXISTS (SELECT 1 FROM USER_EXTENTS B
WHERE B.SEGMENT_NAME=A.table_name
AND B.SEGMENT_TYPE LIKE 'TABLE%')
) LOOP
DBMS_OUTPUT.PUT_LINE(C.txt);
EXECUTE IMMEDIATE C.txt;
END LOOP;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.put_line(SQLERRM);
END;
/
相关推荐
Oracle 11g 导出空表解决方案 Oracle 11g 是一个功能强大且复杂的关系数据库管理系统,它提供了多种方式来导出数据库中的数据。然而,在使用 exp 命令导出 Oracle 11g 数据库时,空表会出现错误,这是因为 Oracle ...
Oracle 11g R2 中 exp 无法导出空表的解决方法 Oracle 11g R2 中新增的特性,使得 exp 无法导出空表,这是因为 11g R2 中有一个新特性,即当表无数据时,不分配 segment,以节省空间。这种情况下,使用 exp 命令...
### 解决Oracle导出DMP文件空表导不出问题 #### 背景与问题描述 在使用Oracle数据库的过程中,可能会遇到一个常见的问题:当尝试使用工具如PL/SQL Developer导出包含空表的DMP文件时,这些空表无法被正确地导出。...
在Oracle 11g及以上版本中,用户可能会遇到在尝试导出空表时失败的问题,主要表现为出现"EXP-00011: table 不存在"的错误信息。这个问题是由于Oracle的一种优化策略,即在11g版本以后,默认情况下,新建的表不会立即...
**问题二:Oracle 11g空表导不出来** Oracle 11g引入了一个新特性,即当表为空时不分配segment以节省空间。这可能导致在尝试导出空表时出现问题,影响数据的实用性。 解决这个问题,可以通过设置`deferred_segment...