Oracle LiveLabs实验:Backup and recovery operations for Oracle Database 21c

Posted dingdingfish

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle LiveLabs实验:Backup and recovery operations for Oracle Database 21c相关的知识,希望对你有一定的参考价值。

概述

此实验关于Oracle 数据库备份和恢复。

此实验申请地址在这里

实验帮助在这里

此实验预估完成时间2小时。时间从2:00开始。实际花了将近3小时。

简介

Oracle 数据库备份和恢复操作的重点是数据库文件的物理备份,这允许您在发生故障/损坏的情况下重建您的 Oracle 数据库。

Oracle Recovery Manager (RMAN) 是一种命令行工具,是 Oracle 首选的用于有效备份和恢复 Oracle 数据库的方法。由 RMAN 内置的备份和恢复工具保护的文件包括数据文件、控制文件、服务器参数文件和归档重做日志文件。使用这些文件,您可以重建您的 Oracle 数据库。 RMAN 旨在与服务器密切合作,在备份和恢复期间提供块级损坏检测。 RMAN 通过文件多路复用备份集压缩优化备份期间的性能和空间消耗,并与领先的磁带和存储介质产品集成。备份机制在物理级别工作以防止文件损坏,例如数据文件的意外删除或磁盘驱动器的故障。当无法使用闪回等其他技术时,RMAN 还可用于执行时间点恢复以从逻辑故障中恢复。

Oracle 闪回特性提供了一系列物理和逻辑数据恢复工具,作为物理和逻辑备份的高效、易于使用的替代方案。 Oracle 闪回特性使您能够回退不需要的数据库更改的影响,而无需从备份中恢复数据文件

本实验的作者为Suresh Mohan,其它贡献者为Suresh Rajan, Manish Garodia, Subhash Chandra, Ramya P。

实验 2:初始化环境

任务一:设置环境

export ORAENV_ASK=NO
export ORACLE_SID=CDB1
. oraenv

或者直接运行:

.set-env-db.sh 

任务二:下载并执行 SQL 脚本文件

curl -O https://objectstorage.us-ashburn-1.oraclecloud.com/p/wVaLF_P62mfpzEzA7rRaCh7CgG8WtfStsG5MQ_kmRI6JkWNwErWWnQREmO0FLXcv/n/c4u04/b/livelabsfiles/o/labfiles/backup-and-recovery-operations-prerequisities.zip

unzip backup-and-recovery-operations-prerequisities.zip

只有一个文件,修改前为:

$ cat backup-and-recovery-operations-prerequisities.sql
alter session set container = pdb1;
CREATE user appuser IDENTIFIED BY mypassword container=current;
grant all privileges to appuser;
connect appuser/<password>@//<hostname>:<port>/<pdbname>
create tablespace oc datafile 'octs.dbf' size 32m;
create table regions (id number(2), name varchar2(20)) tablespace oc;
insert into regions values (1,'America');
insert into regions values (2,'Europe');
insert into regions values (3,'Asia');
commit;
!
mkdir /opt/oracle/oradata/CDB1
exit;

替换尖括号中的内容,修改后为:

$ cat backup-and-recovery-operations-prerequisities.sql
alter session set container = pdb1;
CREATE user appuser IDENTIFIED BY Welcome1 container=current;
grant all privileges to appuser;
connect appuser/Welcome1@//10.0.0.253:1521/pdb1
create tablespace oc datafile 'octs.dbf' size 32m;
create table regions (id number(2), name varchar2(20)) tablespace oc;
insert into regions values (1,'America');
insert into regions values (2,'Europe');
insert into regions values (3,'Asia');
commit;
! mkdir /opt/oracle/oradata/CDB1
exit;

这个表空间oc 就是我们用来实验的。

以下是获取信息的部分命令:

# 获取主机名
hostname -i
# 获取service
lsntctl status  

然后执行以上脚本。

sqlplus / as sysdba @backup-and-recovery-operations-prerequisities

这个脚本写得太low了。

实验 3:配置恢复设置

预计时间:20分钟

目标

  • 设置环境
  • 配置快速恢复区
  • 启用重做日志文件的归档
  • 启用闪回数据库

任务 1:配置快速恢复区

快速恢复区是文件系统或 Oracle 自动存储管理 (Oracle ASM) 磁盘组上由 Oracle 管理的目录,为备份和恢复文件提供集中存储位置。 Oracle 在快速恢复区创建归档日志和闪回日志。 Oracle 自动管理快速恢复区,删除不再需要的文件。

Recovery Manager (RMAN) 可以将其备份集和映像副本存储在快速恢复区域中,并在介质恢复期间恢复文件时使用它们。 如果配置了快速恢复区,当您发出 RMAN 备份命令而不指定备份目标时,RMAN 会自动备份到快速恢复区。

其实环境已经设置好了:

SQL> connect / as sysdba
Connected.
SQL> show parameter recovery;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest                string      /opt/oracle/fast_recovery_area
db_recovery_file_dest_size           big integer 10G
recovery_parallelism                 integer     0
remote_recovery_file_dest            string

SQL> alter system set db_recovery_file_dest_size=10G;

System altered.

$ du -sh /opt/oracle/fast_recovery_area
6.7G    /opt/oracle/fast_recovery_area

任务 2:启用重做日志文件的归档

归档默认未启用:

SQL> archive log list;
Database log mode              No Archive Mode
Automatic archival             Disabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     15
Current log sequence           17

启用。用rman执行以下脚本(用sqlplus的话也可以,但其中做了个冷备,还是rman方便些):

connect target
shutdown immediate;
startup mount;
-- 这这里可以做个冷备, 在归档未启用时,也只能做冷备。
backup database;
alter database archivelog;
alter database open;
-- 归档已开,可以热备了
backup database plus archivelog;

冷备和热备居然报错了:

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================

RMAN-03009: failure of backup command on ORA_DISK_1 channel at 11/14/2022 06:50:24
ORA-19809: limit exceeded for recovery files
ORA-19804: cannot reclaim 67108864 bytes disk space from 10737418240 bytes limit

可是,看上去空间是够的:

SQL> set lines 150
SQL> select * from v$flash_recovery_area_usage;

FILE_TYPE               PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES     CON_ID
----------------------- ------------------ ------------------------- --------------- ----------
CONTROL FILE                           .17                         0               1          0
REDO LOG                              5.86                         0               3          0
ARCHIVED LOG                             0                         0               0          0
BACKUP PIECE                         50.34                         0               5          0
IMAGE COPY                               0                         0               0          0
FLASHBACK LOG                         3.91                         0               2          0
FOREIGN ARCHIVED LOG                     0                         0               0          0
AUXILIARY DATAFILE COPY                  0                         0               0          0

8 rows selected.

SQL>
col name for a50
select  name
, floor(space_limit / 1024 / 1024) "Size MB"
, ceil(space_used  / 1024 / 1024) "Used MB"
from    v$recovery_file_dest
order by name ;

NAME                                                  Size MB    Used MB
-------------------------------------------------- ---------- ----------
/opt/oracle/fast_recovery_area                          10240       6193

确认归档已开启:

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

空间确实是不够的,你看到的空间够,是因为是最终的而非过程中的状态,如果在备份过程中检测,可发现其到了13G。而且源数据库确实超过了10G:

$ du -sh /opt/oracle/oradata/CDB1
17G     /opt/oracle/oradata/CDB1

因此,需要把FRA扩充到30G:

alter system set db_recovery_file_dest_size=30G scope=both;

单次在线备份消耗了21GB:

$ du -sh /opt/oracle/fast_recovery_area
21G     /opt/oracle/fast_recovery_area

任务 3:启用闪回数据库

您可以使用以下2种方式将整个 Oracle 数据库恢复到之前的时间点:通过恢复备份和执行时间点恢复将整个 Oracle 数据库恢复到之前的时间点,或者启用闪回数据库。 启用闪回数据库时,Oracle 数据库会在快速恢复区生成闪回日志。 这些日志用于将 Oracle 数据库闪回到指定时间。 Oracle 数据库自动创建、删除和调整闪回日志的大小。
启用过程:

