本文原始链接地址:https://www.askmac.cn/archives/11g-ocm-student-guide-backup-restore.html
数据库恢复的配置
1.1目标
在完成这个课程后,你能够完成下列事情:
- 使用RMAN并且进行简单的配置
- 配置你的数据库处于归档模式
- 配置多个归档日志路径来增加有效性。
- 指定一个保留策略
- 配置快速闪回区域
- 描述使用快速闪回区域的好处
1.2 备份和恢复功能的目的
备份和恢复功能会被下列场景所需要:
- 数据保护
-介质故障
-用户误操作
-应用程序错误
- 数据存储
- 数据传输
当数据库出现问题的时候,你需要进行恢复。当你有了数据库的备份,你就可以防止那些问题,例如:介质故障,用户误操作,应用程序问题。介质故障是硬件级别的数据问题导致的;一个坏的控制器或者磁盘驱动器,会引起轻微或者很严重的问题。用户也引起数据错误,简单的例子就是发出了不应该发出的指令。这些类型的错误,可一被应用程序的BUG引起。
备份提供了数据的一份保留。你可能想为数据库的某个特殊的点创建一份副本,并且保留很长一段时间。这个为未来的恢复提供了保障,或者只是简单的满足规范。
你也可以使用备份和恢复工具来将数据移动到其他的数据库(甚至在其他的位置),一个数据库的备份是很有效的方法。备份数据库然后在其他的位置还原。
1.3 典型的备份和恢复方法
可以在最短的时间内修复数据丢失产生的错误,你可以按下列操作进行准备:
- 配置数据库是可恢复的。
- 定义一个备份计划。
- 为不同的错误场景制定方案并测试。
- 为备份和恢复的场景进行监控和故障诊断。
- 从备份中进行恢复。
- 从需要的时间点进行事务恢复。
为数据库制定一个健壮的备份和恢复策略是非常重要的,因为你承受不了数据丢失。这个策略包含下列任务:
- 配置:在你的环境中需要配置好备份和恢复的环境。这包括一些配置,例如:备份存放地点,多久之前的备份需要被删除,还有加密。
- 计划:备份可以按计划执行,这样就不用人工手动去执行备份。这个是很有帮助的,因为那些备份最佳的时间段,往往是在非工作时段。
- 测试:你应该提前计划,并且在测试环境进行数据损坏或者丢失,使用备份进行恢复的测试。这是常规的做法,这样就能知道成功的备份,你需要做哪些事情。
- 监控:进行备份的时候会需要资源,这样就会影响到数据库中的其他操作。你应该对备份恢复任务进行监控,确保它们的运行是高效地。
- 修复:当你希望恢复数据的时候,你需要一个依赖一个备份。这将使得一些文件进入到数据库中,并且通常会将把数据库放置到过去地某个点的状态。
- 恢复:如果在从备份中完成了数据文件地修复,你还需要把数据库放置到一个接近当前(或等于)地时间点,那么你需要进行恢复。这个过程会应用日志数据来修复数据。
1.4 oracle 备份恢复解决方案
oracle 为维持一个系统的可用性,提供了下列工具:
- 恢复管理器(RMAN-Recovery Manager)
–增量备份
–块修复
–块(未使用)压缩
–二进制压缩
–备份加密
- 数据泵
下列是一些主要的备份和恢复解决方案:
- RMAN:是一个用来执行备份恢复的命令行工具。下面是一些使用RMAN的主要特性:
-增量备份:是一种备份的类型,只会将上一次增量备份到现在的变化写入到备份中。
-块级别的修复:一种修复特定块的方法,与整个表(使用数据泵)和数据文件(使用RMAN)相对。
-块(未使用)压缩:一种节省空间的方式,那些从来不会被使用的快,不会写入到备份中。
-二进制压缩:一种节省空间的功能,备份文件可以使用一些众所周知的算法进行压缩(就像linux 中zip一样)
-备份加密:一个用来进行备份的加密的安全策略。
- 数据泵:
一个使用操作系统文件,来导入导出表的数据的命令行工具。
1.5 RMAN的使用:
在操作系统的命令行中调用RMAN,有一些提供的命令行参数可以使用。下列是一些常用的参数:
- target:连接目标数据库的字符串。
- catalog:连接恢复目录的字符串。
- nocatalog:特别指定没有使用恢复目录。这是默认使用的一个参数•
- cmdfile:指定要运行的命令文件。
- log:指定输出日志的文件。
这里有个RMAN使用OS认证连接到本地数据库的例子,并且指定了需要运行的命令文件和日志文件(用于接收RMAN命令在这个会话中产生的日志):
$ rman target / cmdfile=~/fullbu.rman log=~/fullbu.log
在RMAN的窗口中,你可以提交RMAN 命令来管理你的备份环境,还可以按照你的需求使用多种方式创建备份。
这部分演示了如何查看寻在的备份(LIST BACKUP),删除过时的备份(DELETE OBSOLETE)。
这些命令和其他的一些命令都涵盖在本次的课程中。
注意:可以参考Oracle Database Backup and Recovery User’s Guide
Oracle Database Backup and Recovery Reference
1.6 RMAN的命令类型
RMAN 命令有下列几种类型:
- 独立的命令:
-在RMAN窗口独立的执行
-不能成为run里面的子命令
- 工作命令
-必须方在带括号的run命令中。
-作为一个命令集合执行
有一些命令既可以按独立命令方式执行,也可以安装工作命令的方式执行。
你可以使用2种基本类型的RMAN命令:独立命令和工作命令
独立命令在RMAN窗口中被执行,并且一般都是独立的。一些独立命令如下:
- CHANGE
- CONNECT
- CREATE CATALOG, RESYNC CATALOG
- CREATE SCRIPT, DELETE SCRIPT, REPLACE SCRIPT
工作命令一般是一个命令集,并且是安命令集中的顺序执行。如果在这个集合中的任何命令失败了,RMAN将停止处理,下面的命令都不回被执行。那些已经执行的命令不会受影响,它们不会被消除。
ALLOCATE CHANNEL就是一个只能作为工作命令的例子。这个命令只能被作为工作来执行,不能单独的执行这个命令。例如BACKUP DATABASE,这些命令既可以单独在窗口执行,也可以在运行块中执行。如果你使用了单独的命令,RMAN会给那些需要通道的命令,使用自动分配通道特性分配通道。
你可以以交互式或批处理的形式来运行单独命令和工作命令。
1.7 工作命令的例子
在run块中执行工作命令:
不像单独命令那样,工作命令必须在带括号的run块中执行。演示的那些命令,都放在run块中作为一个单独的命令单元执行。任何在run块中的配置都会在这个范围中被应用,并且会覆盖之前的配置。下面是一个例子:
- ALLOCATE CHANNEL
- SWITCH
RMAN会在run块中顺次的执行工作命令。如果其中任何一个命令失败了,那么RMAN会中止处理,不会执行块中下面的命令。实际上,run 命令块是作为一个命令单元。当run块中最后一个命令执行完毕后,oracle才会释放资源(例如I/O,内存或者调用的从属进程)
1.8数据库备份和恢复的配置操作
- 将数据库配置成ARCHIVELOG模式
- 配置数据闪回
数据库在归档模式时,在数据丢失后,你需要更多的恢复选项,包括恢复数据库的时间点或所操作的表空间。
建议尽可能的使用快速闪回区,来存放备份文件和一些和备份相关的文件(磁盘备份和归档日志)。
一些oracle备份恢复的相关特性,例如oracle 闪回数据库,保存闪回点,需要使用到快速闪回区。
1.9 归档模式
数据库中产生修改过的数据时,那些日志数据写入到联机日志文件,在一个指定的时间范围内写入到一个指定的文件。当文件写满时,归档进程复制在线日志文件到另一个地方,作为一份归档文件。它可以按照你的需求一直保存。这提供了更多的恢复机会,因为你可以保存,备份,存储所有产生的归档日志。
因为 在线联机日志是循环使用的,这里有一个协议去控制那些可以被重用的日志。在归档模式下,数据库只能使用那些已经归档过的日志。这保证了所有的日志文件都是归档过的。
1.10 配置归档模式
可以用下列几种方式将数据库置为归档模式:
- 使用企业管理器(EM)
1.选中归档模式的复选框。
2.点击应用。数据库只能在mount状态下进行归档的设置。
3.在出现是否重启数据库的时候,选择是。
- 使用SQL命令
1.挂载数据库。
2.执行alter database archivelog 命令。
3.打开数据库。
数据库在归档模式下,日志只有在被归档之后才能进行重写。
在EM企业管理器中,选择导航栏中的有效性>恢复设置中的归档模式复选框。数据库在进行这个调整后必须重启。
使用sql 命令将数据库置为归档模式,数据库必须处于挂载状态。为了使数据库进入挂载状态,首先要进入关闭状态,如果数据库是打开的,那么首先必须关闭数据库。下面是关闭打开的数据库,将数据库置为归档模式后,再打开数据库的命令:
SQL> SHUTDOWN IMMEDIATE
SQL> STARTUP MOUNT
SQL> ALTER DATABASE ARCHIVELOG;
SQL> ALTER DATABASE OPEN;
数据库处于非归档模式下(默认),只能恢复到最后一次备份的时间点。所有在备份之后的事务都会丢失。
在归档模式下,数据库可以恢复到最后提交的时刻。大多数生产数据库都在归档模式下。
注意:在将数据库置为归档模式后进行一次备份,因为你的数据库只能基于处于归档模式下的第一次备份,来进行恢复。
1.11 配置归档路径
这里有2种模式你可以选择,用来指定归档文件存放的地方。
- 本地和远程的路径:
使用初始化参数LOG_ARCHIVE_DEST_n 来指定本地和远程的路径。最多可以指定10个,即n可以从1到10.指定本地存储路径时,在其中一个变量中增加LOCATION=’ ‘字符串,并且增加路径名称的值。例如:要指定/disk3/arch目录,可以设置其中的值如下:
LOG_ARCHIVE_DEST_1 = ‘LOCATION=/disk3/arch’
如果你想为备用数据库执行一个远程路径,使用SERVICE关键字,例如在下面的例子中, standyby1是备用数据库实例的网络服务名:
LOG_ARCHIVE_DEST_2 = ‘SERVICE=standby1’
- 只设置本地的路径:另外的一些选择可以用来只指定本地的路径。LOG_ARCHIVE_DEST和LOG_ARCHIVE_DUPLEX_DES 参数可以设置为本地的值。因此,你可以有2份归档日志的文档存放地。例如:
LOG_ARCHIVE_DEST = ‘/disk1/arch’
LOG_ARCHIVE_DUPLEX_DEST = ‘/disk2/arch’
oracle建议使用LOG_ARCHIVE_DEST_n的方式,因为这个可以适用更灵活的场景,并且可以设置多路径。
1.12 保证成功归档
如果你指定了多个用来存放归档文件的路径,你需要指定一个,成功完成归档的路径的最小数目,来确保归档是成功的。可以设置LOG_ARCHIVE_MIN_SUCCEED_DEST 初始化参数。设置一个值,来保证成功接收归档的路径的数目。日志文件在满足这个条件之前(成功接收到归档路径的数目必须满足),都不会被重用。
例如上图中,指定了3个路径:2个本地的和一个远程的。LOG_ARCHIVE_MIN_SUCCEED_DEST设置为2,也就意味着必须在2个路径的归档要成功完成之后,日志文件才能被重写。如果其中一个路径失败,数据库不会停止,因为有2个路径是成功的。
在LOG_ARCHIVE_DEST_n模式下,LOG_ARCHIVE_MIN_SUCCEED_DEST的值可以是1到10,如果是LOG_ARCHIVE_DEST的模式,那么这个值只能是1到2,应为在这个模式下只能指定2个本地路径。
指定路径的强制和可选性
当你指定一个路径时,使用MANDATORY 或 OPTIONAL选项,可以指定其是一个强制或者非强制的路径。下面有个例子:
LOG_ARCHIVE_DEST_1 = ‘LOCATION=/disk3/arch MANDATORY’
默认是非强制的。
一个强制的路径是对于一些特别情况的考虑。如果所有的强制路径都失败了,oracle数据库认为归档就没有成功的进行,那么在线日志文件就不能被重用。在这种情况下,忽略LOG_ARCHIVE_MIN_SUCCEED_DEST参数
对于LOG_ARCHIVE_DEST指定的路径来说,都是强制的。LOG_ARCHIVE_DUPLEX_DEST指定的路径在LOG_ARCHIVE_MIN_SUCCEED_DEST = 1的时候是强制的,在LOG_ARCHIVE_MIN_SUCCEED_DEST = 2的时候是非强制的。
1.13 指定一个备份路径
备份可以被写入到:
- 磁盘目录
- 使用oracle 安全备份,到磁带上。
- 介质管理库
-磁带
-使用代理,拷贝到磁盘或磁带。
- 快速闪回区:用于备份恢复和闪回数据库的磁盘区域
备份可以写入到目标磁盘目录中,这个目录可以是MML 也可以是快速闪回区。指定一个磁盘目录或者使用快速闪回区,意味着备份存放在物理磁盘上。通常情况中,为了节省磁盘空间,把备份通过媒体管理器的接口移动到离线的磁带中。任何存在的路径都可以被指定为备份存放的路径。一个介质管理库可以用来拷贝文件到磁带设备,或者实现代理复制。一个代理拷贝,就是将MML所需求的文件拷贝到磁盘或者磁带。MML必须提供代理拷贝的服务。
如果你设置了快速闪回区,很多备份和恢复的工作对你来说更简单了。oracle 数据库自动的为文件命名,在空间不够的时候自动删除过期的文件。更多的一些快速闪回区的配置信息在后面的课程中提供。
指定备份是写入到磁盘,可以使用下面命令:
CONFIGURE DEFAULT DEVICE TYPE TO DISK;
之后,在创建备份的时候,如果format关键字被使用(用来指定本地备份的路径),那么备份会写入到指定的地方。如果快速闪回区被配置,那么会存放到快速闪回区。否则会写入到对应平台的默认位置。
指定备份写入到磁带,使用下面命令:
RMAN> CONFIGURE DEFAULT DEVICE
1.14 指定保留策略
- 保留策略:描述备份将保留多长时间。
- 两种保留策略类型:
-基于恢复窗口:在一段时间内,保证可以恢复到这段时间内的任意时刻
-基于冗余程度:建立多个必须保存的备份
- 保留策略是互斥的,只能选择一个类型。
一个保留策略表示备份需要保存多久。你可以在RMAN中使用CONFIGURE命令来配置保留策略或者使用EM来配置。
基于恢复窗口的保留策略
一个最好的做法去确定时间就是,在发现错误时,使用基于时间的恢复到错误发生前的一个时候来修复错误。这段时间就称作为恢复窗口。这个策略是以天为单位。对于每个数据文件,至少有一个备份满足下列条件:
SYSDATE – backup_checkpoint_time >= recovery_window
你可以使用下面命令来配置一个恢复窗口的保留策略:
RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF <days>
DAYS;
<days> 就是恢复窗口的大小
如果没使用恢复管理目录,你需要确保恢复创建的时间小于或等于控制文件参数CONTROL_FILE_RECORD_KEEP_TIME的值,防止控制文件中老的值被覆盖。如果是用了恢复管理目录,确保CONTROL_FILE_RECORD_KEEP_TIME的值大于目录之间同步的间隔。同步发生在当你:
- 创建一个备份。在这种情况下,同步是隐式地完成的
- 执行RESYNC CATALOG命令
冗余度保留策略
如果你需要确定保留一定数量的备份。你可以安装冗余度来配置保留策略。这个选项需要指定一个备份的数目,超过这个数目,之前的备份都是过期的。
默认保留策略的冗余度是1,这就说明在任何时候只有1个备份。在一个对于相同文件来说,一个备份将过期,当进行了一个最新版本的备份后。
你可以使用下面的命令来配置保留策略的冗余度:
RMAN> CONFIGURE RETENTION POLICY TO REDUNDANCY <copies>;
<copies>就是满足策略所需要的备份副本的数量。
禁用保留策略
你可能想完全的关闭保留策略。如果你在一个RMAN之外的独立系统中,将磁盘备份到磁带中时,你可能希望关闭保留策略。如果你关闭了保留策略,RMAN将不会认为备份会过期。RMAN不会决定何时从磁盘上删除备份(因为另外的程序管理),RMAN认为不需要配置这个。在这个情况下,备份的维持最长的时间由CONTROL_FILE_RECORD_KEEP_TIME这个初始化参数决定。使用下列命令关闭保留策略:
RMAN> CONFIGURE RETENTION POLICY TO NONE;
注意:你可以指定一个备份是在保留策略之外的特例。这就是所谓的档案备份,将涵盖在后面的”使用RMAN 创建备份”的课程中
Leave a Reply