ORACLE最简单有效的备份恢复方案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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备份的恢复
下面就是恢复的最简单方法: