在将oracle 11g的数据库导出并导入到oracle 10g中的步骤:
1、由于版本兼容的原因,11g的数据导入到10g中不能用imp/exp命令,应该用数据泵即是impdp/expdp命令。
2、首先把数据从11g中倒出来用expdp命令,expdp命令不支持直接在命令中指定绝对路径的方式,所以要先创建 directory并授权,directory是指定转储文件和日志文件所在的目录, 创建命令是:
create directory dir_dp as 'D:\oracle\dir_dp';
我理解上面的命令的意思是为D:\oracle\dir_dp路径取别名dir_dp。
为创建的directory授权,命令是:
Grant read,write on directory dir_dp to lttfm;
上面命令的意思是:给用户lttfm授予对dir_dp读写的权限。
创建完命令后进行导出,命令是:
expdp lttfm/lttfm@orcl directory=dir_dp dumpfile =test.dmp version=10.2.0.1;
version指定将导入到的10g数据库的版本号。执行完命令后.dmp文件和导出日志文件在directory指定的路径中。
注:导出时如果遇到下图的错误可能是当前用户没有导出权限造成的,此时可执行此命令为用户授权。命令是:GRANT EXECUTE ON SYS.DBMS_DEFER_IMPORT_INTERNAL TO <user_name>;
GRANT EXECUTE ON SYS.DBMS_EXPORT_EXTENSION TO <user_name>;
3、将导出的dmp文件导入到oracle 10g中。
首先创建表空间和用户,创建表空间命令:
create tablespace TEST
datafile 'E:/test/TEST_TBSPACE.dbf'
size 5000M
autoextend on next 5M maxsize 10000M;
创建用户,命令:
create user test identified by test;
授权命令:
grant connect,resource to test;
grant create session,dba to test;
将dmp文件放入directory指定的路径中,执行导入命令:
impdp test/test directory=dir_dp dumpfile=test.dmp version=10.2.0.1 REMAP_SCHEMA=lttfm:test;
REMAP_SCHEMA=lttfm:test 冒号前面的为导出时的用户名即11g的用户名,冒号后面的为导入时的用户名即10g的用户名。