oracle的备份和恢复.docx

上传人:b****5 文档编号:6858295 上传时间:2023-01-11 格式:DOCX 页数:14 大小:22.43KB
下载 相关 举报
oracle的备份和恢复.docx_第1页
第1页 / 共14页
oracle的备份和恢复.docx_第2页
第2页 / 共14页
oracle的备份和恢复.docx_第3页
第3页 / 共14页
oracle的备份和恢复.docx_第4页
第4页 / 共14页
oracle的备份和恢复.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

oracle的备份和恢复.docx

《oracle的备份和恢复.docx》由会员分享,可在线阅读,更多相关《oracle的备份和恢复.docx(14页珍藏版)》请在冰豆网上搜索。

oracle的备份和恢复.docx

oracle的备份和恢复

一、概述

1.1备份的概念

所谓备份,就是把数据库复制到转储设备的过程。

其中,转储设备是指用于放置数据库拷贝的磁带或磁盘。

能够进行什么样的恢复依赖于有什么样的备份。

作为DBA,有责任从以下三个方面维护数据库的可恢复性:

使数据库的失效次数减到最少,从而使数据库保持最大的可用性;

当数据库不可避免地失效后,要使恢复时间减到最少,从而使恢复的效率达到最高;

·当数据库失效后,要确保尽量少的数据丢失或根本不丢失,从而使数据具有最大的可恢复性。

灾难恢复的最重要的工作是设计充足频率的硬盘备份过程。

备份过程应该满足系统要求的可恢复性。

例如,如果数据库可有较长的关机时间,则可以每周进行一次冷备份,并归档重做日志,对于24*7的系统,或许我们考虑的只能是热备份。

如果每天都能备份当然会很理想,但要考虑其现实性。

企业都在想办法降低维护成本,现实的方案才可能被采用。

只要仔细计划,并想办法达到数据库可用性的底线,花少量的钱进行成功的备份与恢复也是可能的。

1.2ORACLE数据库的运行方式

ORACLE数据库有两种运行方式:

一是归档方式(ARCHIVELOG),归档方式的目的是当数据库发生故障时最大限度恢复数据库,可以保证不丢失任何已提交的数据;二是不归档方式(NOARCHIVELOG),只能恢复数据库到最近的回收点(冷备份或是逻辑备份)。

我们根据数据库的高可用性和用户可承受丢失的工作量的多少,对于生产数据库,强烈要求采用为归档方式;那些正在开发和调试的数据库可以采用不归档方式。

如何改变数据库的运行方式,在创建数据库时,作为创建数据库的一部分,就决定了数据库初始的存档方式。

一般情况下为NOARCHIV

ELOG方式。

当数据库创建好以后,根据我们的需要把需要运行在归档方式的数据库改成ARCHIVELOG方式。

Oracle10g之前,你还需要修改初始化参数使数据库处于自动归档模式。

在pfile/spfile中设置如下参数:

log_archive_start=true;重启数据库此参数生效,此时数据库处于自动归档模式。

也可以在数据库启动过程中,手工执行:

archivelogstart使数据库启用自动归档,但是重启后数据库仍然处于手工归档模式。

从Oracle10g开始,log_archive_start参数已经废除

a.启用归档模式

SQL>shutdownimmediate

SQL>startupmount

SQL>alterdatabasearchivelog

SQL>alterdatabaseopen

b.停止归档模式

SQL>shutdownimmediate

SQL>startupmount

SQL>alterdatabasenoarchivelog

SQL>alterdatabaseopen

c.修改相应的初始化参数

1.3ORACLE备份的分类简单的按照备份进行的方式,可以分为逻辑备份、冷备份(脱机备份)、热备份(联机备份),其实冷备份与热备份又可以合称为物理备份

按照备份的工具,可以分为EXP/IMP备份、OS拷贝、RMAN、第三方工具,如VERITAS

1.3.1.EXP/IMP逻辑备份导入/导出是ORACLE幸存的最古老的两个命令行工具了,正确的说法是Exp/Imp只能是一个好的转储工具,特别是在小型数据库的转储,表空间的迁移,表的抽取,检测逻辑和物理冲突等中有不小的功劳。

当然,我们也可以把它作为小型数据库的物理备份后的一个逻辑辅助备份,也是不错的建议。

RGIN:

0cm0cm6pt;TEXT-INDENT:

21pt">对于越来越大的数据库,特别是TB级数据库和越来越多数据仓库的出现,EXP/IMP越来越力不从心了,这个时候,数据库的备份都转向了RMAN和第三方工具。

