Oracle数据库12c-备份和恢复研讨 第20课:研讨会

2020.04.19 BoobooWei

实践概述

在这些实践中,您将使用备份保护ORCL数据库。

然后,您或您的讲师会将已知和未知问题引入您的环境。

您的任务是在不丢失数据或数据丢失最少的情况下恢复数据库。

练习20-1:准备备份和恢复研讨会

总览

在这种实践中,您将有机会运用所学的知识。您的任务是通过适当的备份和恢复策略来确保数据库的可用性。然后将测试您的配置:(由您或您的讲师介绍)已知问题和未知问题,以便您有机会在实际场景中进行恢复,而不会丢失数据或丢失的数据最少。

假设条件

您熟悉Oracle备份和恢复操作。您完成了练习19,因此,与本课程开始时一样,ORCL和RCAT数据库处于默认配置。

任务

1.配置恢复设置。使用企业管理器或实践中所示的命令来配置希望用于保护数据库的设置。假设这是一个生产数据库,并且业务需求是最小的数据丢失。如果可能的话,需要完全恢复。考虑以下:

− ARCHIVELOG模式(练习3-1)

− 存档日志文件目标(练习3-1)

− 快速恢复区(实践3-1)

− 默认备份位置(实践3-1)

− 备份集或映像副本

− 增量或完全备份

− 备份保留策略(这些练习建议冗余为2)(练习3-3 )

− 控制文件的数量和位置(练习3-4)

− 重做日志文件的数量和位置(实践3-6)

− 参数和密码文件的位置(练习12)

− 表空间和数据文件的位置

− 控制文件的备份策略(练习3-3、7-1)

− 使用恢复目录(实践4)

2.记录DBID的的ORCL数据库:

3.在为备份和恢复策略完全配置数据库之后,请执行两次选择的备份。

练习20-2:体验现实生活研讨会

总览

在这个工作坊中,讲师将随机呈现一个场景。您的任务是诊断问题并在可能的情况下对数据库执行完全恢复。

如果无法进行完全恢复,请尽可能恢复到最近的时间点。

假设条件

练习19和20-1已完成。

任务

  1. 在每种情况下,第一步都是登录数据库并尝试启动它。
  2. 通过查看错误消息,警报日志或其他指示器来诊断问题。
  3. 决定并实施恢复计划。
  4. 重要提示:如果执行的恢复不完整,则必须执行新的备份以保护数据库。
  5. 当您对数据库已被恢复和保护感到满意时,请教师指定其他方案。

练习20-3:您的场景

总览

在这种情况下,您将看到一个无法正常运行的数据库。您必须确定故障原因以及可用于修复数据库的资源。然后修复数据库,恢复尽可能多的数据。

在每种情况下,都会创建具有新架构的新表空间。有时已经备份了。检查警报日志将显示自上次备份以来创建的表空间。在USERS表空间中创建了一个新模式。

如果讲师启动了崩溃场景(这是推荐的方法),那么讲师将通过ftp连接到您的训练环境并在本地启动其中一种场景。

cd $WORKS
./wksh_20_nn.sh

仅当您在没有教员的情况下工作并且想要介绍自己的“崩溃情况”时,才使用以下命令。(用场景号替换nn。)

在大多数恢复之后,强烈建议进行新的完整数据库备份。

假设条件

您采用的恢复策略可能已受到影响。数据库可能已从ARCHIVELOG模式中退出,使用的备份类型可能已更改,或者您期望安全的特定文件可能会丢失。

热身方案

1.从丢失的重做日志文件中恢复(不活动)。

无效的重做日志文件已丢失。完全恢复是可能的。

a. 启动数据库实例。只要至少一个组成员仍在运行,实例的正常运行就不会受到影响。
b. 查看alert_orcl.log的末尾以查看错误很重要。重做日志文件丢失。
c. 确定缺少哪个重做日志文件组或成员。
d. 确定重做日志组的状态:CURRENT,ACTIVE或INACTIVE来自V$LOG 。
e. 您可以通过删除丢失的重做日志成员并添加新成员来恢复丢失的日志文件。
f.如果已归档缺少日志文件的组,则可以清除日志组以重新创建丢失的文件ALTER DATABASE CLEAR [UNARCHIVED] LOGFILE GROUP <number>命令。
g. 执行完整备份。

2.从丢失的重做日志文件中恢复(当前)。您可以使用RMAN客户端或这些任务的云控制。

活动或当前的重做日志文件已丢失。可能无法完全恢复。

