1.需求:需要将windows上的10g oracle数据库导入到Linux上的10g Oracle数据库
2.分析:使用exp导出dmp文件后导入到Linux的Oracle中
imp test/test@orcl full=y file=/home/oracle/exp20191017.dmp ignore=y
3.问题:导入后发现导入后的表不全,缺失了十七个表
4.分析TWO:分析日志和表结构发现,这十七个表中都包含有CLOB类型的字段
5.办法:查询后知道imp命令不能导入clob类型的字段,那就换一种新的命令:expdp/impdp
导出步骤:
a.连接Oracle后建立导出目录:注意,这个目录需要手动创建
create directory dir as 'D:\test';
然后查询导出目录列表:
select * from dba_directories;
如果发现重名的dir就删掉重建:
drop directory dir;
然后将此目录的权限授权给test用户:
grant read,write on directory dir to test;
b.然后退出Oracle,在命令行中直接导出:
expdp test/test directory=dir dumpfile=20191104exp.dmp logfile=20191104log.log
这样就可以在D:\test中查看到导出的文件了。
然后我们看导入步骤:
a.前边和导出一样,导入命令:
impdp wl/wl directory=dir dumpfile=20191104EXP.DMP REMAP_SCHEMA=test:wl EXCLUDE=USER
注意:REMAP_SCHEMA=test:wl参数,是导出导入用户名
如果导入时报错:
ORA-39002: invalid operation ORA-39070: Unable to open the log file. ORA-29283: invalid file operation ORA-06512: at "SYS.UTL_FILE", line 536 ORA-29283: invalid file operation
这是linux的目录权限不够,因为执行导入时使用的是Oracle账户,而新建的目录权限时root的权限,我们只需要切回root用户后给予目录授权即可:
chown -R oracle:oinstall /home/oracle/20191104
这样就可以直接导入了。
至于不同版本的Oracle导入导出,下回说。
工作记录:
1.expdp导出: sqlplus /nolog connect /as sysdba create directory dir as 'D:\ziyuan'; select * from dba_directories; drop directory dir; grant read,write on directory dir to ZIYUAN; SELECT SUM(s.BYTES)/1024/1024 "sizes(MB)" from dba_segments s where s.owner= 'ZIYUAN'; select count(*) from dba_tables t where t.owner='ZIYUAN'; oracle下 expdp ZIYUAN/ZIYUAN2015 directory=dir dumpfile=20191104exp.dmp logfile=20191104log.log 2.impdp 导入: create directory dir as '/home/oracle/Desktop'; select * from dba_directories; drop directory dir; grant read,write on directory dir to MBZY; SELECT SUM(s.BYTES)/1024/1024 "sizes(MB)" from dba_segments s where s.owner= 'ZIYUAN'; select count(*) from dba_tables t where t.owner='ZIYUAN'; impdp MBZY/MBZY directory=dir dumpfile=20191104EXP.DMP logfile=20191104log.log impdp MBZY/MBZY directory=dir dumpfile=20191104EXP.DMP REMAP_SCHEMA=ZIYUAN:MBZY EXCLUDE=USER logfile=20191104log.log impdp MBZY/MBZY schemas=certification directory=dir dumpfile=20191104EXP.DMP impdp MBZY/MBZY schemas=ZIYUAN directory=dir dumpfile=20191104EXP.DMP logfile=imp.log IMPDP USERID='SYS/ggoabak10@ggbak10 as sysdba' schemas=ZIYUAN directory=dir dumpfile=20191104EXP.DMP logfile=aa.log version=10.2.0.1.0