1.3.2.冷备份(脱机备份)在文件级备份开始前数据库必须彻底关闭。

关闭操作必须用带有normal、immediate、transaction选项的shutdown来执行。

数据库使用的每个文件都被备份下来,这些文件包括:

☆所有数据文件

☆所有控制文件

☆所有联机REDOLOG文件

☆INIT.ORA文件(可选)

作冷备份一般步骤是:

a.正常关闭要备份的实例(instance);

b.备份整个数据库到一个目录

c.启动数据库

SQL>connectinternal

SQL>shutdownimmediate

SQL>!

cp

SQL>!

tarcvf/dev/rmt/0/u01/oradata/prod

SQL>startup

注意:

如果利用脚本对数据库进行冷备份,必须对关闭数据库的命令进行逻辑检查,如果发生关闭数据库的命令不能正常执行而导致数据库没有正常关闭,那么,所有的冷备份将会是无效的。

1.3.3.热备份(连机备份)

mal;FONT-FAMILY:

宋体;mso-fareast-font-family:

楷体">

热备份是当数据库打开并对用户有效是的OS级的数据备份。

热备份只能用于ARCHIVELOG方式的数据库。

在数据文件备份之前,对应的表空间必须通过使用ALTERTABLESPACE……BEGINBACKUP以备份方式放置。

然后组成表空间的数据文件可以使用类似冷备份的操作系统命令进行拷贝。

在数据文件用操作系统命令拷贝后,应使用ALTERTABLESPACE……ENDBACKUP命令使表空间脱离热备份方式。

热备份没有必要备份联机日志,但必须是归档状态,在实例恢复的时候,可能需要用到归档日志。

当前联机日志一定要保护好或是处于镜相状态,当前联机日志的损坏,对于数据库的损坏是巨大的,只能以数据的丢失来进行数据库的恢复工作。

对于临时表空间,存放的是临时信息,在热备份是也可以考虑不用备份,如果临时文件发生故障,可以删除该数据文件与表空间,重建一个临时表空间。

热备份的优点:

a.可在表空间或数据文件级备份,备份时间短。

b.备份时数据库仍可使用。

c.可达到秒级恢复(恢复到某一时间点上)。

d.可对几乎所有数据库实体作恢复。

e.恢复是快速的,在大多数情况下在数据库仍工作时恢复。

在热备份的时候,因为用户还在操作数据库,所以,最好是每个表空间处于备份状态的时间最短,这样就要求一个表空间一个表空间的备份,不要一起使表空间处于备份状态而同时拷贝数据文件。

注意:

如果在热备份的时候如果数据库中断(如断电),那么在重新启动数据库的时候,数据库将提示有数据文件需要恢复,你需要把正在断电时候的处于备份状态的数据文件通过ALTERTABLESPACE……ENDBACKUP结束备份方式。

具体哪个数据文件或表空间处于备份状态,可以通过v$backup与v$datafile来获得。

1.3.4.RMAN进行备份采用数据库提供的RMAN备份工具有以下的优点:

a.支持在线热备份

是指备份不需要关闭数据库进行,在备份的同时可以进行正常的数据库的各种操作,

满足了7*24的系统的需要,对于本系统而言,数据库的备份将不会影响INTERNET或

INTRANET

ewRoman'">用户对数据库的访问。

b.支持多级增量备份

多级增量备份是指第N级的备份只需要备份最后一次同级或N-1级备份以后发生的改变的数据。

可以通过下图来说明:

上图是一个增量备份的例子,即在第一个星期天做一个增量的0级备份,然后在星期一,星期二做一个增量的2级备份,在星期三做一个增量的1级备份,然后类推。

假设现在在星期五数据库需要做恢复,则可以先恢复第一个星期天的0级备份,,然后恢复星期三的1级备份,再恢复星期四和星期五的2级备份就可以完成数据库的恢复。

因为在本系统录入后的数据数据进入数据库后将大部分变为只读状态,所以采用对这些表空间只备份一次或比经常改变的表空间备份次数更少的方法,将能够很大地减少备份的数据量。

具体的方案如下:

对于表PROD_CONTENT_CN_TBL,PROD_VALUE_TBL由于做了关于序列号的分区,采取的当一个分区满了以后,在数据库里把该分区改成只读状态,然后做一个该表空间的备份,然后在做数据库的日常增量备份时忽略该表空间的数据则能够大大减少要备份的数据量。

c.支持并行备份,恢复

RMAN是通过启动数据库的SERVER进程来进行备份和恢复,而且支持启动多个SERVER进程来进行备份和恢复,在同一个SERVER进程内还支持多个BACKUPSET(备份集)的同时产生。