SQL> select FLASHBACK_ON from v$database;

FLASHBACK_ON
------------------
NO

SQL> alter database flashback on;

Database altered.

SQL> select FLASHBACK_ON from v$database;

FLASHBACK_ON
------------------
YES

和闪回相关的参数如下:

SQL> show parameter db_flashback_retention_target

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_flashback_retention_target        integer     1440

SQL> show parameter db_recovery_file_dest

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest                string      /opt/oracle/fast_recovery_area
db_recovery_file_dest_size           big integer 10G

实验 4:配置备份设置

预计时间:20分钟

目标

  • 查看备份设置
  • 配置备份设备设置
  • 配置备份优化设置
  • 配置保留策略设置
  • 配置控制文件和服务器参数文件自动备份
  • 启用块更改跟踪

任务 1:查看备份设置

RMAN> connect target /
connected to target database: CDB1 (DBID=1090351676)

RMAN> show all;

using target database control file instead of recovery catalog
RMAN configuration parameters for database with db_unique_name CDB1 are:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP ON; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default
CONFIGURE RMAN OUTPUT TO KEEP FOR 7 DAYS; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/opt/oracle/dbs/snapcf_CDB1.f'; # default

任务 2:配置备份设备设置

其实缺省备份设备就是disk:

RMAN> configure default device type to disk;

new RMAN configuration parameters:
CONFIGURE DEFAULT DEVICE TYPE TO DISK;
new RMAN configuration parameters are successfully stored

RMAN> show default device type;

RMAN configuration parameters for database with db_unique_name CDB1 are:
CONFIGURE DEFAULT DEVICE TYPE TO DISK;

任务 3:配置备份优化设置

配置备份优化以节省快速恢复区的空间。 优化排除了以前备份的未更改文件,例如只读文件和脱机数据文件。

RMAN> configure backup optimization on;

new RMAN configuration parameters:
CONFIGURE BACKUP OPTIMIZATION ON;
new RMAN configuration parameters are successfully stored

RMAN> show backup optimization;

RMAN configuration parameters for database with db_unique_name CDB1 are:
CONFIGURE BACKUP OPTIMIZATION ON;

任务 4:配置保留策略设置

配置保留策略以指定备份和归档重做日志必须保留多长时间以进行介质恢复。默认的保留策略是REDUNDANCY 1

RMAN> configure retention policy to recovery window of 31 days;

new RMAN configuration parameters:
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 31 DAYS;
new RMAN configuration parameters are successfully stored

RMAN> show retention policy;

RMAN configuration parameters for database with db_unique_name CDB1 are:
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 31 DAYS;

任务 5:配置控制文件和服务器参数文件自动备份

您可以将 RMAN 配置为在每次备份时自动备份控制文件和服务器参数文件。 这称为自动备份(autobackup)。 控制和服务器参数文件对 Oracle 数据库和 RMAN 至关重要。 创建控制文件的自动备份使 RMAN 能够恢复 Oracle 数据库,即使当前控制文件和服务器参数文件丢失。 与典型的数据文件相比,控制和服务器参数文件相对较小,因此,经常备份它们会导致相对较少的存储开销。

如果 Oracle 数据库在 ARCHIVELOG 模式下运行,那么只要控制文件中的 Oracle 数据库结构元数据发生更改,也会进行自动备份。

此配置默认就是打开的:

RMAN> show controlfile autobackup;

RMAN configuration parameters for database with db_unique_name CDB1 are:
CONFIGURE CONTROLFILE AUTOBACKUP ON; # default

RMAN> configure controlfile autobackup on;

new RMAN configuration parameters:
CONFIGURE CONTROLFILE AUTOBACKUP ON;
new RMAN configuration parameters are successfully stored

RMAN> show controlfile autobackup;

RMAN configuration parameters for database with db_unique_name CDB1 are:
CONFIGURE CONTROLFILE AUTOBACKUP ON;

任务 6:启用块更改跟踪

