Oracle数据库12c-管理 实践13:备份恢复配置

Practices for Lesson 13: Backup and Recovery: Configuration

2020.02.04 BoobooWei

实践13:概览

Practices for Lesson 13: Overview

Configure your database to reduce the chances of failure or data loss. To do so, perform the following tasks:

• Ensure redundancy of control files.

• Review the fast recovery area configuration.

• Ensure that there are at least two redo log members in each group.

• Place your database in ARCHIVELOG mode.

• Configure redundant archive log destinations.

配置数据库以减少失败或数据丢失的机会。为此,请执行以下任务:

  • 确保控制文件的冗余。
  • 检查快速恢复区域的配置。
  • 确保每个组中至少有两个重做日志成员。
  • 将数据库置于ARCHIVELOG模式。
  • 配置冗余的存档日志目的地。

实践13-1:配置数据库进行恢复

Practice 13-1: Configuring Your Database for Recovery

Overview

In this practice, you verify that your database is configured properly to support recovery operations in the event of a failure.

Task

  1. Verify that the control files are multiplexed.

  2. Review the fast recovery area configuration and change the size to 8 GB.

  3. Check how many members each redo log group has. Ensure that there are at least two redo log members in each group. One set of members should be stored in the fast recovery area.

  4. You notice that for each redo log group, the “Archived” column has no value. This means that your database is not retaining copies of redo logs to use for database recovery, and in the event of a failure, you will lose all data since your last backup. Place your database in ARCHIVELOG mode, so that redo logs are archived.

    You do not need to specify a naming convention or a destination for the archived redo log files because you are using a fast recovery area.

    Note: If you add archive log destinations, you must create the directory if it does not already exist.

    Use SQL*Plus to set the database in ARCHIVELOG mode.

  5. Configure redundant archive log destinations.

Practice

  1. 验证控制文件是多路复用的。

    SELECT NAME FROM V$CONTROLFILE;

    a. 登陆 Enterprise Manager Database Express

    b. 选择 存储引擎 > 控制文件

    c. 可以看到当前有两个控制文件

    SQL> SELECT NAME FROM V$CONTROLFILE;

    NAME
    --------------------------------------------------------------------------------
    /u01/app/oracle/oradata/booboo/control01.ctl
    /u01/app/oracle/oradata/booboo/control02.ctl
  1. 检查快速恢复区配置并将大小更改为8gb。

    mkdir  /u01/app/oracle/fast_recovery_area

    sqlplus / as sysdba
    show parameter db_recovery_file_
    alter system set "db_recovery_file_dest_size"='8G' scope=both sid='*';
    alter system set "db_recovery_file_dest"='/u01/app/oracle/fast_recovery_area' scope=both sid='*';
    show parameter db_recovery_file_

a. Enterprise Manager Database Express 选择 配置 > 初始化参数

b. 选择 归档和恢复 ,找到以db_recovery_file开头的参数

c. 检查快速恢复区是否开启。未开启,因为值为null和0

d. 修改这两个参数,注意这两个参数都是动态参数,无需重启服务。

SQL> show parameter db_recovery_file_

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string
db_recovery_file_dest_size big integer 0