主要是通过设置多个通道及filesperset

ily:

'TimesNewRoman'">参数来达到并行的目的。

分配多个通道的语句(以下语句分配两个通道)

Allocatechannel‘dev_1’typedisk;

Allocatechannel‘dev_2’typedisk;

设置在一个通道同时打开的备份文件语句(以下语句设置在一个通道下同时打开3个文件)

backupfilesperset3。

d.减小所需要备份量

因为RMAN是工作在数据快一级,所以能够只备份分配的数据快,这样就大大地减少了所需要的备份的数据量,特别是对于预先分配空间的数据库而言。

e.备份,恢复使用简单

RMAN的使用特别简单,在进行备份和恢复时都不需要指定需要备份或需要恢复的数据文件,RMAN会自动地把备份或恢复所需要的数据文件进行备份或进行恢复。

减少了人为操作可能产生的错误。

如以下是备份整个数据库的语句

backupfulltag'basicdb'format'/bak/bak/basic/basic%u_%p_%c'database;

以下是备份一个表空间的语句

backuptag'tsusers'format'/bak/bak/basic/basic%u_%p_%c'tablespaceusers;

以下是备份归档文件的语句

backupfilesperset3archivelogalldeleteinput;

归档文件会在备份后自动删除。

1.4RMAN的配置

/span>

配置RMAN包括配置CATALOG数据库,配置数据库与媒体管理软件的接口,制定RMAN的多级备份方案,写RMAN备份脚本

1.4.1CATALOG数据库

因为RMAN自动维护备份和恢复所需要的各种信息,所以RMAN必须把这些以某种形式保存。

RMAN支持两种形式保存这些信息,数据库的控制文件或创建一个单独的数据库来保存RMAN的信息。

当选择把RMAN的信息存储在控制文件时,控制文件的丢失时将导致备份将不能进行恢复。

所以若采用RMAN做备份,推荐一定采用RMANCATALOG数据库来单独存放备份信息。

这个单独的数据库(称为CATALOG数据库)只需要很小的空间,既可以和被备份的数据库(E10K)放在同一主机上,也可以单独放在另一台主机上(如果条件允许,推荐放在一台单独的主机上来确保最大的可恢复性)。

备份CATALOG数据库:

因为CATALOG数据库包含了所有的备份信息,所以该数据库本身也是需要通过某种方法进行备份,但因为该数据库很小(一年内可能才增加十几二十兆),所以既可以对它进行冷备份,也可以进行逻辑的输出(EXPORT)。

配置CATALOG数据库:

用dbassist创建数据库。

在该数据库创建RMAN数据库用户:

lang="EN-US"style="FONT-FAMILY:

宋体;mso-hansi-font-family:

'TimesNewRoman'">

createuserrmanidentifiedbyrmandefaulttablespacets_rman

temporarytablespacetemp;

grantconnect,resource,RECOVERY_CATALOG_OWNERtorman.

连接到目标数据库和CATALOG数据库

rmantargetsystem/manager@target_tnsnamercvcatrman/rman@catalog_tnsname

创建CATALOG用户的表:

rman>createcatalog

登记目标数据库:

rman>registerdatabase

这样就可以利用该RMAN数据库来备份目标数据库了。

1.4.2磁带接口当使用专用的磁带管理工具时,必须配置数据库与磁带的接口,一般是管理工具提供一个动态连接库与数据库进行连接。

以下是一个测试的RMAN脚本:

run{

allocatechannel'dev1'typedisk

resynccatalog;

backupformat‘/archive/ctl%u_%p_%c‘currentcontrolfile;

releasechanneldev1;

}

二、备份策略

-->

t-family:

'TimesNewRoman';mso-fareast-language:

ZH-CN">2.1物理备份采用多级备份是为了减少了恢复所需要的时间和减少每天备份所需要的时间,而又保证系统有很好的恢复性。

但是在恢复时间和备份时间要有一个权衡。

比如只要开始的一个全备份和备份所有产生的归档文件就可以保证把数据库恢复到最新的状态,但是一般来说实际上并不会这么进行(因为在恢复时将需要很长很长的时间),多级备份就是为了解决这样的问题。

以下是一种建议的方案。

每半年做一个数据库的全备份(包含只读表空间)

每个月做一次零级备份(不包含只读表空间)

每个星期做一次一级备份

每天做一个二级备份

任何表空间改成只读状态后做一个该表空间的备份。

当需要时(如四个小时归档文件系统就要接近满了)备份归档文件

数据库全备份脚本:

