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