SQL> alter system set "db_recovery_file_dest_size"='8G' scope=both sid='*';
System altered.
SQL> alter system set "db_recovery_file_dest"='/u01/app/oracle/fast_recovery_area' scope=both sid='*';
SQL> show parameter db_recovery_file_

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string /u01/app/oracle/fast_recovery_
area
db_recovery_file_dest_size big integer 8G
  1. 检查每个重做日志组有多少成员。确保每个组中至少有两个重做日志成员。一组成员应该存储在快速恢复区域。

    select group#,member from v$logfile;
    ALTER DATABASE
    ADD LOGFILE MEMBER
    '/u01/app/oracle/oradata/booboo/redo01-1.log'
    TO GROUP 1;
    alter system switch logfile;

    a. 选择 存储 > 重做日志组

    b. 观察每个组有多少个成员,成员计数列显示为1

    c. 选择其中一个组点击 添加成员

  2. 您注意到,对于每个重做日志组,已归档列没有值。这意味着您的数据库没有保留用于数据库恢复的重做日志副本,并且在发生故障时,您将丢失自上次备份以来的所有数据。将数据库置于ARCHIVELOG模式,以便归档重做日志。

    您不需要为存档的重做日志文件指定命名约定或目标,因为您使用的是快速恢复区域。

    注:如果您添加存档日志目的地,您必须创建目录,如果它还不存在。

    使用SQLPlus将数据库设置为ARCHIVELOG模式。

    sqlplus / as sysdba
    archive log list
    shutdown immediate
    startup mount
    alter database archivelog;
    alter database open;
    archive log list

    执行结果

    SQL> archive log list
    Database log mode No Archive Mode
    Automatic archival Disabled
    Archive destination USE_DB_RECOVERY_FILE_DEST
    Oldest online log sequence 30
    Current log sequence 32
    SQL> shutdown immediate
    Database closed.
    Database dismounted.
    ORACLE instance shut down.
    SQL> startup mount
    ORACLE instance started.

    Total System Global Area 838860800 bytes
    Fixed Size 8798312 bytes
    Variable Size 490737560 bytes
    Database Buffers 331350016 bytes
    Redo Buffers 7974912 bytes
    Database mounted.
    SQL> alter database archivelog;

    Database altered.

    SQL> alter database open;

    Database altered.

    SQL> archive log list;
    Database log mode Archive Mode
    Automatic archival Enabled
    Archive destination USE_DB_RECOVERY_FILE_DEST
    Oldest online log sequence 30
    Next log sequence to archive 32
    Current log sequence 32

    现在,您的数据库处于ARCHIVELOG模式,它将继续存档每个在线重做日志文件的副本,然后再将其用于其他重做数据。
    注意:记住这将消耗磁盘上的空间,并且必须定期将旧的归档日志备份到其他存储。

  3. 配置冗余归档日志目的地。

    mkdir /u01/app/oracle/oradata/booboo/archive_dir2
    sqlplus / as sysdba
    ALTER SYSTEM SET log_archive_dest_1='LOCATION=/u01/app/oracle/fast_recovery_area/EMCDB/archivelog' SCOPE=both;
    ALTER SYSTEM SET log_archive_dest_2='LOCATION=/u01/app/oracle/oradata/booboo/archive_dir2' SCOPE=both;
    ALTER SYSTEM SWITCH LOGFILE;
    ALTER SYSTEM SWITCH LOGFILE;
    ALTER SYSTEM SWITCH LOGFILE;
    ALTER SYSTEM SWITCH LOGFILE;
    SELECT name FROM v$archived_log ORDER BY stamp;

a. 创建一个新目录/u01/app/oracle/oradata/orcl/archive_dir2

b. 设置 LOG_ARCHIVE_DEST_1参数指向 FRA;设置LOG_ARCHIVE_DEST_2指向新目录

c. 手动切换日志,查看视图V$ARCHIVED_LOG

执行结果

[oracle@ocm ~]$ mkdir /u01/app/oracle/oradata/booboo/archive_dir2
[oracle@ocm ~]$ sqlplus / as sysdba
SQL> show parameter log_archive_dest_1

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_1 string
log_archive_dest_10 string
log_archive_dest_11 string
log_archive_dest_12 string
log_archive_dest_13 string
log_archive_dest_14 string
log_archive_dest_15 string
log_archive_dest_16 string
log_archive_dest_17 string
log_archive_dest_18 string
log_archive_dest_19 string
SQL> ALTER SYSTEM SET log_archive_dest_1='LOCATION=/u01/app/oracle/fast_recovery_area/EMCDB/archivelog' SCOPE=both;

System altered.
SQL> ALTER SYSTEM SET log_archive_dest_2='LOCATION=/u01/app/oracle/oradata/booboo/archive_dir2' SCOPE=both;

System altered.

SQL> ALTER SYSTEM SWITCH LOGFILE;

System altered.

SQL> /

System altered.

SQL> /
/

System altered.

SQL>
System altered.

SQL> /

System altered.

SQL> SELECT name FROM v$archived_log ORDER BY stamp;

