Oracle导出的数据库,再导入部分表未导出 或Oracle空表导出失败

像遇到特殊情况下的加班,加班内容又不多,有不想来公司的情况下,想导一个库到本地上,然后会宿舍继续加班,像遇到疫情这样的情况,大多数都是将导入本地库啦,之前还是刚刚入职的时候导库导的不完整,后面百度了一下,也明白了这个,现在记录一下,以后就不会错了。主要原因是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/TestDB@ORCL 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/TestDB@ORCL file=D:\测试\testDB.dmp full=y ignore=y

 

 

                                                         

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值