欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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 深夜

 

相关标签: 数据库相关