一、问题复现
我本地通过dmp导出自己测试用户下的所有表:
但是我们通过视图查看用户tpc下面,实际有18张表:
sql> r 1* select table_name from user_tables table_name ------------------------------ t_user tpc_tab1 t_code frm_menu ptm_equipbus_vioref vio_violation_other vio_surveil vio_force vio_violation ptm_equiprecord ptm_equipbus_vio ptm_alc_detec ptm_police frm_detachment t_object t_login_log t_hps frm_department 18 rows selected. sql>
这个导出明显存在问题。
二、问题分析
在oracle 11g中,我们创建表后,如表中未写入数据,表默认是不分配段(segment)的,而我们的exp导出是不导出未分配segment的表的。
验证:我们查看下用户表段信息
sql> r 1* select segment_name,bytes from user_segments where segment_name not like 'bin%' and segment_type='table' segment_name bytes ------------------------------------------------------------ ---------- frm_department 917504 t_object 14680064 t_user 65536 t_login_log 65536 t_hps 7340032 frm_detachment 65536 ptm_police 10485760 ptm_equipbus_vio 65536 ptm_equipbus_vioref 65536 vio_force 65536 t_code 65536 frm_menu 65536 12 rows selected. sql>
可以看到,没看到未导出的表的段信息。
三、问题解决
我们通过手动给未分配段的表进行空间申请,让其产生段信息。
首先,生成脚本:
接着,执行脚本:
最后导出测试,发现所有表都导出。
到此这篇关于oracle 11g中exp无法导出空表问题的快速解决方法的文章就介绍到这了,更多相关oracle 11g exp无法导出空表内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论