原来oracle备份一直跟mysql一样导出sql语句,最近发现有新方法,尝试了下,跟住时代潮流。其实oracle的备份方法挺多的:
Oracle备份分成物理备份与逻辑备份。
物理备份: 把实际物理文件从一处拷贝到另一处(可能是原样拷贝,也可能经过压缩), 操作系统备份,使用RMAN的备份,冷备份,热备份。
逻辑备份: 利用SQL从数据库中提取数据,并将其保存到文件中,这些数据可以在以后需求时重新导入数据库,或者导入其他数据库。Oracle提供EXP, IMP, EXPDP, IMPDP工具。
该命令不会在操作系统创建真正的目录,最好以system等管理员创建。
create or replace directory dump as 'd:\test\dump';
默认DATA_PUMP_DIR,所在目录C:\app\Administrator\admin\orcl\dpdump\
同时查看操作系统是否存在,因为Oracle并不关心该目录是否存在,如果不存在,则出错
select * from dba_directories;
grant read,write on directory dump to jgs;
有时候导出会出错,说找到不到日志之类的,这个时候在最后面加上cluster=n,如下:
expdp\"/ as sysdba\" directory=dumpdir dumpfile=user1.dmp schemas=jgs cluster=n;
1)导到指定用户下
impdp system/admin@orcl DUMPFILE=scott.dmp REMAP_SCHEMA=scott:scott2; (加上一直出错?DIRECTORY=DATA_PUMP_DIR)
对于后面的scott2,系统中可以有也可以没有,如果没有系统会自动建立这个用户。
2)改变表的owner
impdp system/manager DIRECTORY=DATA_PUMP_DIR DUMPFILE=expdp.dmp TABLES=scott.dept REMAP_SCHEMA=scott:system;
3)导入表空间
impdp system/manager DIRECTORY=DATA_PUMP_DIR DUMPFILE=tablespace.dmp TABLESPACES=example;
4)导入数据库
impdb system/manager DIRECTORY=DATA_PUMP_DIR DUMPFILE=full.dmp FULL=y;
5)追加数据
impdp system/manager DIRECTORY=DATA_PUMP_DIR DUMPFILE=expdp.dmp SCHEMAS=system TABLE_EXISTS_ACTION=append;
导入到普通数据库
impdp jgs/123 directory=dump dumpfile=xxx.dmp REMAP_SCHEMA=xxx:xxx3 full=y;
导入到系统数据库
impdp \"/ as sysdba\" directory=dump dumpfile=xxx.dmp REMAP_SCHEMA=xxx:xxx2 full=y;
自己常用的就是用户导入,下面几句:
//准备
create or replace directory dump as 'C:\app\xcy\oradata';
grant read,write on directory dump to sde;
//导出,第一句不行用第二句
expdp sde/123@xcy schemas=sde dumpfile=sde.dmp directory=dump;
expdp sde/123@xcy schemas=sde dumpfile=sde.dmp directory=dump cluster=n;
//导入
impdp sde/123@orcl directory=dump dumpfile=sde.dmp remap_schema=sde:sde