这段时间一直在摸索Oracle的数据库的备份,比起Sqlserver,Oracle数据库备份要复杂的多,功能也强大的多。查找了网上的一些资料,网 上介绍oracle备份方法有多种,有导出/导入(exp/imp)、冷备份、热备份、数据泵(expdp/impdp)、rman备份(据说是 oracle官方推荐)。我只是实践了导出/导入、数据泵。数据泵也是导出/导入的一种,这是10g开始,推荐的和导入导出方法。oracle导出/导入 备份方式很强大,支持全库、按用户、按表、按表空间导入导出,按用户、按表这些方式,需要自己先创建新库后,手工建好跟源库相同的用户、表空间、分配好用户权限等,相对而言有点工作量,下面我只介绍全库导入导出的备份。
1.数据泵(expdp/impdp)的导入导出应用
================================================================
== 数据泵导出数据
================================================================
1).创建目录d:\dump
2).登陆sqlplus sys/sys as sysdba
3).创建directory
create directory dump_dir as 'd:\dump';
4).付于system权限
grant read,write on directory dump_dir to system;
5).导出数据
$expdp system/sys directory=dump_dir dumpfile=db.dmp full=y;
================================================================
== 数据泵导入数据
================================================================
1).创建跟源数据库相同安装路径的一个库
2).创建目录d:\dump
3).把dmp拷贝到d:\dump;
4).新建跟原库同一存放路径的新库
5).登陆sqlplus sys/sys as sysdba
6).创建directory
create directory dump_dir as 'd:\dump';
7).付于system权限
grant read,write on directory dump_dir to system;
8).导入
$impdp system/sys directory=dump_dir dumpfile=db.dmp full=y;
2.以下是我写的一个批处理脚本。用于计划任务,定时备份。
@echo off rem ============================================================== rem expdpOracle rem rem oracle 数据泵备份方法,使用此批处理需准备 rem 1.创建备份目录:-- d:\dump rem 2.创建directory -- create directory dump_dir as 'd:\dump'; rem 3.付于system用户对dump_dir操作权限 -- grant read,write on directory dump_dir to system; rem 4.请确认winrar的安装路径 rem rem Author: liuq rem Time: 2012-12-20 rem ============================================================== rem set BAKDATE=%Date:~0,4%%Date:~5,2%%Date:~8,2% set HHMMSS=%time:~1,1%%time:~3,2%%time:~6,2% set BAKFILE=expdp_%BAKDATE%%HHMMSS%.dmp set LOGFILE=expdp_%BAKDATE%%HHMMSS%.log echo ********************************************************************* echo begin expdp database .... echo dump file ... %BAKFILE% echo log file ... %LOGFILE% expdp system/oracle@DTMOS directory=dump_dir full=y dumpfile=%BAKFILE% logfile=%LOGFILE% echo ********************************************************************* echo begin rar dump file... set BAKDIR=d:\dump set WINRAR=C:\progra~1\WinRAR echo rar file .. %BAKDIR%\%BAKDATE%%HHMMSS%_bak.rar %WINRAR%\rar a %BAKDIR%\%BAKDATE%%HHMMSS%_bak.rar %BAKDIR%\%BAKFILE% %BAKDIR%\%LOGFILE% echo ********************************************************************* echo del dump file .... del /f /s /q %BAKDIR%\%BAKFILE% %BAKDIR%\%LOGFILE% echo ********************************************************************* echo Successfully Completed! exit
3.导入导出(exp/imp)
================================================================
== exp导出数据
================================================================
1). exp system/sys@test file = D:\BACK0220.dmp log=d:\exp_dtmos_log_0220.log FULL=Y
================================================================
== imp 导入数据
================================================================
1).创建跟源数据库相同安装路径的一个库
2).imp system/sys@test file = D:\BACK0220.dmp log=d:\imp_dtmos_log_0220.log ignore=y FULL=Y
3. 注:导完后,日志文件会存在很多警告信息,关于系统对象存在警告,此类警告应不存问题,如果表之间存在外键关随,数据导入导出可能会存在问题。具体我也没测试过。
4.查看imp/exp 参数 imp/exp help=y
5.10g以前的inctype参数(增量导入导出)在10g后取消了,应用此参数是提示参数无效。