run{

allocatechannel'dev1'typedisk;

allocatechannel'dev2'typedisk;

allocatechannel'dev3'typedisk;

backupfulltag'dbfull'format'/o9i/testrman/full%u_%p_%c'database;

sql'altersystemarchivelogcurrent';

backupfilesperset3archivelogalldeleteinput;

releasechanneldev1;

releasechanneldev2;

releasechanneldev3;

}

零级备份脚本(只读表空间除外)

run{

allocatechannel'dev1'typedisk;

allocatechannel'dev2'typedisk;

allocatechannel'dev3'typedisk;

backupincrementallevel0tag'dbL0'format'/o9i/testrman/basic%u_%p_%c'databaseskipreadonly;

sql'altersystemarchivelogcurrent';

backupfilesperset3archivelogalldeleteinput;

releasechanneldev1;

m0cm0pt;TEXT-INDENT:

21.2pt;mso-char-indent-count:

2.02">releasechanneldev2;

releasechanneldev3;

}

一级备份脚本

run{

allocatechannel'dev1'typedisk;

allocatechannel'dev2'typedisk;

allocatechannel'dev3'typedisk;

backupincrementallevel1tag'dbL1'format'/o9i/testrman/basic%u_%p_%c'ddatabaseskipreadonly;

sql'altersystemarchivelogcurrent';

backupfilesperset3archivelogalldeleteinput;

releasechanneldev1;

releasechanneldev2;

releasechanneldev3;

}

二级备份脚本

run{

allocatechannel'dev1'typedisk;

allocatechannel'dev2'typedisk;

allocatechannel'dev3'typedisk;

backupincrementallevel2tag'dbL2'format'/o9i/testrman/basic%u_%p_%c'ddatabaseskipreadonly;

sql'altersystemarchivelogcurrent';

backupfilesperset3archivelogalldeleteinput;

releasechanneldev1;

releasechanneldev2;

releasechanneldev3;

}

表空间备份脚本(以users表空间为例)

run{

allocatechannel'dev1'typedisk;

allocatechannel'dev2'typedisk;

allocatechannel'dev3'typedisk;

backuptag'tsusers'format'/o9i/testrman/basic%u_%p_%c'tablespaceusers;

sql'altersystemarchivelogcurrent';

pt;mso-char-indent-count:

2.02">backupfilesperset3archivelogalldeleteinput;

releasechanneldev1;

releasechanneldev2;

releasechanneldev3;

}

归档文件备份脚本

run{

allocatechannel'dev1'typedisk;

allocatechannel'dev2'typedisk;

allocatechannel'dev3'typedisk;

backupfilesperset3archivelogalldeleteinput;

releasechanneldev1;

releasechanneldev2;

releasechanneldev3;

}

则每天所需要备份的数据量只有一天的改变量。

而做恢复时最多只要恢复当月的一个零级备份+三个一级备份+6个二级备份+当天的归档文件。

如果不能接受这样的恢复时间,就只能够减少零级备份之间的时间间隔(如可以每个星期做一个零级备份,这样恢复时最多只需要恢复一个星期的数据量)。

备份CATALOG数据库(数据库逻辑输出)

exppafile=exp.dat

其中exp.dat如下

userid=rman/rman

file=rmanexp.dmp

2.2逻辑备份

采用ORACLE提供的IMPORT和EXPORT工具进行数据的备份和恢复。

ang="EN-US">rman>

run{

allocatechannel'dev1'typedisk;

allocatechannel'dev2'typedisk;

allocatechannel'dev3'typedisk;

restoretablespaceusers;

recovertablespaceusers;

releasechanneldev1;

releasechanneldev2;

releasechanneldev3;

}

3.2逻辑恢复逻辑恢复情况一般有两种情况,一种是是进行全库的恢复,这个需要通过使用下面方法进行恢复:

  impsystem/managerinctype=RESTOREFULL=yFILE=filename

另外一种情况是只恢复部分对象,这个可以从数据库全备份中来抽取出来进行恢复,该恢复操作恢复时间比较快。

例如客户资料信息表由于异常数据丢失,我们可以通过备份来快速恢复。

size="3">该备份我们也是采用3种方式进行备份:

全库备份

增量备份

一些重要数据库对象的备份。

逻辑备份的目的主要是为了防止人为的操作而导致系统故障,需要恢复对数据进行的备份。

如果是部分对象需要恢复时,它能够快速完成,使系统恢复正常。

逻辑备份实现

脚本说明:

l管理员可以使用expfull.sh脚本备份数据库。

如:

$expfull.sh

l脚本所

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1