exp/imp可在以下情况下使用
两个数据库之间传送数据
1.同一个oracle数据库的版本之间
2.不同oracle数据库的版本之间
3.相同或不相同的操作系统之间的oracle数据库
用于数据库的备份与恢复
从一个数据库用户传送到另一个用户中
从一个表空间传送到另一个表空间中
创建一个表空间
create tablespace bank_tbs(数据库表空间) datafile '/oracle/test(数据路径) bank_data02.dbf(数据文件名)' size 5M autoextend on maxsize 10G;
创建用户时指定表空间
create user bankuser identified by bankpwd default tablespace bank_tbs;
使用export导出数据
exp bankuser/bankpwd file='/backup/bankuser.dmp' log='/backup/bankuserExp.log' 格式为exp 用户名/密码 file=导出路径及文件名称
使用import导入数据
imp bankuser/bankpwd file=/backup/bankuser.dmp full=y 注意后面这个full=y,这是指全部导入,也可以指定某个表的表名
为了有明显效果,我们可以先用bankuser用户创建一个表,然后exp,接着进入sqlplus删掉这个表,最后imp就会发现数据库恢复了
如果是在windows环境的话,貌似还需要在用户名/密码后面加上@数据库名及ORACLE_SID
使用另一种方法expdp实现备份数据库
首先在sqlplus中执行,使用sysdba登录,因为涉及到grant权限
create or replace directory expdp_dir as '/home/oracle/expdp_dir';
grant read,write on directory to dbauser;
退出sqlplus,进入oracle家目录
创建文件夹
mkdir expdp_dir
修改权限
chmod 777 expdp_dir
导出数据
expdp dbauser/123456 directory=expdp_dir(这里不再需要使用绝对路径) dumpfile=backuptest.dmp logfile=backuptestlog.log
导入数据
impdp dbauser/123456 directory=expdp_dir(这里不再需要使用绝对路径) dumpfile=backuptest.dmp logfile=backuptestlog.log
也可以把参数写入到配置文件中
[oracle@localhost ~]$ cat impdp.par
userid='/ as sysdba'
fromuser=czwdm
touser=czwdm
file=/home/oracle/FACTINFO.dmp
log=impdp.log
tables=FACTINFO
[oracle@localhost ~]$
然后直接执行
impdp parfile=impdp.par(执行之后,报ora-39143错误,所以改用下面的命令)
或者
imp parfile=impdp.par