解决Oracle11g空表无法导出的问题,oracle11g空表导出
Oracle11g 新增参数deferred_segment_creation ,建库的时候默认值为true,意思是延时加载,当表中不存在数据的时候,不为这个表创建空间,当你导出的时候会发现很多表不存在
使用show parameter deferred deferred_segment_creation; 命令可以查看deferred_segment_creation的值,如果想让空表导出
方法一:像库表中插入值
方法二:1、执行sql修改deferred_segment_creation的值 :alter system set deferred_segment_creation=false;
2、执行sql: select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0;
用pl/sql将结果 ——右键 —— 复制到Excel... 将结果复制到sql窗口中运行 然后就可以导出了
建议你用expdp导出吧 别用oracle 11G 对于空表默认是不分配段的,所以用exp导出的时候就没有导出。用法参照help,网上一大把命令。
使用expdp要先在数据库中创建directory,并给相应的用户read,write权限.
SQL>create directory dmpdir as '/u01/dmdir';
SQL>grant read,write on directory to system;
expdp system/pw schemas=test directory=dmpdir dumpfile=test_1.dmp,test-2t.dmp logfile=exp-2012-11-testt.log exclude=STATISTICS parallel=2
可以并行导出
1 将数据库TEST完全导出,用户名system 密码manager 导出到D:\daochu.dmp中
exp system/manager@TEST file=d:\daochu.dmp full=y
2 将数据库中system用户与sys用户的表导出
exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys)