Oracle导出的数据库,再导入部分表未导出 或Oracle空表导出失败
程序员文章站
2022-05-29 16:49:00
...
像遇到特殊情况下的加班,加班内容又不多,有不想来公司的情况下,想导一个库到本地上,然后会宿舍继续加班,像遇到疫情这样的情况,大多数都是将导入本地库啦,之前还是刚刚入职的时候导库导的不完整,后面百度了一下,也明白了这个,现在记录一下,以后就不会错了。主要原因是Oracle11G的新特性导致的,我们重新设置即可,也简单。该导库以及导入的全过程是由CMD进行操作即可。如果导入失败可以对需要导入库的所有旧表进行手工删除(建议先对需要删除数据库的先备份先)。
第一步:设置空表对应的设置
导出空表时设置对应的segment(11G新特性,当表无数据时,不分配segment,以节省空间) 。
所以执行第一句语句:空表分配segment,
然后再执行第二句语句:将第二句的查询结果,复制出来,全部执行一遍,目的是保证空表能通过CMD导出。
alter system set deferred_segment_creation=false scope=both;
select 'alter table '||table_name||' allocate extent;' from user_tables;
第二步:导出数据
语法:
exp 用户名/密码@ROCL file=数据库地址+数据库名称.dmp owner=(用户名称)
例子:
exp TestDB/[email protected] file=D:\测试\TestDB.dmp owner=(TestDB)
第三步:导入数据
语法:
imp 用户名/密码@ROCL file=导出位置+数据库名称.dmp full=y ignore=y
解释说明:
full=y:( 全库导出): 导出除ORDSYS,MDSYS,CTXSYS,ORDPLUGINS,LBACSYS 这些系统用户之外的所有用户的数据.
ignore=y: 表示忽略创建错误,继续后面的操作
例子:
imp TestDB/[email protected] file=D:\测试\testDB.dmp full=y ignore=y
遇到最好的自己,不卑不亢-------------------2020-03-21 深夜
上一篇: ETL学习笔记之一 概念篇(转)
下一篇: mac下,升级mysql遇到的问题总结