a. 启动数据库实例。只要至少一个组成员仍在运行,实例的正常运行就不会受到影响。
b. 查看alert_orcl.log的末尾以查看错误很重要。重做日志文件丢失。
c. 确定缺少哪个重做日志文件组或成员。
d. 确定重做日志组的状态((CURRENT, ACTIVE, or INACTIVE)从V$LOG。记录丢失组的序列号和起始SCN。注意:如果V$LOG视图不可用,请关闭数据库并使用。
e. 您可以通过删除丢失的重做日志成员并添加新成员来恢复丢失的日志文件。
F. 如果已归档缺少日志文件的组,则可以清除日志组以重新创建丢失的文件ALTER DATABASE CLEAR [UNARCHIVED] LOGFILE GROUP <number>命令。
g.启动RMAN并列出故障。如果无法使数据库保持一致,则需要进行不完全的恢复。您可以使用REPAIR FAILURE命令执行它。注意UNTIL SCN子句。
h.执行完整备份。(这是必需的,尤其是在不完全恢复之后。)

3.丢失密钥库并丢失表空间。

此方案使用加密的备份。表空间丢失,密钥库丢失。密钥库(或加密钱包)的备份位于/u01/backup/orcl/ewallet.p12中。P12。密钥库密码为“ secret”。密钥库是在$ORACLE_BASE/admin/orcl/wallet/ewallet.p12目录中的默认位置创建的。

a. 确定故障。(丢失数据文件将是第一个错误。)
b. 恢复数据文件。(还原将失败,并出现加密备份错误。)
c. 尝试将密钥库作为SYSDBA打开。ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY secret;
d. 将密钥库还原到默认位置,然后打开密钥库。
e. 使用LIST FAILURE, ..., REPAIR FAILURE.
f. 打开数据库。
g. 恢复为未加密的备份。执行$WORKS/cleanup_20_03.sh脚本以创建新的0级备份。

4.恢复丢失的只读表空间。

只要控制文件能够正确识别表空间的状态,丢失的只读表空间的恢复与任何其他表空间相同。如果可以应用存档日志,则可以进行完全恢复。

5.在没有备份的情况下恢复表空间(在ARCHIVELOG模式下)。

不带备份的表空间恢复与任何其他表空间相同,只要控制文件是最新的,并且该控制文件具有表空间的存在记录,并且归档日志文件的存在可以恢复到当前时间点。

6.以NOARCHIVELOG模式恢复表空间。

注意:数据库处于NOARCHIVELOG模式。表空间已丢失。除非自上次备份以来的所有更改都包含在联机重做日志中,否则不可能进行完全恢复。

a. 诊断故障。
b. 确定可用于还原的备份。
c. 恢复数据库后,执行$WORKS/cleanup_20_06.sh脚本。

提示:使用LIST BACKUP命令检查可用的备份。

有两种可能的恢复路径:1)删除丢失的表空间或 2)将整个数据库恢复到上一次备份的时间。

使用选项1,您会丢失单个表空间中的所有内容,并且必须通过其他方式重新输入它。

使用选项2,您将丢失自上次备份以来输入的所有内容。这是ADVISE FAILURE命令附带的选项。

选项1:发出以下命令。

$ sqlplus / as sysdba
ALTER DATABASE DATAFILE <filenumber or ‘filename’> OFFLINE FOR DROP;
ALTER DATABASE OPEN;
DROP TABLESPACE BARTBS INCLUDING CONTENTS AND DATAFILES;
SQL> EXIT;

选项2:发出以下命令。

$ rman target /
RMAN> list failure;
RMAN> advise failure;
RMAN> repair failure;
RMAN> exit

7.通过使用控制文件跟踪文件来恢复控制文件。

该方案在/u01/backup/orcl/control.trc中创建一个控制文件跟踪。控制文件自动备份不可用。

a. 使用SQL * Plus启动数据库实例并确定失败。
b. 通过查看alert_orcl.log文件,确定所有控制文件都丢失。
c. 转到 /u01/app/oracle/oradata/orcl目录,并验证所有存在其他数据库文件。
d. 找到控制文件跟踪文件,然后将其复制到control.sql。编辑control.sql 文件。
e. 确保列出了所有数据文件,包括BARTBS表空间的数据文件。
f. 由于所有重做日志仍然存在,因此请使用“Set #1. NORESETLOGS case控制文件中的SQL语句将跟踪以重新创建控制文件。注意:控制文件将在初始化参数文件中指定的位置中创建。
g. 确认各种语句中命名的文件存在。使用ls OS命令进行检查。
h. 删除或注释掉所有“ Set#2”。RESETLOGS case ”命令。
i. 关闭数据库。shutdown immediate
j. 执行control.sql文件。@control.sql
k. 如果脚本失败,请再次检查文件是否存在并更正脚本。
l. 检查数据库是否处于ARCHIVELOG模式。archive log list
m. 此时,检查化身表和记录的备份。检查控制文件自动备份配置。检查所有表空间均已正确配置。

$ rman target /
RMAN> list incarnation;
RMAN> list backup summary;
RMAN> show controlfile autobackup; RMAN> report schema;

完成此练习后,执行/home/oracle/workshop/cleanup_20_07.sh。该脚本包括一个新的备份。

场景:

对于以下情况,请诊断故障并执行恢复。有很少的提示。

8.表空间和当前重做日志文件丢失。

9.从丢失的所有控制文件和表空间中恢复。这将需要从备份集中还原控制文件。

此方案要求控制文件有备份。必须使用INCLUDING CONTROLFILE或CONTROLFILE AUTOBACKUP ON进行备份。可以使用控制文件备份进行跟踪来进行还原,但是它要求您知道属于丢失的表空间的数据文件的位置。在所有情况下,都可以完全恢复。

10.自上次备份以来,所有控制文件均丢失,并且删除了表空间并重新创建了表空间。

提示:表空间的创建在警报日志中可见。

11.丢失尚未分类的备份的表空间。使用未列入目录的备份集进行恢复。

安装程序在/u01/backup/alt目录中创建备份文件的副本。

提示:编目现有备份文件,然后使用REPAIR FAILURE 进行恢复命令。