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

其他范文 时间:2020-02-28 17:46:06 收藏本文下载本文
【www.daodoc.com - 其他范文】

ORACLE最简单有效的备份恢复方案由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“oracle备份与恢复方案”。

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_paword=%2 set local_tnsname=%3 set url=%oracle_username%/%oracle_paword% 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_paword=%2 set local_tnsname=%3 set url=%oracle_username%/%oracle_paword% 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备份的恢复

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

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

DROP USER XXXX CASCADE

2.2.2.用另外一个权限较高的用户(最好不是sys,比如是YYYY)导入:

C:>IMPDP yyyy/yyyy DUMPFILE=xxxx_DUMP.DMP LOGFILE=xxxx_DUMP.LOG DIRECTORY=LOGIC_BUCKUP PARALLEL=2

(这里的LOGIC_BUCKUP是oracle的对象目录,要和xxxx_dump.dup存放的目录一致)

这样就OK了,也即是说用户不需要创建,数据泵文件含有了用户以及它原来的权限; 从这点来讲,是不是比IMP导入更为方便;

好了,两种逻辑备份讲完了,下面重点说一下RMAN备份;

因为在生产系统中,逻辑备份作用不大的,因为它不能实时的备份数据,所以逻辑备份更多的时候是给开发人员互相导入数据和存储过程之类用的;

RMAN备份的原理还是有点复杂的,很多细节的我也不是很清楚,不过没关系,我们可以整理出一套最简单的备份方案:

3.RMAN备份和恢复

3.1.RMAN备份

3.1.1 首先把数据库参数关注一下,关注下面两个参数

第一个参数:

db_recovery_file_dest_size,上图中的大小是默认的4G,也就是归档模式下,archivelog的所有归档日志文件大小总和,如果超过这个数,就会导致数据库出问题;所以要非常小心,因而建议修改大一些,比如修改成20G;当然最本质的方法,是要按时清理无用的归档日志;

第二个参数:

db_recovery_file_dest,这个参数非常重要,是11G里,存放 rman备份集和归档日志的地方;默认是放在flash_recovery_area目录下的,因为我的系统的flash_recovery_area 和数据库文件在同一个硬盘,所以修改了;

3.1.2.关注redo日志文件,每组里要有两个成员,1个在数据库文件的硬盘下,1个在备份文件的硬盘下,因为日志文件写入最频繁,RMAN无法对它备份,或者说任何备份工具都无法对redo日志备份;不过redo它自己可以做冗余,两个文件只要有一个在,即可; 比如:

3.1.3做一个最简单的rman备份脚本;

3.1.3.1首先做一个txt,比如是:autorman.txt 内容是:

sql 'alter system archive log current';backup database;delete noprompt obsolete;

这三句话的作用分别是:1.对当前redo日志进行归档 ;2.备份数据库 3.删除无效的archive日志和rman备份集

3.1.3.2 做一个bat 调用上面的autorman.txt,比如是:autorman.bat

内容是: rman target / @autorman.txt

然后就在winddows下做一个执行计划,每天或没隔几天,自动执行一下这个autorman.bat

当然备份之前,要用rman>show all 看一下参数设置,有没有自动备份控制文件,如果没有,要加上;

3.2 rman恢复

Rman恢复非常简单;

下面说一下步骤:

3.2.1 假如最新一次全备是3天前的,先随便建立一个新表,比如是test_rman,随便插几条数据; 用来测试还原后,这个最新的对象是否也给恢复了;

现在 用sqlplus登陆,shutdown 数据库,然后把oracle的数据库文件全部删除(控制文件,redo日志文件,数据库文件);

3.2.2 用sql> startup nomount 启动数据库的参数文件,参数文件和数据库文件不在同一个硬盘,所以没丢;

这时候如果执行sql>alter database mount 会报错,因为mount会加载控制文件,而控制文件已经丢了;

3.3.3.把以前控制文件所在的目录建立好,否者rman找不到控制文件恢复路径;

然后执行 RMAN> restore controlfile from autobackup;

这样控制文件就回复了,有了控制文件就好办了;

3.2.4.以为有了控制文件,所以在sqlplus里,可以装载数据库

Sql>alter database mount

3.2.5 数据库被装载后,说明控制文件生效了,这时候,所有的数据库信息都出来了;所以可以用rman还原数据库了:

RMAN> RESTORE database;

3.2.6 恢复数据库:RMAN> recover database;

2.2.7 数据库现在已经全部回复好,可以重新启动了:

SQL> alter database open resetlogs;

数据库已更改。

2.2.8 执行 sql> select * from test_rman

;能看到数据,说明rman备份集即使是比较旧的,但照样能恢复到出故障时刻的那个状态,这也许就是RMAN的威力吧;

ORACLE数据备份与数据恢复方案

ORACLE数据备份与数据恢复方案摘 要结合金华电信IT系统目前正在实施的备份与恢复策略,重点介绍电信业务计算机管理系统(简称97系统)和营销支撑系统的ORALCE数据库备份和恢复......

ORACLE数据备份与数据恢复方案论文.

ORACLE 数据备份与数据恢复方案 学号: 11129149 姓名:文明艺 1 引 言目前, 数据已成为信息系统的基础核心和重要资源, 同时也是各单位的宝贵财富, 数据 的丢失将导致直接经......

Oracle数据库备份和恢复论文

摘要:本文从Oracle的体系结构开始,由原理到实践,论述了Oracle数据库备份的方式和策略。包括IMp/EXp, RMAN,OS备份等。Abstract: Starting from the architecture of ORACLE, this......

ORACLE备份解决方案

ORACLE备份解决方案2009年09月16日 星期三 14:00 Oracle数据库有三种标准的备份方法,它们分别是导出/导入(EXP/IMP)、热备份和冷备份。导出备件是一种逻辑备份,冷备份和热备份是......

NBU备份恢复方案

数据备份方案SYMANTEC NetBackup(NBU)简介SYMANTEC NetBackup软件是一个功能强大的企业级数据备份管理软件,它为UNIX、Windows和Netware混合环境提供了完整的数据保护机制,具有......

下载ORACLE最简单有效的备份恢复方案word格式文档
下载ORACLE最简单有效的备份恢复方案.doc
将本文档下载到自己电脑,方便修改和收藏。
点此处下载文档

文档为doc格式

热门文章
点击下载本文