ORACLE最简单有效的备份恢复方案

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

ORACLE 最简单有效的备份恢复方案

ORACLE备份分两种,1.逻辑备份;2.物理备份;

逻辑备份又分两种:传统的exp备份;10g开始支持的expdp数据泵备份;

物理备份主要就是RMAN备份;

最基本的原则是:这些逻辑或物理备份和数据库文件必须放在不同的硬盘上;否者一损俱损;备份就没多大意义了;

如果数据库不是很大,比如在50G以下,那么我们就考虑一些傻话化的全备方案

我现在的备份方案是:两个逻辑备份和RMAN 备份全部用上;

1.传统dmp逻辑备份和恢复

1.1传统dmp逻辑备份,这个是最简单的备份方法;

现在我提供一个简单的脚本:

1.1.1首先建立一个bat文件,名字叫:exp_backup.bat

内容是:

set oracle_username=%1

set oracle_password=%2

set local_tnsname=%3

set url=%oracle_username%/%oracle_password%

if not %local_tnsname% == "" set url=%url%@%local_tnsname%

if exist %oracle_username%_old.dmp del %oracle_username%_old.dmp

if exist %oracle_username%_old.log del %oracle_username%_old.log

if exist %oracle_username%.dmp ren %oracle_username%.dmp %oracle_username%_old.dmp

if exist %oracle_username%.log ren %oracle_username%.log %oracle_username%_old.log

exp %url% file=%oracle_username%.DMP log=%oracle_username%.LOG

该脚本是一个通用的最简单的exp脚本;

意思就是:备份之间,把以前的备份文件修改名字,后面加上_old ,如果本来就有old文件,就删除之;之后,

就开始备份;备份的文件目录和该脚本一致(这样做最简单);

所以总是会出现一新一旧两个文件;当然只要最新的就行了,所以理论上只要一份文件;

但是考虑有可能备份的时候突然报错,这样old文件还在,将就着使用,否者新的是坏的,旧的也没了;

有的人做一周7天逻辑循环备份,我觉得没有必要,要那么多旧的备份文件何用,浪费空间;

1.1.2然后再做一个bat文件,比如是my_exp.bat

内容是:

call exp_backup.bat USER PASSWORD ""

如果是在服务器自身上备份,就不需要写入数据库服务名;

如果有多个用户数据需要备份;那么就在my_exp.bat继续添加:

call exp_backup.bat USER1 PASSWORD1 ""

….

My_EXP.BAT可以做成windows的执行计划,每天不忙的时候执行一次;

1.2 exp备份的恢复

下面就是恢复的最简单方法:

1.2.1.把电脑上当前用户彻底删除,用命令,这样就可以把对象彻底清除;

DROP USER XXX CASCADE

1.2.2.再创建该用户

CREATE USER xxxx

IDENTIFIED BY xxxx

DEFAULT TABLESPACE xxxx

TEMPORARY TABLESPACE TEMP

并赋予权限:

GRANT DBA TO xxxx WITH ADMIN OPTION

1.2.3用IMP恢复

C:\> imp xxxx/xxxx FILE=xxxx.DMP LOG=xxxx.LOG FULL=Y

2.10G后的数据泵expdp备份和恢复

2.1 expdp 备份

据说这个比exp有很多优点,这个我就不说了,大家可以自己参考资料;不过我测试下来,如果数据量小expdp 还是不如exp的;但是还是建议是使用expdp,因为数据会慢慢变大的,用expdp更好些;

我最看重的是:expdp备份的文件涵盖的东西更多;所以恢复的时候方便;删除用户后,可以不用再创建用户恢复;

实现方法和exp类似:

不过,它的目录不像EXP那么直接,需要使用oracle的目录对象;

所以

2.1.1第一步先创建一个目录对象,比如:

SQL>create or replace directory LOGIC_BUCKUP

as 'd:\OACLE_BACKUP\逻辑备份';

2.1.2建立一个通用脚本,比如叫EXPDP_BACKUP.BAT

内容是:

set oracle_username=%1

set oracle_password=%2

set local_tnsname=%3

set url=%oracle_username%/%oracle_password%

if not %local_tnsname% == "" set url=%url%@%local_tnsname%

if exist %oracle_username%_old_dump.dmp del %oracle_username%_old_dump.dmp

if exist %oracle_username%_old_dump.log del %oracle_username%_old_dump.log

if exist %oracle_username%_dump.dmp ren %oracle_username%_dump.dmp %oracle_username%_old_dump.dmp

if exist %oracle_username%_dump.log ren %oracle_username%_dump.log %oracle_username%_old_dump.log

EXPDP %url% DIRECTORY=LOGIC_BACKUP DUMPFILE=%oracle_username%_DUMP.DMP LOGFILE=%oracle_username%_DUMP.LOG PARALLEL=2

该方法与上面的dmp备份类似;

2.1.3然后再做一个bat文件,比如是my_expdp.bat

内容是:

call expdp_backup.bat USER PASSWORD ""

如果是在服务器自身上备份,就不需要写入数据库服务名;

如果有多个用户数据需要备份;那么就在my_exp.bat继续添加:

call expdp_backup.bat USER1 PASSWORD1 ""

……

同dmp备份一样,My_EXPdp.BAT也可以做成windows的执行计划,每天不忙的时候执行一次;

2.2 expdp备份的恢复

下面就是恢复的最简单方法:

相关文档
最新文档