11G中有个新特性,当表无数据时,不分配segment,以节省空间

  解决方法:

  1、insert一行,再rollback就产生segment了。

  该方法是在在空表中插入数据,再删除,则产生segment。导出时则可导出空表。

  2、设置deferred_segment_creation 参数

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

 

  该参数值默认是TRUE,当改为FALSE时,无论是空表还是非空表,都分配segment。

  需注意的是:该值设置后对以前导入的空表不产生作用,仍不能导出,只能对后面新增的表产生作用。如需导出之前的空表,只能用第一种方法。

搞了我好久,最后查到这个方法。

先查询一下当前用户下的所有空表

select table_name from user_tables where NUM_ROWS=0;

用以下这句查找空表

select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0

把查询结果导出,执行导出的语句

'ALTERTABLE'||TABLE_NAME||'ALLOCATEEXTENT;'
-----------------------------------------------------------
alter table AQ$_AQ$_MEM_MC_H allocate extent;
alter table AQ$_AQ$_MEM_MC_G allocate extent;
alter table AQ$_AQ$_MEM_MC_I allocate extent;
alter table AQ$_AQ_PROP_TABLE_T allocate extent;
alter table AQ$_AQ_PROP_TABLE_H allocate extent;
alter table AQ$_AQ_PROP_TABLE_G allocate extent;
alter table AQ$_AQ_PROP_TABLE_I allocate extent;
alter table AQ$_KUPC$DATAPUMP_QUETAB_T allocate extent;
alter table AQ$_KUPC$DATAPUMP_QUETAB_H allocate extent;
alter table AQ$_KUPC$DATAPUMP_QUETAB_G allocate extent;
alter table AQ$_KUPC$DATAPUMP_QUETAB_I allocate extent;

'ALTERTABLE'||TABLE_NAME||'ALLOCATEEXTENT;'
-----------------------------------------------------------
alter table AQ$_SYS$SERVICE_METRICS_TAB_T allocate extent;
alter table AQ$_SYS$SERVICE_METRICS_TAB_H allocate extent;
alter table AQ$_SYS$SERVICE_METRICS_TAB_G allocate extent;
alter table AQ$_SYS$SERVICE_METRICS_TAB_I allocate extent;

然后再执行

exp 用户名/密码@数据库名 file=/home/oracle/exp.dmp log=/home/oracle/exp_smsrun.log

  成功!

转自:https://www.cnblogs.com/wangzhuxing/p/6474689.html

第二篇,带图解决同样的问题

使用过oralce很多种导入导出的方式,pde,sql(导出不支持blog格式),dmp格式,觉得.dmp最为方便,可以导出所有的表结构、数据、SEQ及存储过程等,下面就开始具体流程,并说明到如果表中没有数据时如何导入。

导入导出.dmp命令,在cmd窗口执行,其中file为存储位置:

imp 用户名/密码@网络服务名 file=xxx.dmp full=y
exp 用户名/密码@网络服务名 file=xxx.dmp tables=(表名);
exp 用户名/密码@网络服务名 file=xxx.dmp owner=(用户名1,用户名2);
使用dba权限导入imp '用户名/密码@网络服务名 as sysdba' file=XXX.dmp full=y
数据库中共有两张表,一张表有数据,一张表没有数据:

具体导出命令,可以清楚的看到只导出了有数据的一张表,没有数据的没有导出:

在实际情况中,并不希望出现这样的情况,希望导出并导入所有的表和数据及其它,具体操作如下:

第一步:

第二步:将执行出来的alter语句在sql窗口中执行

第三步,查询状态,SEGMENT_CREATED为YES:

从下图中可以看出, 这次导出的是两张表,没有数据的表后面显示了0条数据:

导入表及数据:

转自:https://blog.csdn.net/lyy176/article/details/79565690

最新文章

  1. 关于MapReduce中自定义Combine类(一)
  2. jquery 文本/html/值
  3. jsp学习---css基础知识学习,float,position,padding,div,margin
  4. CUDA入门1
  5. IIS6下PHP环境的资源未找到(404)问题
  6. Hadoop集群(第5期)_Hadoop安装配置
  7. JavaScript 实现触点式弹出菜单插件
  8. matlab画棋盘格程序
  9. 微信内置浏览器私有接口WinXinJsBridge介绍
  10. Codeforces Round #345(Div. 2)-651A.水题 651B.。。。 651C.去重操作 真是让人头大
  11. js重点--闭包
  12. tensorflow实现基于LSTM的文本分类方法
  13. Get Set的问题解决
  14. [Luogu 3787] 冰精冻西瓜
  15. vue系列之Vue-cli
  16. cocos2d-x游戏引擎核心(3.x)----事件分发机制之事件从(android,ios,desktop)系统传到cocos2dx的过程浅析
  17. Flyway Overview and Installation
  18. 第5月第27天 cocos2d
  19. MAC下安装npm和node
  20. myeclipse 保存失败

热门文章

  1. Maven的作用
  2. Selenium3+python自动化016-多线程
  3. ES6实现图片切换特效
  4. react-native构建基本页面3---路由配置
  5. Jmeter-第三方插件安装
  6. sift代码实现详解
  7. Real-time Compressive Tracking
  8. C++——继承与派生
  9. python笔记-02
  10. mysql远程链接(可以在服务器上配置然后在本地连接远程服务器)