Oracle 11g 使用exp命令 导出空表

php中文网
发布: 2016-06-07 17:33:14
原创
1058人浏览过

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

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、可以使用手工为空表分配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]  DATAFILE 'filename')
    ALLOCATE EXTENT(SIZE integer [K | M]  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命令,,


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

微撰
微撰

AI智能写作平台

微撰 207
查看详情 微撰

  -----------
  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语句。

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

  执行C:\allocate.sql,命令如下:
  -----------
  SQL>@ C:\allocate.sql;
  -----------
 
  执行完毕,表已更改。

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

相关阅读:

Linux平台下的Oracle自动备份案例(使用exp工具) 

exp/IMP迁移数据库的时候注释乱码解决方法

Linux下导出数据库dmp文件时exp-00091错误

浅谈Oracle的exp备份问题

EXP/IMP迁移数据

linux

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号