进入博客园已经两年多了,每次想写点什么,都是给自己个各种借口,不了了之~今天就从Oracle数据库最长用的导入开始吧!
1、低版本的exp/imp可以连接到高版本(或同版本)的数据库服务器,比如:10G server备份的文件ExtDat.dmp,可以随意的通过11G client 导入;
2、高版本的exp/imp不能连接到低版本的数据库服务器,比如:11G server 备份的ExtData.dmp不能在10G以下导入;
a、高版本的Oracle到低版本的导入,可以通过低版本客户端连接数据库到高版本数据库备份导入,比如10G client连接11G server备份ExtData.dmp,然后10G client连接10G server 导入ExtData.dmp.
b、当只有11G server备份的ExtData.dmp文件时,可以通过UEEdite工具找到备份server Oracle版本号修改为当前低版本Oracle Server 版本号。
IMP和EXP命令方式冷备份和恢复数据,我认为使用数据泵方式比较安全,具体格式如下:
EXP: expdp 登录用户名/密码@本地服务名(如果是在oracle服务所在机器上操作可省略) directory=oracle目录对象名(Oracle中定义的,一般用Oracle预定义的“data_pump_dir”即可,其对应的服务器文件系统文件夹为 安装目录\admin\orcl\dpdump) dumpfile=备份文件的名称(此文件会存到“oracle目录对象名”对应的文件夹中) schemas=需要导出的架构(指定为需要导出的用户的用户名即可)
IMP: impdp 登录用户名/密码@本地服务名(如果是在oracle服务所在机器上操作可省略) directory=oracle目录对象名(Oracle中定义的,一般用Oracle预定义的“data_pump_dir”即可,其对应的服务器文件系统文件夹为 安装目录\admin\orcl\dpdump) dumpfile=备份文件的名称(此文件需在“oracle目录对象名”对应的文件夹中) schemas=需要导入的架构(备份文件中存在的用户名) remap_schema=源架构(schemas指定的"需要导入的架构"):目的架构(目的用户名,该用户会自动创建) remap_tablespace=源表空间(备份文件中存在的表空间):目的表空间(oracle实例中已存在的某个表空间,可以先创建一个)
例如: impdp system/123@orac directory=data_pump_dir dumpfile=ExtData.DMP schemas=sourceName remap_schema=sourceName:target remap_tablespace=sourceTablespace:targetTablespace;其中源库的用户名为sourceName ,表空间为sourceTablespace,新建库的用户名为target,表空间为targetTablespace。新库上的target用户会自动创建,用户口令为target。在执行命令前要先手工创建好targetTablespace表空间。
注意:当不知道当前DMP文件schema的时候,直接把ExtData.DMP文件放入~\Administrator\admin\orcl\dpdump(使用impdp导入文件时的默认目录),然后在终端里面运行impdp命令,输入数据库的用户名和密码即可实现导入,然后在把导入的表整理归类,授权之类。基本上就不会出现如下错误,当然在导入到处文件中出现异常,基本可以用如上方法解决。最常报错如下: