Oracle从服务器上导出的数据库,在导入到另外一个服务器的数据库时会出现不同的错误,最常见的两个错误解决方案如下:
1. 导出的数据库文件,在导入到另外一个数据库服务器时出现版本错误,通过notepad++打开需要导入的.dmp文件,查看当前电脑上的oracle版本号,将.dmp文件首行的版本号修改一致即可导入成功
2.导出的数据库文件出现空表时,在导入时报找不到表和视图错误,解决方案:通过在原数据库中执行语句:
select 'alter table '||table_name||' allocate extent(size 64k);' from tabs t where not exists (select segment_name from user_segments s where s.segment_name=t.table_name);
查出记录为0 的表,并拼凑好修改sql,如下:
全选查询结果复制 粘贴 plsql 执行。
(给空表分配空间)
alter table LC_DA_LOADOFLINE allocate extent(size 64k);
alter table LC_DA_LINELOSS allocate extent(size 64k);
alter table LC_DA_ALARMINFO allocate extent(size 64k);
alter table LC_DA_ALARMHINTED allocate extent(size 64k);
alter table LC_DA_ALARMDETAIL allocate extent(size 64k);
alter table LC_AR_TERMINALTIME allocate extent(size 64k);
alter table FE_WRITESECT allocate extent(size 64k);
alter table FE_COLLECTMETERNUM allocate extent(size 64k);
alter table AR_POWERFILE_HIS allocate extent(size 64k);
alter table AR_CUSTOMERADDINFO allocate extent(size 64k);
alter table PS_POWERTRANSFORMER_HIS allocate extent(size 64k);
alter table PBCATVLD allocate extent(size 64k);
alter table PBCATTBL allocate extent(size 64k);
alter table PBCATCOL allocate extent(size 64k);
alter table MS_TEST_SJH allocate extent(size 64k);
alter table MS_TEMP_SESSIONNUM allocate extent(size 64k);
alter table MS_COMMONDATA_LDCK_HIS allocate extent(size 64k);
然后再执行exp命令导出数据库文件,即可。
将导出的文件在重新导入到另一个数据库服务器中。
--删除用户(需要登录超级管理员)
drop user qypsrsstest cascade;
--创建用户
create user qypsrsstest identified by qypsrsstest123 default tablespace qypsrss temporary tablespace temp;
-- 为用户授权
grant connect,dba to qypsrsstest;
--导入数据库
imp qypsrsstest/qypsrsstest123@orcl fromuser=qypsrss touser=qypsrsstest file=D:\qypsrss.dmp
--导出数据库
exp qypsrss/qypsrss123@dicpsi file=D:\qypsrss.dmp owner=qypsrss log=D:\qypsrss.log