Oracle 备份

    这段时间一直在摸索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后取消了,应用此参数是提示参数无效。

 

 

 

 

 

 

你可能感兴趣的:(oracle)