Oracle11g导出空表

Oracle11g 在使用 exp导出数据时会出现空表不能导出的问题,这是因为:1Oracle11g默认对空表不分配 segment,故使用exp 导出Oracle11g 数据库时,空表不

会导出。
2、默认设置deferred_segment_creation参数为 TRUE,空表不分配segment处理方法:

sqlplus中,执行如下命令:

SQL>alter system set deferred_segment_creation=false;

查看:

SQL>show parameter deferred_segment_creation;

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

3、可以使用手工为空表分配Extent 的方式,来解决导出之前建立的空表的问题。说明如下:

3.1 使用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]ALLOCATE EXTENT(SIZE integer [K | M]

针对数据表操作的完整语法如下:

DATAFILE 'filename')INSTANCE integer)

-----------
ALTER TABLE [schema.]table_name ALLOCATE EXTENT [({ SIZE integer [K | M] |

DATAFILE 'filename' | INSTANCE integer})]-----------

故,需要构建如下样子简单的 SQL 命令:

-----------
alter table aTabelName allocate extent-----------

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

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

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

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

-----------

SQL>Select 'alter table '||table_name||' allocate extent;' from user_tables wherenum_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

3.4 执行SQL 命令,对空表分配空间:

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

执行完,表已更改


3.4 时执行exp 命令,把包括空表在的所有表,正常导出。

另外:Oracle11g中,对密码是大小写敏感的,即密码中的字母是区大小写的。在Oracle10g 以前,密码中的字母大小写无。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值