步骤一:
首先打开sqldeveloper连接上需要导出的oracle数据库,sqldeveloper是图形客户端工具,没有的可以直接使用sqlplus连接查询。连接上之后,主要查询user_tables表,num_rows为0或为空的表。如图所示的方法,是在查询出空表的情况下,同时拼接上alter table语句来修改默认没有分配表空间的语句,这个语句用来后面执行使用。
查询空表语句
SELECT 'alter table '||table_name||' allocate extent;' FROM user_tables WHERE num_rows=0 or num_rows is null;
步骤二:
将上一步查询出来的结果语句直接复制,然后再放到sql窗口中执行,其实就是给空白强制修改user_tables里对应空表的segment_created字段为YES,如下图:
![ac7668be1c1de5ac2e98f3ae484e370e.png](https://i-blog.csdnimg.cn/blog_migrate/af342a5dac99825ba9d6c3b2c5d72d24.jpeg)
步骤三:
修改完成之后再次查询segment_created的状态,此时原本空行的表都变成了YES值,这样使用exp命令导出的时候,这些同样为空行的表也会被导出
语句
SELECT table_name,segment_created FROMuser_tables WHERE num_rows=0 or num_rows is null;
![3fe97ca5fa4a14b303fa3eccd7558cc8.png](https://i-blog.csdnimg.cn/blog_migrate/3a7531b70a4e94cebc85625b583e3882.jpeg)
步骤四:
数据库备份导出
exp 用户名/密码@orcl file=E:XXX.dmp owner=用户名 buffer=6000
导入
imp 用户名/密码@ORCL file=C:gdyt_20190822.dmp full=y ignore=y