NAME
--------------------------------------------------------------------------------
/u01/app/oracle/fast_recovery_area/EMCDB/archivelog/1_32_1031256251.dbf
/u01/app/oracle/oradata/booboo/archive_dir2/1_32_1031256251.dbf
/u01/app/oracle/fast_recovery_area/EMCDB/archivelog/1_33_1031256251.dbf
/u01/app/oracle/oradata/booboo/archive_dir2/1_33_1031256251.dbf
/u01/app/oracle/fast_recovery_area/EMCDB/archivelog/1_34_1031256251.dbf
/u01/app/oracle/oradata/booboo/archive_dir2/1_35_1031256251.dbf
/u01/app/oracle/oradata/booboo/archive_dir2/1_34_1031256251.dbf
/u01/app/oracle/fast_recovery_area/EMCDB/archivelog/1_35_1031256251.dbf
/u01/app/oracle/fast_recovery_area/EMCDB/archivelog/1_36_1031256251.dbf
/u01/app/oracle/oradata/booboo/archive_dir2/1_36_1031256251.dbf

KnowledgePoint

管理控制文件

管理控制文件

您可以创建,备份和删除控制文件。

管理重做日志

管理重做日志

您可以通过完成以下任务来管理重做日志,这些任务包括创建重做日志组和成员,重定位和重命名重做日志成员,删除重做日志组和成员以及强制日志切换。

  • 什么是重做日志?
    恢复操作最关键的结构是重做日志,它由两个或多个预分配的文件组成,这些文件在发生更改时存储对数据库所做的所有更改。Oracle数据库的每个实例都有一个相关的重做日志,以在实例发生故障时保护数据库。
  • 规划重做日志
    在配置数据库实例重做日志时,您可以遵循准则。
  • 创建重做日志组和成员
    在数据库创建过程中计划数据库的重做日志,并创建所有必需的重做日志文件组和成员。但是,在某些情况下,您可能需要创建其他组或成员。例如,将组添加到重做日志可以纠正重做日志组可用性问题。
  • 重定位和重命名重做日志成员
    您可以使用操作系统命令重定位重做日志,然后使用该ALTER DATABASE语句使数据库知道其新名称(位置)。
  • 删除重做日志组和成员
    在某些情况下,您可能希望删除整个重做日志成员组。
  • 强制
    日志切换当LGWR停止写入一个重做日志组并开始写入另一个重做日志组时,将发生日志切换。默认情况下,当当前重做日志文件组填满时,日志切换会自动发生。
  • 验证重做日志文件中的块
    您可以将数据库配置为使用校验和来验证重做日志文件中的块。
  • 清除
    重做日志文件当数据库打开时,重做日志文件可能会损坏,并最终停止数据库活动,因为归档无法继续。
  • FORCE LOGGING设置的优先级
    您可以在各种级别进行设置FORCE LOGGING设置NOLOGGING,例如数据库,可插拔数据库(PDB),表空间或数据库对象。当FORCE LOGGING被设置在一个或多个级别的优先级FORCE LOGGING设置决定了在重做日志中记录。
  • 重做日志数据字典视图
    您可以查询一组数据字典视图以获取有关重做日志的信息。

管理存档的重做日志文件

管理存档的重做日志文件

您可以通过完成诸如在NOARCHIVELOGARCHIVELOG 模式之间进行选择以及指定存档目标之类的任务来管理存档的重做日志文件。

  • 什么是存档的重做日志?
    Oracle Database使您可以将已填充的重做日志文件组保存到一个或多个脱机目标,这些目标统称为归档重做日志
  • 在NOARCHIVELOG和ARCHIVELOG模式
    之间进行选择您必须在NOARCHIVELOGARCHIVELOG模式下运行数据库。
  • 控制归档
    您可以为数据库设置归档模式,并调整归档器进程的数量。
  • 指定存档目标
    在可以存档重做日志之前,必须确定要存档的目标,并熟悉各种目标状态。
  • 关于日志传输模式
    将归档日志传输到目的地的两种模式是常规归档传输备用传输模式。正常传输包括将文件传输到本地磁盘。备用传输涉及通过网络将文件传输到本地或远程备用数据库。
  • 管理存档目标失败
    有时,存档目标可能会失败,从而在自动存档模式下运行时引起问题。Oracle数据库提供了可帮助您最大程度减少与目标故障相关的问题的过程。
  • 控制由Archivelog进程生成的跟踪输出
    后台进程始终在适当的时候写入跟踪文件。对于archivelog流程,您可以控制生成到跟踪文件的输出。
  • 查看有关存档的重做日志的
    信息您可以使用动态性能视图或ARCHIVE LOG LIST命令显示有关存档的重做日志的信息。