块更改跟踪通过在块更改跟踪文件中记录更改的块来提高增量备份的性能。 在增量备份期间,RMAN 不是扫描所有数据块来识别哪些块已更改,而是使用此文件来识别需要备份的更改块。

您可以在 Oracle 数据库打开或挂载时启用块更改跟踪。 本节假设您打算将块更改跟踪文件创建为数据库区域中的由Oracle 管理的文件,其中 Oracle 数据库维护活动的数据库文件,例如数据文件、控制文件和联机重做日志文件。

alter system set db_create_file_dest = '/opt/oracle/oradata/CDB1';
alter database enable block change tracking;
col filename for a80
select status, filename from v$block_change_tracking;

STATUS     FILENAME
---------- --------------------------------------------------------------------------------
ENABLED    /opt/oracle/oradata/CDB1/CDB1/changetracking/o1_mf_kq3x7884_.chg

实验 5:执行和安排备份

任务 1:执行整个 Oracle 数据库备份

使用rman执行以下:

backup database plus archivelog;

实验设计者为了启发我们的心智,将FRA设置为只能容纳一次全备。所以,为了备份成功,每次备份前都需要删除之前的备份:

delete backup;
list backup summary;

任务 2:显示存储在 RMAN 存储库中的备份信息

使用 LIST 命令查看有关存储在 RMAN 存储库中的备份的信息。 这些信息包括数据文件、单个表空间、归档重做日志文件和控制文件的备份。 您还可以使用此命令显示有关过期和过时备份的信息。

查看备份概况,第4列S列表示状态,A表示Available,X表示Expired,U表示Unavailable。
LV列表示Level of backup,0和1表示增量备份,F表示全量备份,A表示归档备份。
TY列表示备份类型,B表示backup set。说明详见List命令帮助中的表2-16。

RMAN> list backup summary;


List of Backups
===============
Key     TY LV S Device Type Completion Time #Pieces #Copies Compressed Tag
------- -- -- - ----------- --------------- ------- ------- ---------- ---
3       B  A  A DISK        14-NOV-22       1       1       NO         TAG20221114T065745
4       B  F  A DISK        14-NOV-22       1       1       NO         TAG20221114T065746
5       B  F  A DISK        14-NOV-22       1       1       NO         TAG20221114T065746
6       B  F  A DISK        14-NOV-22       1       1       NO         TAG20221114T072701
7       B  A  A DISK        14-NOV-22       1       1       NO         TAG20221114T073657
8       B  F  A DISK        14-NOV-22       1       1       NO         TAG20221114T073658
9       B  F  A DISK        14-NOV-22       1       1       NO         TAG20221114T073658
10      B  A  A DISK        14-NOV-22       1       1       NO         TAG20221114T074125
11      B  F  A DISK        14-NOV-22       1       1       NO         TAG20221114T074126
12      B  F  A DISK        14-NOV-22       1       1       NO         TAG20221114T074126
13      B  F  A DISK        14-NOV-22       1       1       NO         TAG20221114T074126
14      B  A  A DISK        14-NOV-22       1       1       NO         TAG20221114T074504
15      B  F  A DISK        14-NOV-22       1       1       NO         TAG20221114T074505
16      B  A  A DISK        14-NOV-22       1       1       NO         TAG20221114T080049
17      B  F  A DISK        14-NOV-22       1       1       NO         TAG20221114T080050

查看指定备份的详细状态:

RMAN> list backup of datafile 3;


List of Backup Sets
===================


BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
4       Full    1.84G      DISK        00:00:02     14-NOV-22
        BP Key: 4   Status: AVAILABLE  Compressed: NO  Tag: TAG20221114T065746
        Piece Name: /opt/oracle/fast_recovery_area/CDB1/backupset/2022_11_14/o1_mf_nnndf_TAG20221114T065746_kq3svkr0_.bkp
  List of Datafiles in backup set 4
  File LV Type Ckp SCN    Ckp Time  Abs Fuz SCN Sparse Name
  ---- -- ---- ---------- --------- ----------- ------ ----
  3       Full 5507797    14-NOV-22              NO    /opt/oracle/oradata/CDB1/datafile/o1_mf_sysaux_km9rlyfm_.dbf

BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
8       Full    1.83G      DISK        00:00:01     14-NOV-22
        BP Key: 8   Status: AVAILABLE  Compressed: NO  Tag: TAG20221114T073658
        Piece Name: /opt/oracle/fast_recovery_area/CDB1/backupset/2022_11_14/o1_mf_nnndf_TAG20221114T073658_kq3w35x4_.bkp
  List of Datafiles in backup set 8
  File LV Type Ckp SCN    Ckp Time  Abs Fuz SCN Sparse Name
  ---- -- ---- ---------- --------- ----------- ------ ----
  3       Full 5511663    14-NOV-22              NO    /opt/oracle/oradata/CDB1/datafile/o1_mf_sysaux_km9rlyfm_.dbf

BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
12      Full    1.83G      DISK        00:00:01     14-NOV-22
        BP Key: 12   Status: AVAILABLE  Compressed: NO  Tag: TAG20221114T074126
        Piece Name: /opt/oracle/fast_recovery_area/CDB1/backupset/2022_11_14/o1_mf_nnndf_TAG20221114T074126_kq3wh032_.bkp
  List of Datafiles in backup set 12
  File LV Type Ckp SCN    Ckp Time  Abs Fuz SCN Sparse Name
  ---- -- ---- ---------- --------- ----------- ------ ----
  3       Full 5512092    14-NOV-22              NO    /opt/oracle/oradata/CDB1/datafile/o1_mf_sysaux_km9rlyfm_.dbf

BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
17      Full    1.83G      DISK        00:00:01     14-NOV-22
        BP Key: 17   Status: AVAILABLE  Compressed: NO  Tag: TAG20221114T080050
        Piece Name: /opt/oracle/fast_recovery_area/CDB1/backupset/2022_11_14/o1_mf_nnndf_TAG20221114T080050_kq3xlfq9_.bkp
  List of Datafiles in backup set 17
  File LV Type Ckp SCN    Ckp Time  Abs Fuz SCN Sparse Name
  ---- -- ---- ---------- --------- ----------- ------ ----
  3       Full 5513470    14-NOV-22              NO    /opt/oracle/oradata/CDB1/datafile/o1_mf_sysaux_km9rlyfm_.dbf

任务 3:验证备份

验证特定备份会检查这些备份是否存在并且可以恢复。 它不会测试可用备份集是否满足您的可恢复性目标。 例如,可能存在来自 Oracle 数据库的多个表空间的数据文件的映像副本,每个都可以验证。 但是,如果某些表空间不存在有效备份,则无法还原和恢复 Oracle 数据库。

RMAN> list backup summary;


List of Backups
===============
Key     TY LV S Device Type Completion Time #Pieces #Copies Compressed Tag
------- -- -- - ----------- --------------- ------- ------- ---------- ---
18      B  A  A DISK        14-NOV-22       1       1       NO         TAG20221114T081244
19      B  F  A DISK        14-NOV-22       1       1       NO         TAG20221114T081245
20      B  F  A DISK        14-NOV-22       1       1       NO         TAG20221114T081245
21      B  F  A DISK        14-NOV-22       1       1       NO         TAG20221114T081245
22      B  A  A DISK        14-NOV-22       1       1       NO         TAG20221114T081543
23      B  F  A DISK        14-NOV-22       1       1       NO         TAG20221114T081544

RMAN> list backupset;


List of Backup Sets
===================


BS Key  Size       Device Type Elapsed Time Completion Time
------- ---------- ----------- ------------ ---------------
18      10.83M     DISK        00:00:00     14-NOV-Oracle LiveLabs实验: Oracle多租户基础

Oracle LiveLabs实验: Oracle多租户基础

Oracle LiveLabs实验:Oracle RAC Fundamentals

Oracle LiveLabs实验:Install Oracle Database 21c

Oracle LiveLabs实验:DB Security - Oracle Label Security (OLS)

Oracle LiveLabs实验:Oracle Label Security (OLS)