Oracle rman工具使用(真的细)

2024-07-12 1344阅读

Oracle rman工具使用(真的细)

  • 一、Oracle rman工具简介
  • 二、使用rman备份
    • 2.1、rman
      • 2.1.1、功能
      • 2.1.2、rman特点
      • 2.1.3、RMAN 架构
      • 2.1.4、使用
        • 2.1.4.1、连接数据库
          • 2.1.4.1.1、连接本地数据库
          • 2.1.4.1.2、连接远程数据库
          • 2.1.4.2、基本指令
            • 2.1.4.2.1、执行 SQL 语句
            • 2.1.4.2.2、显示 RMAN 默认配置
            • 2.1.5、RMAN 默认配置
              • 2.1.5.1、CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
              • 2.1.5.2、CONFIGURE BACKUP OPTIMIZATION OFF; # default
              • 2.1.5.3、CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
              • 2.1.5.4、CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
              • 2.1.5.5、CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
              • 2.1.5.6、CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
              • 2.1.5.7、CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
              • 2.1.5.8、CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
              • 2.1.5.9、CONFIGURE MAXSETSIZE TO UNLIMITED; # default
              • 2.1.5.10、CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
              • 2.1.5.11、CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
              • 2.1.5.12、CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default
              • 2.1.5.13、CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
              • 2.1.5.14、CONFIGURE SNAPSHOT CONTROLFILE NAME TO 'D:\ORACLE_DATABASE\11.2.0\DBHOME_1\DATABASE\SNCFTZQ.ORA'; # default
              • 2.1.5.15、RMAN 配置参数重置为默认值
              • 2.1.5.16、旧的RMAN 配置参数:
              • 2.1.6、备份类型
                • 2.1.6.1、镜像复制
                • 2.1.6.2、备份集
                • 2.1.7、rman体系结构
                • 2.1.8、RMAN备份相关的动态性能表
                  • 2.1.8.1、v$archived_log
                  • 2.1.8.2、v$backup_corruption
                  • 2.1.8.3、v$copy_corruption
                  • 2.1.8.4、v$backup_datafile
                  • 2.1.8.5、v$backup_redolog
                  • 2.1.8.6、v$backup_set
                  • 2.1.8.7、v$backup_piece
                  • 2.1.9、RMAN 备份前确认
                  • 2.2、配置数据库到归档模式
                    • 2.2.1、查看归档状态
                    • 2.2.2、关闭数据库,启动到amount状态
                    • 2.2.3、修改归档位置,开启数据库再查看
                    • 2.2.4、验证归档
                    • 2.3、使用RMAN进行数据库备份
                      • 2.3.1、修改备份保留时间
                      • 2.3.2、修改 RMAN 备份路径和控制文件
                      • 2.3.3、数据库全备
                      • 2.3.4、报错处理
                        • 2.3.4.1、报错案例一:RMAN-06031
                        • 2.3.4.2、报错案例二:ORA-19502
                        • 2.4、使用RMAN进行归档备份
                          • 2.4.1、查看归档日志的位置
                          • 2.4.2、备份归档日志
                            • 查看归档日志详情
                            • 2.5、使用RMAN进行数据文件备份
                              • 列出构成数据库的数据文件
                              • 2.6、使用RMAN进行增量备份
                                • 2.6.1、0 级备份和全库备份的区别
                                • 2.6.2 做0级增量备份
                                • 三、使用rman恢复
                                  • 3.1、完全恢复
                                    • 3.1.1、数据文件丢失,恢复
                                    • 3.1.2、模拟磁盘损坏,恢复数据文件
                                    • 3.1.3、表空间恢复
                                    • 3.1.4、全库恢复
                                    • 3.2 不完全恢复
                                      • 3.2.1、基于时间点
                                      • 3.2.2、基于日志序列号
                                      • 3.2.3、基于SCN 恢复
                                      • 3.3、如何通过RMAN恢复drop、truncate、delete表的数据
                                        • 3.3.1 drop
                                        • 四、熟悉rman的主要命令
                                          • 4.1、list
                                            • 4.1.1、查看备份信息:list backup
                                            • 4.1.2、列出过期备份:list expired backup;
                                            • 4.1.3、列出所有数据文件的备份集:list backup of database;
                                            • 4.1.4、列出特定表空间的所有数据文件备份集:list backup of tablespace "LOG";
                                            • 4.1.5、列出控制文件备份集:list backup of controlfile;
                                            • 4.1.6、列出归档日志备份集详细信息:list backup of archivelog all
                                            • 4.1.7、按备份类型列出备份:list backup by file;
                                            • 4.2、report
                                              • 4.2.1、报告目标数据库的物理结构、数据文件:report schema;
                                              • 4.2.2、报告最近3天没有被备份的数据文件:report need backup days=3;
                                              • 4.2.3、在USERS表空间上3天未备份的数据文件:report need backup days 3 tablespace users;
                                              • 4.2.4、报告恢复数据文件需要的增量备份个数超过3次的数据文件:report need backup incremental 3;
                                              • 4.2.5、报告备份文件低于2份的所有数据文件:report need backup redundancy 2 database;
                                              • 4.2.6、报告文件报表的恢复需要超过6天的归档日志的数据文件:report need backup recovery window of 6 days;
                                              • 4.2.7、报告数据库所有不可恢复的数据文件:report unrecoverable;
                                              • 4.2.8、报告备份次数超过2次的陈旧备份:report obsolete redundancy 2;
                                              • 4.2.9、报告多余的备份:report obsolete;
                                              • 4.3、crosscheck
                                                • 4.3.1、核对所有备份集:crosscheck backup;
                                                • 4.3.2、核对所有数据文件的备份集:crosscheck backup of database
                                                • 4.3.3、核对特定表空间的备份集:crosscheck backup of tablespace users;
                                                • 4.3.4、核对特定数据文件的备份集:crosscheck backup of datafile 4;
                                                • 4.3.5、核对控制文件的备份集:crosscheck backup of controlfile;
                                                • 4.3.6、核对SPFILE的备份集:crosscheck backup of spfile;
                                                • 4.3.7、核对归档日志的备份集:crosscheck backup of archivelog sequence 3;
                                                • 4.3.8、核对所有映像副本:crosscheck copy;
                                                • 4.3.9、核对所有数据文件的映像副本:crosscheck copy of database;
                                                • 4.3.10、核对特定表空间的映像副本:crosscheck copy of tablespace users;
                                                • 4.3.11、核对特定数据文件的映像副本:crosscheck copy of datafile 6;
                                                • 4.3.12、核对归档日志的映像副本:crosscheck copy of archivelog sequence 4;
                                                • 4.3.13、核对控制文件的映像副本:crosscheck copy of controlfile;
                                                • 4.4、configure
                                                  • show all
                                                  • 4.4.1、CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
                                                  • 4.4.2、CONFIGURE BACKUP OPTIMIZATION OFF;
                                                  • 4.4.3、CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
                                                  • 4.4.4、CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
                                                  • 4.4.5、CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F';
                                                  • 4.4.6、CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
                                                  • 4.4.7、CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
                                                  • 4.4.8、CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
                                                  • 4.4.9、CONFIGURE SNAPSHOT CONTROLFILE NAME TO 'D:/oracle_database/backup/rman/snapcf_test.f';
                                                  • 4.4.10、CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT 'D:/oracle_database/backup/rman/%U_%D_%T';
                                                  • 4.5、delete
                                                    • 4.5.1、删除陈旧备份
                                                    • 4.5.2、其他删除
                                                      • 4.5.2.1、删除 EXPIRED 副本
                                                      • 4.5.2.2、删除特定备份集
                                                      • 4.5.2.3、删除特定备份片
                                                      • 4.5.2.4、删除所有备份集
                                                      • 4.5.2.5、删除特定映像副本
                                                      • 4.5.2.6、删除所有映像副本
                                                      • 4.5.2.7、在备份后删除输入对象
                                                      • 4.5.2.8、删除 EXPIRED 备份
                                                      • 4.5.3、删除所有备份集(不提示)
                                                      • 4.6、RESTORE命令:
                                                        • 4.6.1、数据库恢复
                                                        • 4.6.2、表空间恢复
                                                        • 4.6.3、只读表空间的恢复
                                                        • 4.6.4、恢复 SPFILE/控制文件
                                                        • 4.6.5、归档重做日志的还原
                                                        • 五、如何配置catalog以及使用
                                                          • 5.1、手工建库(也可以dbca建库)
                                                            • 5.1.1、官档的建库脚本示例
                                                            • 5.1.2、创建建库脚本
                                                            • 5.1.3、执行脚本建库
                                                              • 5.1.3.1、声明ORACLE_SID变量
                                                              • 5.1.3.2、编辑初始化参数文件
                                                              • 5.1.3.3、创建服务器参数文件并启动实例
                                                              • 5.1.3.4、运行建库脚本建库
                                                              • 5.1.3.5、然后执行以下脚本:
                                                              • 5.1.3.6、配置tnsnames.ora
                                                              • 5.2、配置数据库
                                                                • 5.2.1、创建表空间
                                                                • 5.2.2、创建用户
                                                                • 5.2.3、创建CATALOG
                                                                • 5.3、创建脚本
                                                                  • 5.3.1、创建脚本
                                                                  • 5.4、更新恢复目录
                                                                  • 5.5、升级catalog(两次确认,敲两次):
                                                                  • 六、如何通过RMAN复制数据库
                                                                  • 七、如何通过rman检查坏块
                                                                    • 7.1、什么是坏块
                                                                      • 坏块分类
                                                                      • 7.2\如何检查
                                                                      • 7.3、如何处理
                                                                      • 八、了解TTS(Transportable TableSpace)
                                                                      • 九、了解RMAN Data Recovery Advisor(DRA)
                                                                      • 十、11g、12c中RMAN的新特性
                                                                        • 10.1、11g中RMAN的新特性
                                                                        • 10.2、12c中RMAN的新特性
                                                                          • 10.2.1、新增用户
                                                                          • 10.2.2、可以直接在RMAN中执行SQL语句
                                                                          • 10.2.3、在RMAN中提供了表级别恢复(RECOVER TABLE)
                                                                          • 10.2.4、RMAN自动恢复到REDO终点的步骤简化
                                                                          • 10.2.5、通过网络远程恢复数据库(Restore/Recover from Service)
                                                                          • 十一、编写RMAN备份的常用脚本
                                                                          • 十二、12 参考文档

                                                                            一、Oracle rman工具简介

                                                                            1. Oracle RMAN(Recovery Manager)是Oracle数据库备份和恢复的官方工具,它提供的备份和恢复功能非常强大和可靠。RMAN可以备份整个数据库或特定表空间、数据文件、控制文件和归档日志,同时还可以进行增量备份和增量恢复。
                                                                            2. RMAN还提供了诸如备份验证、备份优化、备份复制、备份集管理、恢复操作、自动备份、自动恢复等高级功能。它使用的备份和恢复格式是Oracle通用的备份集(Backup Set),这使得备份和恢复非常灵活和高效。
                                                                            3. RMAN使用命令行界面(CLI)和图形用户界面(GUI)进行操作。通过CLI,用户可以通过输入各种命令来备份和恢复Oracle数据库。通过GUI,用户可以使用图形界面来执行备份和恢复操作,并通过图形化的操作界面进行配置和管理。
                                                                            4. 总之,Oracle RMAN是Oracle数据库备份和恢复的必备工具,它提供了非常可靠和高效的备份和恢复功能,可以为数据库管理员提供很大的便利和帮助。

                                                                            二、使用rman备份

                                                                            2.1、rman

                                                                            2.1.1、功能

                                                                            1. Recovery Manager,是备份和恢复数据库的管理工具
                                                                            2. 由 server process 进行备份和恢复
                                                                            3. rman 备份的文件种类

                                                                              ①datafile(database、tablespace、datafile)

                                                                              ②controlfile、spfile

                                                                              ③archivelog

                                                                            4. 在归档模式下支持非一致性备份(热备)

                                                                              非归档方式的 RMAN 只能冷备,并在 mount 下做。

                                                                              非归档方式的 RMAN 恢复只能还原最后一次备份。

                                                                            2.1.2、rman特点

                                                                            1. 不备份数据文件中未分配的块,以及未使用的块。节省时间空间。
                                                                            2. 不备份临时表空间
                                                                            3. 可以实现增量备份
                                                                            4. 支持多通道并行工作
                                                                            5. 可以备份 ASM 文件

                                                                            2.1.3、RMAN 架构

                                                                            Oracle rman工具使用(真的细)

                                                                            1. 可连接三类数据库:target database(备份的目标库) ,duplicate database(复制数据库), catalog database(目录数据库)。
                                                                            2. 存储设备:disk 、tape (sbt 磁带机)存放备份文件的设备
                                                                            3. channel :目标库和存储设备之间备份恢复通道(服务进程)默认最少启动一个 channel, 可同时启动多个 channel 并发操作。
                                                                            4. server process:用于备份和恢复的进程
                                                                            5. rman 的元数据:记录备份的信息(放在目标库的 controlfile 里)
                                                                            6. catalog database :集中管理、存放备份的元数据 metadata,还可以存储备份脚本
                                                                            7. MML:media manage layer 介质管理层:用于管理磁带机的库文件或驱动

                                                                            2.1.4、使用

                                                                            2.1.4.1、连接数据库
                                                                            2.1.4.1.1、连接本地数据库

                                                                            rman target /

                                                                            Oracle rman工具使用(真的细)

                                                                            2.1.4.1.2、连接远程数据库
                                                                            rman target sys/密码@IP地址或主机名/数据库实例名称
                                                                            

                                                                            Oracle rman工具使用(真的细)

                                                                            2.1.4.2、基本指令
                                                                            2.1.4.2.1、执行 SQL 语句
                                                                            RMAN> SQL 'ALTER SYSTEM SWITCH LOGFILE';
                                                                            

                                                                            Oracle rman工具使用(真的细)

                                                                            2.1.4.2.2、显示 RMAN 默认配置
                                                                            RMAN> SHOW ALL;
                                                                            

                                                                            执行结果:

                                                                            RMAN> SHOW ALL;
                                                                            db_unique_name 为 TZQ 的数据库的 RMAN 配置参数为:
                                                                            CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
                                                                            CONFIGURE BACKUP OPTIMIZATION OFF; # default
                                                                            CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
                                                                            CONFIGURE CONTROLFILE AUTOBACKUP OFF; # 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 ARCHIVELOG DELETION POLICY TO NONE; # default
                                                                            CONFIGURE SNAPSHOT CONTROLFILE NAME TO 'D:\ORACLE_DATABASE\11.2.0\DBHOME_1\DATABASE\SNCFTZQ.ORA'; # default
                                                                            RMAN>
                                                                            

                                                                            执行情况截图:

                                                                            Oracle rman工具使用(真的细)

                                                                            2.1.5、RMAN 默认配置

                                                                            解读上面的默认配置信息:

                                                                            2.1.5.1、CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
                                                                            • 保留策略:用来决定哪些备份是有效的,而哪些备份是淘汰的。决定了备份是否为 obsolete(过时),RMAN 还原备份时不会选择 obsolete 的备份。

                                                                              reduadancy 冗余度

                                                                              2.1.5.2、CONFIGURE BACKUP OPTIMIZATION OFF; # default
                                                                              • 备份优化:如果优化设置打开, 针对归档日志,只读或脱机表空间的数据文件,因为这些文件是不会变 化的,备份集运行一个优化算法。全库备份时跳过重复的备份文件。

                                                                                开启备份优化:

                                                                                CONFIGURE BACKUP OPTIMIZATION on;
                                                                                

                                                                                Oracle rman工具使用(真的细)

                                                                                将 users 表空间设置为只读,SQL命令行下执行:

                                                                                alter tablespace users read only;
                                                                                

                                                                                查一下表空间情况:

                                                                                select tablespace_name,status from dba_tablespaces;
                                                                                

                                                                                Oracle rman工具使用(真的细)

                                                                                我们发现,USERS表空间变为READ ONLY了。

                                                                                单独备份时依然正常执行,不做优化。

                                                                                rman命令行下执行下面命令:

                                                                                backup tablespace users format 'D:/oracle_database/oradata/tzq/users_%d_%T_%U.bak';
                                                                                

                                                                                下面截图是执行情况:

                                                                                Oracle rman工具使用(真的细)

                                                                                查看本地磁盘:

                                                                                Oracle rman工具使用(真的细)

                                                                                发现文件已经创建了。

                                                                                2.1.5.3、CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
                                                                                • 设备类型有两种,可以是磁盘(DISK),或者磁带(STB),默认为磁盘。
                                                                                  2.1.5.4、CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
                                                                                  • 设置控制文件自动备份
                                                                                    • off:
                                                                                      • 默认情况下,在备份 system 表空间时,会备份控制文件和 spfile 。
                                                                                      • 但是备份 users 表空间时不备控制文件和 spfile
                                                                                      • on:
                                                                                        • ①在做任何文件的备份时,会自动备份控制文件和 spfile
                                                                                        • ②数据库的物理结构发生变化时,也自动备份 controlfile(延迟创建)
                                                                                          2.1.5.5、CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO ‘%F’; # default
                                                                                          • 给出控制文件自动备份的路径和命名方式,缺省是‘%F’,控制文件自动备份将放入 db_recovery_file_dest 目录下,也可以指定到其他地方

                                                                                            如 :

                                                                                            CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/u01/backup/rman/%F';
                                                                                            

                                                                                            联系:

                                                                                            第四行和第五行的环境变量是有关系。当第四行开启 AUTOBACKUP ON 后,控制文件备份将 放入第五行指定的目的地,这样 RMAN 在恢复控制文件备份时能自动找到控制文件备份。即 和 restore controlfile from autobackup 命令配套。

                                                                                            2.1.5.6、CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
                                                                                            2.1.5.7、CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
                                                                                            • 多重备份集 多路复用
                                                                                              2.1.5.8、CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
                                                                                              • 归档备份 多路复用
                                                                                                2.1.5.9、CONFIGURE MAXSETSIZE TO UNLIMITED; # default
                                                                                                • 该配置限制通道上备份集的最大尺寸,单位支持 Bytes 、KB、MB、GB,默认值是 unlimited, 可以在备份语句中设置
                                                                                                  2.1.5.10、CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
                                                                                                  2.1.5.11、CONFIGURE ENCRYPTION ALGORITHM ‘AES128’; # default
                                                                                                  2.1.5.12、CONFIGURE COMPRESSION ALGORITHM ‘BASIC’ AS OF RELEASE ‘DEFAULT’ OPTIMIZE FOR LOAD TRUE ; # default
                                                                                                  • 压缩只能是针对 backup set; 不要将 RMAN 的压缩和外部压缩实用程序混合在一起做
                                                                                                    2.1.5.13、CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
                                                                                                    • 对于归档文件,可以根据保留策略,在备份脚本中指定删除归档文件的语句。
                                                                                                      2.1.5.14、CONFIGURE SNAPSHOT CONTROLFILE NAME TO ‘D:\ORACLE_DATABASE\11.2.0\DBHOME_1\DATABASE\SNCFTZQ.ORA’; # default
                                                                                                      • 目标库控制文件与 catalog 目录库做全同步或者备份当前控制文件时的时候,需要建立一个 controlfile 的快照,这个参数指定快照存放位置。
                                                                                                        2.1.5.15、RMAN 配置参数重置为默认值
                                                                                                        RMAN> configure retention policy clear;
                                                                                                        
                                                                                                        2.1.5.16、旧的RMAN 配置参数:
                                                                                                        CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 3 DAYS;
                                                                                                        

                                                                                                        2.1.6、备份类型

                                                                                                        2.1.6.1、镜像复制
                                                                                                        1. 首先大家需要明了这个概念,rman 中的镜像复制实质与通过操作系统copy 命令备份相同,甚至连命令的格式都相似,只不过直接应用操作系统的copy 命令复制数据文件时,只是文件拷贝,而rman 的copy 则能够在复制的同时,验证数据的有效性。
                                                                                                        2.1.6.2、备份集
                                                                                                        1. 备份集(BACKUPSET)表示进行一次备份所产生的所有备份片集合,是一个逻辑上的概念。备份片(BACKUPPIECE)表示一个由 RMAN 产生备份的文件.用 OS 工具可以实实在在的看到。一个备份集由一个或多个备份片组成。(与表空间、数据文件关系类似)

                                                                                                          一个数据文件可以跨备份片存在,而不能跨备份集存在。

                                                                                                        2.1.7、rman体系结构

                                                                                                        Oracle rman工具使用(真的细)

                                                                                                        1. RMAN要进行备份的数据库叫做目标数据库。
                                                                                                        2. RMAN是一个客户端程序,需要建立到目标数据库的客户端连接,并在目标数据库上创建对应的服务器进程以及session,RMAN输入的各个命令,从客户端传递到服务器,由服务器进程负责执行(Rman命令解释程序,转换为数据库上的远程调用RPC)。Rman由两部分组成:RMAN可执行程序和脚本文件recover.bsp。

                                                                                                          其中RMAN可执行程序只是一个命令接口,提供接口解释命令返回结果。

                                                                                                          其中recover.bsp是库文件,调用目标数据库相应的程序包,完成实质性工作。

                                                                                                        3. Rman信息库(元数据)来源及位置

                                                                                                          备份过程中,RMAN读取目标数据库的控制文件,从而获得目标数据库里包含哪些数据文件、归档日志文件、以及各个检查点SCN,指导RMAN完成备份和恢复的具体操作;RMAN获得了需要备份的文件列表以后,在将数据备份到备份介质上时,需要建立到这些备份介质的通道(channel)。一旦建立通道。数据就会从该通道备份到指定的备份介质上,每次备份恢复,我们都可以创建多个通道以加快速度。

                                                                                                          通道的类型就决定了要将数据库备份到哪种介质上,两种通道类型:磁盘通道(硬盘和FRA)和磁带通道。

                                                                                                        4. RMAN信息库(rman repository),RMAN备份过程中产生的元数据,包括备份文件的名称、路径、完成备份的时间、检查点SCN等数据。

                                                                                                          rman信息库可以存放在两个位置:目标数据库的控制文件和恢复目录(recovery catalog)。

                                                                                                        2.1.8、RMAN备份相关的动态性能表

                                                                                                        2.1.8.1、v$archived_log
                                                                                                        • 包含所有归档重做日志文件的创建情况,备份情况以及其他信息。
                                                                                                          2.1.8.2、v$backup_corruption
                                                                                                          • 这个视图显示了RMAN 在哪些备份集中发现了损坏的数据坏。在你使用BACKUP VALIDATE 命令对备份集进行检查时如果发现了损坏的数据块,RMAN 将在这个视图中写入记录。
                                                                                                            2.1.8.3、v$copy_corruption
                                                                                                            • 本视图显示了哪些镜像复制备份文件已经被损坏。
                                                                                                              2.1.8.4、v$backup_datafile
                                                                                                              • 本视图通常用来获取每个数据文件中非空白数据块的数量,从而帮助你创建出大小基本相等的备份集。另外,在视图中也包含了数据文件中损坏的数据块的信息。
                                                                                                                2.1.8.5、v$backup_redolog
                                                                                                                • 本视图显示在现有的备份集中有哪些归档重做日志文件。
                                                                                                                  2.1.8.6、v$backup_set
                                                                                                                  • 本视图显示了已经创建的备份集的信息。
                                                                                                                    2.1.8.7、v$backup_piece
                                                                                                                    • 本视图显示了已经创建的备份片段的信息

                                                                                                                      Oracle rman工具使用(真的细)

                                                                                                                      2.1.9、RMAN 备份前确认

                                                                                                                      打开或关闭 (冷热)

                                                                                                                      完整或部分 (全库、表空间、数据文件)

                                                                                                                      完整或增量

                                                                                                                      到磁盘还是磁带上

                                                                                                                      副本或备份集

                                                                                                                      2.2、配置数据库到归档模式

                                                                                                                      2.2.1、查看归档状态

                                                                                                                      SQL窗口执行下面的命令:

                                                                                                                      archive log list
                                                                                                                      

                                                                                                                      查询结果截图如下:

                                                                                                                      Oracle rman工具使用(真的细)

                                                                                                                      2.2.2、关闭数据库,启动到amount状态

                                                                                                                      SQL窗口执行下面的命令:

                                                                                                                      shutdown immediate
                                                                                                                      startup  mount
                                                                                                                      

                                                                                                                      Oracle rman工具使用(真的细)

                                                                                                                      Oracle rman工具使用(真的细)

                                                                                                                      2.2.3、修改归档位置,开启数据库再查看

                                                                                                                      SQL窗口下执行:

                                                                                                                      alter system set log_archive_dest_1='location=D:/oracle_database/archive';
                                                                                                                      

                                                                                                                      Oracle rman工具使用(真的细)

                                                                                                                      alter database archivelog;
                                                                                                                      alter database open;
                                                                                                                      archive log list
                                                                                                                      

                                                                                                                      Oracle rman工具使用(真的细)

                                                                                                                      2.2.4、验证归档

                                                                                                                      SQL窗口下执行:

                                                                                                                      alter system switch logfile;
                                                                                                                      

                                                                                                                      Oracle rman工具使用(真的细)

                                                                                                                      Oracle rman工具使用(真的细)

                                                                                                                      2.3、使用RMAN进行数据库备份

                                                                                                                      2.3.1、修改备份保留时间

                                                                                                                      SQL窗口下执行:

                                                                                                                      show parameter keep_time
                                                                                                                      alter system set control_file_record_keep_time=30;
                                                                                                                      show parameter keep_time
                                                                                                                      

                                                                                                                      Oracle rman工具使用(真的细)

                                                                                                                      2.3.2、修改 RMAN 备份路径和控制文件

                                                                                                                      rman窗口下执行:

                                                                                                                      CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'D:/oracle_database/backup/rman/%F';
                                                                                                                      configure channel device type disk format 'D:/oracle_database/backup/rman/%U_%D_%T';
                                                                                                                      configure snapshot controlfile name to 'D:/oracle_database/backup/rman/snapcf_test.f';
                                                                                                                      

                                                                                                                      Oracle rman工具使用(真的细)

                                                                                                                      show all;
                                                                                                                      

                                                                                                                      Oracle rman工具使用(真的细)

                                                                                                                      2.3.3、数据库全备

                                                                                                                      rman窗口下执行:

                                                                                                                      backup database format 'D:/oracle_database/backup/rman/db_%d_%T_%U.bak';
                                                                                                                      

                                                                                                                      Oracle rman工具使用(真的细)

                                                                                                                      2.3.4、报错处理

                                                                                                                      2.3.4.1、报错案例一:RMAN-06031
                                                                                                                      RMAN> backup database format 'D:/oracle_database/backup/rman/db_%d_%T_%U.bak';
                                                                                                                      Starting backup at 07-SEP-2023 03:03:13
                                                                                                                      using channel ORA_DISK_1
                                                                                                                      RMAN-00571: ===========================================================
                                                                                                                      RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
                                                                                                                      RMAN-00571: ===========================================================
                                                                                                                      RMAN-03002: failure of backup command at 09/07/2023 03:03:13
                                                                                                                      RMAN-20021: database not set
                                                                                                                      RMAN-06031: could not translate database keyword
                                                                                                                      

                                                                                                                      错误分析及解决方案:2个会话,我在另外一个会话将数据库由mount改为open,但是本回话的rman没有收到数据库打开的通知。退出rman然后再进即可。

                                                                                                                      2.3.4.2、报错案例二:ORA-19502
                                                                                                                      RMAN-03009: failure of backup command on ORA_DISK_1 channel at 09/07/2023 03:19:28
                                                                                                                      ORA-19502: write error on file "D:/oracle_database/backup/rman/db_TEST1_20230907_0c25o5dp_1_1.bak", block number 135552 (block size=8192)
                                                                                                                      ORA-27072: File I/O error
                                                                                                                      Linux-x86_64 Error: 28: No space left on device
                                                                                                                      Additional information: 4
                                                                                                                      Additional information: 135552
                                                                                                                      Additional information: -1
                                                                                                                      

                                                                                                                      错误分析及解决方案:磁盘空间不足。删除过期备份或者增加空间。

                                                                                                                      2.4、使用RMAN进行归档备份

                                                                                                                      2.4.1、查看归档日志的位置

                                                                                                                      SQL窗口下执行下面命令:

                                                                                                                      show parameter log_archive_dest_1;
                                                                                                                      

                                                                                                                      Oracle rman工具使用(真的细)

                                                                                                                      2.4.2、备份归档日志

                                                                                                                      rman窗口下执行:

                                                                                                                      backup as compressed backupset archivelog all delete input format 'D:/oracle_database/archive/archivelog_%d_%I_%s_%p_%T';
                                                                                                                      

                                                                                                                      delete input 参数:在备份完成后,删除归档日志。

                                                                                                                      Oracle rman工具使用(真的细)

                                                                                                                      Oracle rman工具使用(真的细)

                                                                                                                      查看归档日志详情
                                                                                                                      list backup of archivelog all;
                                                                                                                      

                                                                                                                      Oracle rman工具使用(真的细)

                                                                                                                      2.5、使用RMAN进行数据文件备份

                                                                                                                      • 备份数据文件,可单个数据文件备份,即镜像备份,如backup as copy datafile 1 也可以将多个数据文件作为备份集进行备份: datafile 1,2,3,4

                                                                                                                        列出构成数据库的数据文件

                                                                                                                        RMAN>  report schema;
                                                                                                                        

                                                                                                                        Oracle rman工具使用(真的细)

                                                                                                                        backup datafile 4 format 'D:/oracle_database/backup/rman/users_%d_%T_%U.bak';
                                                                                                                        

                                                                                                                        Oracle rman工具使用(真的细)

                                                                                                                        report obsolete;
                                                                                                                        

                                                                                                                        Oracle rman工具使用(真的细)

                                                                                                                        再次备份后,去显示过时备份(根据保留策略,不需要)

                                                                                                                        Oracle rman工具使用(真的细)

                                                                                                                        Oracle rman工具使用(真的细)

                                                                                                                        删除过时备份

                                                                                                                        delete obsolete;
                                                                                                                        

                                                                                                                        Oracle rman工具使用(真的细)

                                                                                                                        delete backupset 2;
                                                                                                                        

                                                                                                                        Oracle rman工具使用(真的细)

                                                                                                                        list backup;
                                                                                                                        

                                                                                                                        Oracle rman工具使用(真的细)

                                                                                                                        2.6、使用RMAN进行增量备份

                                                                                                                        • 所谓增量备份,顾名思义即是每次备份仅操作那些发生了"变化"的数据块。RMAN 中增量备份有两种:Differential 方式和Cumulative 方式。级别0-4.
                                                                                                                          • 1、差异备份 Differential ( DEFUALT )

                                                                                                                            备份上级及同级以来所有变化的数据块

                                                                                                                          • 2、累积增量备份 Cumulative

                                                                                                                            备份上级以来所有变化的数据块

                                                                                                                            2.6.1、0 级备份和全库备份的区别

                                                                                                                            1. 全库备份不能作为 1 级备份的基础
                                                                                                                            2. 全库备份会对 unused 数据库做备份
                                                                                                                              • 0级备份

                                                                                                                                backup incremental level 0 database;

                                                                                                                              • 1 级差异增量

                                                                                                                                backup incremental level 1 database;

                                                                                                                              • 1 级累计增量

                                                                                                                                backup incremental level 1 cumulative database;

                                                                                                                            2.6.2 做0级增量备份

                                                                                                                            rman窗口下执行:

                                                                                                                            backup incremental level=0 database format 'D:/oracle_database/backup/rman/db_%d_%T_%U.bak';
                                                                                                                            

                                                                                                                            Oracle rman工具使用(真的细)

                                                                                                                            如果从来没有做过增量备份那么无论level写几做的还是0级增量备份。

                                                                                                                            模拟有业务,在表中增加数据:

                                                                                                                            进入scott schema下执行下面插入数据:

                                                                                                                            Oracle rman工具使用(真的细)

                                                                                                                            报错,修改USERS表空间为读写权限:

                                                                                                                            alter tablespace users read write;
                                                                                                                            select tablespace_name,status from dba_tablespaces;
                                                                                                                            

                                                                                                                            Oracle rman工具使用(真的细)

                                                                                                                            scott下执行:

                                                                                                                            insert into emp (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
                                                                                                                            values (7999, 'TZQ', 'PRESIDENT', NULL, to_date('31-05-1984', 'dd-mm-yyyy'), 18000.00, null, 10);
                                                                                                                            COMMIT;
                                                                                                                            SELECT * FROM emp;
                                                                                                                            

                                                                                                                            Oracle rman工具使用(真的细)

                                                                                                                            还是用dba角色执行:

                                                                                                                            alter system switch logfile;
                                                                                                                            

                                                                                                                            Oracle rman工具使用(真的细)

                                                                                                                            做一级增量备份。默认是差异增量备份(Oracle要对所有的数据块进 行检查看哪些块被修改了,检查的时间会有点长)。

                                                                                                                            rman下执行:

                                                                                                                            backup incremental level=1 database format 'D:/oracle_database/backup/rman/db_%d_%T_%U.bak';
                                                                                                                            

                                                                                                                            Oracle rman工具使用(真的细)

                                                                                                                            三、使用rman恢复

                                                                                                                            • 可以在三个级别恢复,数据库,表空间,数据文件。
                                                                                                                              • (1) 在RMAN完全恢复中主要使用两个命令,restore 和 recover 。
                                                                                                                                • recover 恢复:

                                                                                                                                  ①归档模式:完全恢复和不完全恢复

                                                                                                                                  ②非归档模式:只能还原到最后一次备份状态(restore恢复)

                                                                                                                                • (2) 执行 rman 备份脚本先对数据库做一个备份 (如果是 archived 模式可以做热备)
                                                                                                                                • (3) 实现完全恢复,需要自备份以来的归档日志和当前日志文件完整,保证日志的连续性。

                                                                                                                                  在完全恢复中,通过使用完整的备份集和归档日志来还原和重做所有的数据修改操作,可以确保数据库在崩溃点之后的所有更改都被恢复,因此不会丢失数据。

                                                                                                                                  在不完全恢复中,只使用部分备份集和归档日志来还原和重做特定时间点之前的数据修改操作,可能会导致在该时间点之后的数据修改丢失。因此,在不完全恢复中,存在数据丢失的风险。

                                                                                                                                  3.1、完全恢复

                                                                                                                                  3.1.1、数据文件丢失,恢复

                                                                                                                                  备份LOG2数据文件:

                                                                                                                                  rman窗口下执行:

                                                                                                                                  report schema;
                                                                                                                                  

                                                                                                                                  Oracle rman工具使用(真的细)

                                                                                                                                  backup datafile 7 format 'D:/oracle_database/backup/rman/log2_%d_%T_%U.bak';
                                                                                                                                  

                                                                                                                                  Oracle rman工具使用(真的细)

                                                                                                                                  进行0级备份

                                                                                                                                  backup incremental level 0 datafile 7 format'D:/oracle_database/backup/rman/log2_%d_%T_%U.bak';
                                                                                                                                  

                                                                                                                                  Oracle rman工具使用(真的细)

                                                                                                                                  关闭数据库,再删除数据文件。

                                                                                                                                  Oracle rman工具使用(真的细)

                                                                                                                                  这里把 LOG2.DBF 重命名为 LOG2.DBF-bak

                                                                                                                                  Oracle rman工具使用(真的细)

                                                                                                                                  将数据库置于mount状态,RMAN连接上,还原和恢复数据文件,打开数据库

                                                                                                                                  Oracle rman工具使用(真的细)

                                                                                                                                  打开会报错,缺失数据文件。

                                                                                                                                  Oracle rman工具使用(真的细)

                                                                                                                                  重新进入rman:

                                                                                                                                  Oracle rman工具使用(真的细)

                                                                                                                                  还原数据文件:

                                                                                                                                  restore datafile 'D:/oracle_database/oradata/tzq/LOG2.DBF';
                                                                                                                                  

                                                                                                                                  Oracle rman工具使用(真的细)

                                                                                                                                  Oracle rman工具使用(真的细)

                                                                                                                                  恢复数据文件:

                                                                                                                                  recover datafile 'D:/oracle_database/oradata/tzq/LOG2.DBF';
                                                                                                                                  

                                                                                                                                  Oracle rman工具使用(真的细)

                                                                                                                                  用rman开启数据库:

                                                                                                                                  RMAN> alter database open;
                                                                                                                                  

                                                                                                                                  Oracle rman工具使用(真的细)

                                                                                                                                  3.1.2、模拟磁盘损坏,恢复数据文件

                                                                                                                                  SQL窗口执行:

                                                                                                                                  shutdown immediate;
                                                                                                                                  startup mount;
                                                                                                                                  

                                                                                                                                  Oracle rman工具使用(真的细)

                                                                                                                                  删掉数据文件:LOG2.DBF,这里改为LOG2.DBF-bak2

                                                                                                                                  Oracle rman工具使用(真的细)

                                                                                                                                  打开数据库报错:

                                                                                                                                  alter database open;
                                                                                                                                  

                                                                                                                                  Oracle rman工具使用(真的细)

                                                                                                                                  通过查看视图v$recover_file和v$datafile可以确定是哪个文件出了问 题。

                                                                                                                                  select * from v$recover_file;
                                                                                                                                  

                                                                                                                                  Oracle rman工具使用(真的细)

                                                                                                                                  查看数据文件名字:

                                                                                                                                  select file#,name from v$datafile;
                                                                                                                                  

                                                                                                                                  Oracle rman工具使用(真的细)

                                                                                                                                  还原数据文件,#把文件恢复到另一个目录

                                                                                                                                  set newname for datafile 7 to 'D:/oracle_database/oradata/LOG2.DBF';
                                                                                                                                  

                                                                                                                                  使用这个命令( switch datafile 7;)会更新控制文件

                                                                                                                                  run{
                                                                                                                                  set newname for datafile 7 to 'D:/oracle_database/oradata/LOG2.DBF';
                                                                                                                                  restore datafile 7;
                                                                                                                                  switch datafile 7;
                                                                                                                                  recover datafile 7;
                                                                                                                                  alter database open;}
                                                                                                                                  

                                                                                                                                  Oracle rman工具使用(真的细)

                                                                                                                                  Oracle rman工具使用(真的细)

                                                                                                                                  SQL窗口查询数据库实例状态:

                                                                                                                                  select status from v$instance;
                                                                                                                                  

                                                                                                                                  Oracle rman工具使用(真的细)

                                                                                                                                  3.1.3、表空间恢复

                                                                                                                                  在表空间LOG中创建测试表 TZQ_TEST_001 :

                                                                                                                                  CREATE TABLE TZQ_TEST_001 (
                                                                                                                                    ID NUMBER,
                                                                                                                                    NAME VARCHAR2(100)
                                                                                                                                  ) TABLESPACE LOG;
                                                                                                                                  INSERT INTO TZQ_TEST_001 SELECT 1,'tzq001' FROM dual;
                                                                                                                                  COMMIT;
                                                                                                                                  

                                                                                                                                  删除数据文件:

                                                                                                                                  Oracle rman工具使用(真的细)

                                                                                                                                  Oracle rman工具使用(真的细)

                                                                                                                                  查询恢复文件信息:

                                                                                                                                  select * from v$recover_file;
                                                                                                                                  

                                                                                                                                  Oracle rman工具使用(真的细)

                                                                                                                                  恢复表空间

                                                                                                                                  RMAN窗口下执行:

                                                                                                                                  run{
                                                                                                                                  sql 'alter database datafile 7 offline';
                                                                                                                                  restore tablespace "LOG";
                                                                                                                                  recover tablespace "LOG";
                                                                                                                                  sql 'alter database datafile 7 online';
                                                                                                                                  alter database open;
                                                                                                                                  }
                                                                                                                                  
                                                                                                                                  run{
                                                                                                                                  restore datafile 'D:\ORACLE_DATABASE\ORADATA\TZQ\USERS01.DBF';
                                                                                                                                  recover datafile 'D:\ORACLE_DATABASE\ORADATA\TZQ\USERS01.DBF';
                                                                                                                                  alter database open;
                                                                                                                                  }
                                                                                                                                  
                                                                                                                                  run{
                                                                                                                                  restore datafile 'D:\ORACLE_DATABASE\ORADATA\TZQ\TZQ.DBF';
                                                                                                                                  recover datafile 'D:\ORACLE_DATABASE\ORADATA\TZQ\TZQ.DBF';
                                                                                                                                  alter database open;
                                                                                                                                  }
                                                                                                                                  

                                                                                                                                  3.1.4、全库恢复

                                                                                                                                  sqlplus / as sysdba
                                                                                                                                  shutdown immediate;
                                                                                                                                  startup mount;
                                                                                                                                  

                                                                                                                                  Oracle rman工具使用(真的细)

                                                                                                                                  全库恢复脚本:

                                                                                                                                  run{
                                                                                                                                  restore database;
                                                                                                                                  recover database;
                                                                                                                                  alter database open;}
                                                                                                                                  

                                                                                                                                  执行情况:

                                                                                                                                  C:\Windows\System32>rman target /
                                                                                                                                  恢复管理器: Release 11.2.0.4.0 - Production on 星期日 9月 17 23:41:58 2023
                                                                                                                                  Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.
                                                                                                                                  已连接到目标数据库: TZQ (DBID=1419139265, 未打开)
                                                                                                                                  RMAN> run{restore database;recover database;alter database open;}
                                                                                                                                  启动 restore 于 17-9月 -23
                                                                                                                                  使用目标数据库控制文件替代恢复目录
                                                                                                                                  分配的通道: ORA_DISK_1
                                                                                                                                  通道 ORA_DISK_1: SID=119 设备类型=DISK
                                                                                                                                  通道 ORA_DISK_1: 正在开始还原数据文件备份集
                                                                                                                                  通道 ORA_DISK_1: 正在指定从备份集还原的数据文件
                                                                                                                                  通道 ORA_DISK_1: 将数据文件 00001 还原到 D:\ORACLE_DATABASE\ORADATA\TZQ\SYSTEM01.DBF
                                                                                                                                  通道 ORA_DISK_1: 将数据文件 00002 还原到 D:\ORACLE_DATABASE\ORADATA\TZQ\SYSAUX01.DBF
                                                                                                                                  通道 ORA_DISK_1: 将数据文件 00003 还原到 D:\ORACLE_DATABASE\ORADATA\TZQ\UNDOTBS01.DBF
                                                                                                                                  通道 ORA_DISK_1: 将数据文件 00004 还原到 D:\ORACLE_DATABASE\ORADATA\TZQ\USERS01.DBF
                                                                                                                                  通道 ORA_DISK_1: 将数据文件 00005 还原到 D:\ORACLE_DATABASE\ORADATA\TZQ\LOG.DBF
                                                                                                                                  通道 ORA_DISK_1: 将数据文件 00006 还原到 D:\ORACLE_DATABASE\ORADATA\TZQ\TZQ.DBF
                                                                                                                                  通道 ORA_DISK_1: 正在读取备份片段 D:\ORACLE_DATABASE\BACKUP\RMAN\DB_TZQ_20230917_0826KI13_1_1.BAK
                                                                                                                                  通道 ORA_DISK_1: 段句柄 = D:\ORACLE_DATABASE\BACKUP\RMAN\DB_TZQ_20230917_0826KI13_1_1.BAK 标记 = TAG20230917T214611
                                                                                                                                  通道 ORA_DISK_1: 已还原备份片段 1
                                                                                                                                  通道 ORA_DISK_1: 还原完成, 用时: 00:00:03
                                                                                                                                  通道 ORA_DISK_1: 正在开始还原数据文件备份集
                                                                                                                                  通道 ORA_DISK_1: 正在指定从备份集还原的数据文件
                                                                                                                                  通道 ORA_DISK_1: 将数据文件 00007 还原到 D:\ORACLE_DATABASE\ORADATA\LOG2.DBF
                                                                                                                                  通道 ORA_DISK_1: 正在读取备份片段 D:\ORACLE_DATABASE\BACKUP\RMAN\LOG2_TZQ_20230917_0D26KK4S_1_1.BAK
                                                                                                                                  通道 ORA_DISK_1: 段句柄 = D:\ORACLE_DATABASE\BACKUP\RMAN\LOG2_TZQ_20230917_0D26KK4S_1_1.BAK 标记 = TAG20230917T222220
                                                                                                                                  通道 ORA_DISK_1: 已还原备份片段 1
                                                                                                                                  通道 ORA_DISK_1: 还原完成, 用时: 00:00:07
                                                                                                                                  完成 restore 于 17-9月 -23
                                                                                                                                  启动 recover 于 17-9月 -23
                                                                                                                                  使用通道 ORA_DISK_1
                                                                                                                                  通道 ORA_DISK_1: 正在开始还原增量数据文件备份集
                                                                                                                                  通道 ORA_DISK_1: 正在指定从备份集还原的数据文件
                                                                                                                                  数据文件 00001 的还原目标: D:\ORACLE_DATABASE\ORADATA\TZQ\SYSTEM01.DBF
                                                                                                                                  数据文件 00002 的还原目标: D:\ORACLE_DATABASE\ORADATA\TZQ\SYSAUX01.DBF
                                                                                                                                  数据文件 00003 的还原目标: D:\ORACLE_DATABASE\ORADATA\TZQ\UNDOTBS01.DBF
                                                                                                                                  数据文件 00004 的还原目标: D:\ORACLE_DATABASE\ORADATA\TZQ\USERS01.DBF
                                                                                                                                  数据文件 00005 的还原目标: D:\ORACLE_DATABASE\ORADATA\TZQ\LOG.DBF
                                                                                                                                  数据文件 00006 的还原目标: D:\ORACLE_DATABASE\ORADATA\TZQ\TZQ.DBF
                                                                                                                                  通道 ORA_DISK_1: 正在读取备份片段 D:\ORACLE_DATABASE\BACKUP\RMAN\DB_TZQ_20230917_0A26KJ7J_1_1.BAK
                                                                                                                                  通道 ORA_DISK_1: 段句柄 = D:\ORACLE_DATABASE\BACKUP\RMAN\DB_TZQ_20230917_0A26KJ7J_1_1.BAK 标记 = TAG20230917T220643
                                                                                                                                  通道 ORA_DISK_1: 已还原备份片段 1
                                                                                                                                  通道 ORA_DISK_1: 还原完成, 用时: 00:00:01
                                                                                                                                  正在开始介质的恢复
                                                                                                                                  介质恢复完成, 用时: 00:00:01
                                                                                                                                  完成 recover 于 17-9月 -23
                                                                                                                                  数据库已打开
                                                                                                                                  RMAN>
                                                                                                                                  

                                                                                                                                  3.2 不完全恢复

                                                                                                                                  • 说明:考虑基于时间点和SCN的不完全恢复场景

                                                                                                                                    3.2.1、基于时间点

                                                                                                                                    • 场景:数据库在T0时间点做了全备,T1时间点由于误操作update了整张表,此时归档日志连续并完整,可以通过RMAN基于时间点不完全恢复,将数据库恢复到T1时间点(不包含T1)之前。

                                                                                                                                      解决方法: 通过指定时间执行RMAN不完全恢复

                                                                                                                                      T0时间点RMAN全备

                                                                                                                                      RMAN窗口下执行:

                                                                                                                                      backup as compressed backupset database format 'D:/oracle_database/backup/rman/db_%d_%T_%U.bak';
                                                                                                                                      

                                                                                                                                      Oracle rman工具使用(真的细)

                                                                                                                                      创建测试表:

                                                                                                                                      CREATE TABLE TZQ_TEST_002 (
                                                                                                                                        ID NUMBER,
                                                                                                                                        NAME VARCHAR2(100)
                                                                                                                                      ) TABLESPACE LOG;
                                                                                                                                      DECLARE
                                                                                                                                        v_num NUMBER;
                                                                                                                                      BEGIN
                                                                                                                                        FOR v_num IN 1 .. 10000 LOOP
                                                                                                                                          INSERT INTO TZQ_TEST_002 VALUES (v_num,'tzq'||v_num);
                                                                                                                                        END LOOP;
                                                                                                                                        COMMIT;
                                                                                                                                      END;
                                                                                                                                      /
                                                                                                                                      SELECT * FROM TZQ_TEST_002 ORDER BY 1 DESC;
                                                                                                                                      

                                                                                                                                      执行结果:

                                                                                                                                      Oracle rman工具使用(真的细)

                                                                                                                                      Oracle rman工具使用(真的细)

                                                                                                                                      T1时间点误操作update并提交。

                                                                                                                                      UPDATE TZQ_TEST_002 SET NAME = 'GOD';
                                                                                                                                      COMMIT;
                                                                                                                                      

                                                                                                                                      Oracle rman工具使用(真的细)

                                                                                                                                      切换日志

                                                                                                                                      alter system switch logfile;
                                                                                                                                      

                                                                                                                                      Oracle rman工具使用(真的细)

                                                                                                                                      通过RMAN执行不完全恢复,指点时间点到T1之前

                                                                                                                                      restore database until time "to_date('2023-09-17 23:56:49','yyyy-mm-dd hh24:mi:ss')";
                                                                                                                                      recover database until time "to_date('2023-09-17 23:56:49','yyyy‐mm‐dd hh24:mi:ss')";
                                                                                                                                      alter database open resetlogs;
                                                                                                                                      

                                                                                                                                      3.2.2、基于日志序列号

                                                                                                                                      • 场景:数据库在T0时间点做了全备,T1时间点创建1张表,T2时间点创建1张表,之后数据文件介质 故障,归档日志文件并不连续,丢失T1、T2之间的日志。

                                                                                                                                        解决方法: 可以通过日志序列号执行不完全恢复,将数据库恢复到T1时间点(包含T1时间点)。

                                                                                                                                        创建测试表

                                                                                                                                        CREATE TABLE t_seq(ID NUMBER);
                                                                                                                                        INSERT INTO t_seq VALUES(1);
                                                                                                                                        COMMIT;
                                                                                                                                        SELECT * FROM t_seq;
                                                                                                                                        

                                                                                                                                        切换日志

                                                                                                                                        alter system switch logfile;
                                                                                                                                        

                                                                                                                                        Oracle rman工具使用(真的细)

                                                                                                                                        查看日志文件

                                                                                                                                        Oracle rman工具使用(真的细)

                                                                                                                                        当前归档日志序号是4,包含表t_seq的ddl,dml操作的redo信息。

                                                                                                                                        T2时间点创建表t_seq2Oracle rman工具使用(真的细)

                                                                                                                                        多次切换日志Oracle rman工具使用(真的细)

                                                                                                                                        查看日志文件

                                                                                                                                        Oracle rman工具使用(真的细)

                                                                                                                                        其中5、6、7、8包含表t_seq2的ddl、dml redo记录。

                                                                                                                                        模拟介质故障-数据文件丢失Oracle rman工具使用(真的细)

                                                                                                                                        模拟归档日志丢失-日志序号4的文件Oracle rman工具使用(真的细)

                                                                                                                                        数据库启动到mount状态Oracle rman工具使用(真的细)

                                                                                                                                        RMAN还原数据文件

                                                                                                                                        RMAN> restore database;Oracle rman工具使用(真的细)

                                                                                                                                        恢复数据库(应用日志)

                                                                                                                                        RMAN> recover database;

                                                                                                                                        Oracle rman工具使用(真的细)

                                                                                                                                        4号日志已丢失,只能恢复到序号3的日志,上述语句是恢复4(不包含4)之前所有的日志。

                                                                                                                                        指定日志序列号再次恢复。

                                                                                                                                        RMAN> recover database until sequence 4;Oracle rman工具使用(真的细)

                                                                                                                                        Oracle rman工具使用(真的细)

                                                                                                                                        检验数据

                                                                                                                                        Oracle rman工具使用(真的细)

                                                                                                                                        t_seq2已丢失,已恢复到日志序号4之前(1-3),序号4以及之后的数据会丢数据。

                                                                                                                                        3.2.3、基于SCN 恢复

                                                                                                                                        • 场景:数据库在T0时间点做了全备,T1时间点创建1张表T1并插入3条数据,T2时间点误删除表T1。

                                                                                                                                          解决方法: 通过logmnr分析表删除SCN,可用具体SCN执行不完全恢复表。

                                                                                                                                          创建表

                                                                                                                                          T1 SQL> create table tbs (id number); 
                                                                                                                                          insert into tbs values(1); 
                                                                                                                                          insert into tbs values(2); 
                                                                                                                                          insert into tbs values(3); 
                                                                                                                                          commit; 
                                                                                                                                          alter system switch logfile;
                                                                                                                                          

                                                                                                                                          Oracle rman工具使用(真的细)

                                                                                                                                          Oracle rman工具使用(真的细)

                                                                                                                                          • 查询scn号
                                                                                                                                            SELECT CURRENT_SCN FROM V$DATABASE;
                                                                                                                                            

                                                                                                                                            Oracle rman工具使用(真的细)

                                                                                                                                            删除表T1

                                                                                                                                            drop table tbs purge;
                                                                                                                                            alter system switch logfile;
                                                                                                                                            select * from tbs;
                                                                                                                                            

                                                                                                                                            Oracle rman工具使用(真的细)

                                                                                                                                            Oracle rman工具使用(真的细)

                                                                                                                                            RMAN恢复数据

                                                                                                                                            SQL> shutdown immediate;
                                                                                                                                            SQL> startup mount
                                                                                                                                            RMAN> restore database until scn 3002178;
                                                                                                                                            

                                                                                                                                            Oracle rman工具使用(真的细)

                                                                                                                                            RMAN> recover database until scn 3002178;
                                                                                                                                            

                                                                                                                                            Oracle rman工具使用(真的细)

                                                                                                                                            Oracle rman工具使用(真的细)

                                                                                                                                            验证数据

                                                                                                                                            Oracle rman工具使用(真的细)

                                                                                                                                            3.3、如何通过RMAN恢复drop、truncate、delete表的数据

                                                                                                                                            3.3.1 drop

                                                                                                                                            创建测试表

                                                                                                                                            创建测试表a1并插入一些数据:

                                                                                                                                            -- 创建表
                                                                                                                                            CREATE TABLE a1 (
                                                                                                                                              id NUMBER,
                                                                                                                                              name VARCHAR2(50)
                                                                                                                                            );
                                                                                                                                            -- 插入数据
                                                                                                                                            INSERT INTO a1 (id, name) VALUES (1, 'John');
                                                                                                                                            INSERT INTO a1 (id, name) VALUES (2, 'Jane');
                                                                                                                                            COMMIT;
                                                                                                                                            

                                                                                                                                            Oracle rman工具使用(真的细)

                                                                                                                                            使用RMAN备份数据库:

                                                                                                                                            -- 启动RMAN
                                                                                                                                            rman target /
                                                                                                                                            -- 备份数据库
                                                                                                                                            BACKUP DATABASE;
                                                                                                                                            

                                                                                                                                            Oracle rman工具使用(真的细)

                                                                                                                                            Oracle rman工具使用(真的细)

                                                                                                                                            删除表 DROP TABLE a1;

                                                                                                                                            查scn:

                                                                                                                                            Oracle rman工具使用(真的细)

                                                                                                                                            恢复到删除之前:

                                                                                                                                            shutdown immediate;
                                                                                                                                            startup mount;
                                                                                                                                            

                                                                                                                                            rman恢复:

                                                                                                                                            restore database until scn 4325688;
                                                                                                                                            recover database until scn 4325688;
                                                                                                                                            alter database open resetlogs;
                                                                                                                                            

                                                                                                                                            Oracle rman工具使用(真的细)

                                                                                                                                            Oracle rman工具使用(真的细)

                                                                                                                                            四、熟悉rman的主要命令

                                                                                                                                            • 【说明】

                                                                                                                                              熟悉RMAN主要命令的使用,下面只列举了4个命令,其他命令自行完善

                                                                                                                                              4.1、list

                                                                                                                                              4.1.1、查看备份信息:list backup

                                                                                                                                              查看备份基本都是LIST BACKUP OF 备份项名称[别名];

                                                                                                                                              list backup
                                                                                                                                              

                                                                                                                                              4.1.2、列出过期备份:list expired backup;

                                                                                                                                              list expired backup;
                                                                                                                                              

                                                                                                                                              4.1.3、列出所有数据文件的备份集:list backup of database;

                                                                                                                                              list backup of database;
                                                                                                                                              

                                                                                                                                              4.1.4、列出特定表空间的所有数据文件备份集:list backup of tablespace “LOG”;

                                                                                                                                              list backup of tablespace "LOG";
                                                                                                                                              

                                                                                                                                              4.1.5、列出控制文件备份集:list backup of controlfile;

                                                                                                                                              list backup of controlfile;
                                                                                                                                              

                                                                                                                                              4.1.6、列出归档日志备份集详细信息:list backup of archivelog all

                                                                                                                                              list backup of archivelog all
                                                                                                                                              

                                                                                                                                              Oracle rman工具使用(真的细)

                                                                                                                                              4.1.7、按备份类型列出备份:list backup by file;

                                                                                                                                              list backup by file;
                                                                                                                                              

                                                                                                                                              按照数据文件备份,归档日志备份,控制文件备份,服务器参数文件备份 列出

                                                                                                                                              其他命令:

                                                                                                                                               list archivelog all; 列出归档日志备份集简要信息

                                                                                                                                               list backup of spfile 列出SPFILE备份集;

                                                                                                                                               list copy of datafile 5 列出数据文件映像副本;

                                                                                                                                               list copy of controlfile 列出控制文件映像副本;

                                                                                                                                               list copy of archivelog all 列出归档日志映像副本;

                                                                                                                                               list incarnation of database 列出对应物/列出数据库副本;

                                                                                                                                              B表示backup

                                                                                                                                              F表示FULL

                                                                                                                                              A表示archive log

                                                                                                                                              0 1表示incremental backup

                                                                                                                                              S说明备份状态(A AVAILABLE X EXPIRED )

                                                                                                                                              4.2、report

                                                                                                                                              用于生成备份和恢复目标的报告。

                                                                                                                                              4.2.1、报告目标数据库的物理结构、数据文件:report schema;

                                                                                                                                              report schema;
                                                                                                                                              

                                                                                                                                              Oracle rman工具使用(真的细)

                                                                                                                                              4.2.2、报告最近3天没有被备份的数据文件:report need backup days=3;

                                                                                                                                              report need backup days=3;

                                                                                                                                              4.2.3、在USERS表空间上3天未备份的数据文件:report need backup days 3 tablespace users;

                                                                                                                                              RMAN> report need backup days 3 tablespace users; 在USERS表空间上3天未备份的数据文件;

                                                                                                                                              4.2.4、报告恢复数据文件需要的增量备份个数超过3次的数据文件:report need backup incremental 3;

                                                                                                                                              RMAN> report need backup incremental 3; 报告恢复数据文件需要的增量备份个数超过3次的数据文件;

                                                                                                                                              4.2.5、报告备份文件低于2份的所有数据文件:report need backup redundancy 2 database;

                                                                                                                                              • 报告备份文件低于2份的所有数据文件;
                                                                                                                                                • RMAN> report need backup redundancy 2 database;

                                                                                                                                                  或者:

                                                                                                                                                • RMAN>report need backup redundancy=2;

                                                                                                                                                  4.2.6、报告文件报表的恢复需要超过6天的归档日志的数据文件:report need backup recovery window of 6 days;

                                                                                                                                                  RMAN> report need backup recovery window of 6 days; 报告文件报表的恢复需要超过6天的归档日志的数据文件;

                                                                                                                                                  4.2.7、报告数据库所有不可恢复的数据文件:report unrecoverable;

                                                                                                                                                  RMAN> report unrecoverable; 报告数据库所有不可恢复的数据文件;

                                                                                                                                                  4.2.8、报告备份次数超过2次的陈旧备份:report obsolete redundancy 2;

                                                                                                                                                  RMAN> report obsolete redundancy 2; 报告备份次数超过2次的陈旧备份;

                                                                                                                                                  4.2.9、报告多余的备份:report obsolete;

                                                                                                                                                  RMAN>report obsolete; 报告多余的备份;

                                                                                                                                                  4.3、crosscheck

                                                                                                                                                  • 用于检查备份集和备份文件的有效性。

                                                                                                                                                    4.3.1、核对所有备份集:crosscheck backup;

                                                                                                                                                    4.3.2、核对所有数据文件的备份集:crosscheck backup of database

                                                                                                                                                    crosscheck backup of database 核对所有数据文件的备份集;

                                                                                                                                                    4.3.3、核对特定表空间的备份集:crosscheck backup of tablespace users;

                                                                                                                                                    crosscheck backup of tablespace users 核对特定表空间的备份集;

                                                                                                                                                    4.3.4、核对特定数据文件的备份集:crosscheck backup of datafile 4;

                                                                                                                                                    crosscheck backup of datafile 4 核对特定数据文件的备份集;

                                                                                                                                                    4.3.5、核对控制文件的备份集:crosscheck backup of controlfile;

                                                                                                                                                    crosscheck backup of controlfile 核对控制文件的备份集;

                                                                                                                                                    4.3.6、核对SPFILE的备份集:crosscheck backup of spfile;

                                                                                                                                                    crosscheck backup of spfile 核对SPFILE的备份集;

                                                                                                                                                    4.3.7、核对归档日志的备份集:crosscheck backup of archivelog sequence 3;

                                                                                                                                                    crosscheck backup of archivelog sequence 3 核对归档日志的备份集

                                                                                                                                                    4.3.8、核对所有映像副本:crosscheck copy;

                                                                                                                                                    crosscheck copy 核对所有映像副本;

                                                                                                                                                    4.3.9、核对所有数据文件的映像副本:crosscheck copy of database;

                                                                                                                                                    crosscheck copy of database 核对所有数据文件的映像副本;

                                                                                                                                                    4.3.10、核对特定表空间的映像副本:crosscheck copy of tablespace users;

                                                                                                                                                    crosscheck copy of tablespace users 核对特定表空间的映像副本;

                                                                                                                                                    4.3.11、核对特定数据文件的映像副本:crosscheck copy of datafile 6;

                                                                                                                                                    crosscheck copy of datafile 6 核对特定数据文件的映像副本;

                                                                                                                                                    4.3.12、核对归档日志的映像副本:crosscheck copy of archivelog sequence 4;

                                                                                                                                                    crosscheck copy of archivelog sequence 4 核对归档日志的映像副本;

                                                                                                                                                    4.3.13、核对控制文件的映像副本:crosscheck copy of controlfile;

                                                                                                                                                    crosscheck copy of controlfile 核对控制文件的映像副本;

                                                                                                                                                    4.4、configure

                                                                                                                                                    • 用于配置RMAN的参数和选项

                                                                                                                                                      show all

                                                                                                                                                      show all
                                                                                                                                                      

                                                                                                                                                      Oracle rman工具使用(真的细)

                                                                                                                                                      4.4.1、CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default

                                                                                                                                                      是用来决定那些备份不再需要了,它一共有三种可选项,分别是:

                                                                                                                                                      i. CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;

                                                                                                                                                      ii. CONFIGURE RETENTION POLICY TO REDUNDANCY 5;

                                                                                                                                                      iii. CONFIGURE RETENTION POLICY TO NONE;

                                                                                                                                                      第一种recover window是保持所有足够的备份,可以将数据库系统恢复到最近七天内的任意时刻。任何超过最近七天的数据库备份将被标记为obsolete。

                                                                                                                                                      第二种redundancy 是为了保持可以恢复的最新的5份数据库备份,任何超过最新5份的备份都将被标记为redundancy。它的默认值是1份。

                                                                                                                                                      第三种不需要保持策略,clear将恢复回默认的保持策略。

                                                                                                                                                      一般最安全的方法是采用第二种保持策略。

                                                                                                                                                      4.4.2、CONFIGURE BACKUP OPTIMIZATION OFF;

                                                                                                                                                      默认值为关闭,如果打开,rman将对备份的数据文件及归档等文件进行一种优化的算法。

                                                                                                                                                      4.4.3、CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default

                                                                                                                                                      是指定所有I/O操作的设备类型是硬盘或者磁带,默认值是硬盘。

                                                                                                                                                      磁带的设置是CONFIGURE DEFAULT DEVICE TYPE TO SBT;

                                                                                                                                                      4.4.4、CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default

                                                                                                                                                      强制数据库在备份文件或者执行改变数据库结构的命令之后将控制文件自动备份,默认值为关闭。这样可以避免控制文件和catalog丢失后,控制文件仍然可以恢复。

                                                                                                                                                      4.4.5、CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO ‘%F’;

                                                                                                                                                      是配置控制文件的备份路径和备份格式。

                                                                                                                                                      RMAN> CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO ‘D:/oracle_database/backup/rman/%F’;

                                                                                                                                                      4.4.6、CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default

                                                                                                                                                      是配置数据库设备类型的并行度。

                                                                                                                                                      CONFIGURE DEVICE TYPE DISK PARALLELISM 1;

                                                                                                                                                      4.4.7、CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default

                                                                                                                                                      是配置数据库的每次备份的copy数量,oracle的每一次备份都可以有多份完全相同的拷贝。

                                                                                                                                                      4.4.8、CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default

                                                                                                                                                      是设置数据库的归档日志的存放设备类型。

                                                                                                                                                      4.4.9、CONFIGURE SNAPSHOT CONTROLFILE NAME TO ‘D:/oracle_database/backup/rman/snapcf_test.f’;

                                                                                                                                                      是配置控制文件的快照文件的存放路径和文件名,这个快照文件是在备份期间产生的,用于控制文件的读一致性。

                                                                                                                                                      4.4.10、CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT ‘D:/oracle_database/backup/rman/%U_%D_%T’;

                                                                                                                                                      是配置备份文件的备份路径和备份格式。

                                                                                                                                                      4.5、delete

                                                                                                                                                      4.5.1、删除陈旧备份

                                                                                                                                                      当使用 RMAN 执行备份操作时,RMAN 会根据备份冗余策略确定陈旧备份。

                                                                                                                                                      RMAN> delete obsolete;

                                                                                                                                                      4.5.2、其他删除

                                                                                                                                                      4.5.2.1、删除 EXPIRED 副本

                                                                                                                                                      RMAN> delete expired copy;

                                                                                                                                                      4.5.2.2、删除特定备份集

                                                                                                                                                      RMAN> delete backupset 19;

                                                                                                                                                      4.5.2.3、删除特定备份片

                                                                                                                                                      RMAN> delete backuppiece ‘d:\backup\DEMO_19.bak’;

                                                                                                                                                      4.5.2.4、删除所有备份集

                                                                                                                                                      RMAN> delete backup;

                                                                                                                                                      4.5.2.5、删除特定映像副本

                                                                                                                                                      RMAN> delete datafilecopy ‘d:\backup\DEMO_19.bak’;

                                                                                                                                                      4.5.2.6、删除所有映像副本

                                                                                                                                                      RMAN> delete copy;

                                                                                                                                                      4.5.2.7、在备份后删除输入对象

                                                                                                                                                      RMAN> delete archivelog all delete input;

                                                                                                                                                      RMAN> delete backupset 22 format = ‘‘d:\backup%u.bak’’ delete input;

                                                                                                                                                      4.5.2.8、删除 EXPIRED 备份

                                                                                                                                                      执行 crosscheck 命令核对备份集,如果备份集丢失或者损坏,那么会将该备份集标记为 EXPIRED 状态。为了删除相应的备份记录,可以执行 delete expired backup 命令。

                                                                                                                                                      RMAN> delete expired backup;

                                                                                                                                                      4.5.3、删除所有备份集(不提示)

                                                                                                                                                      RMAN下执行:

                                                                                                                                                      delete noprompt backup ;

                                                                                                                                                      或者

                                                                                                                                                      delete noprompt backupset;

                                                                                                                                                      4.6、RESTORE命令:

                                                                                                                                                      用于恢复备份集或备份文件。

                                                                                                                                                      4.6.1、数据库恢复

                                                                                                                                                      RMAN> restore/revover database ;

                                                                                                                                                      4.6.2、表空间恢复

                                                                                                                                                      RMAN> restore/revover tablespace xx ;

                                                                                                                                                      4.6.3、只读表空间的恢复

                                                                                                                                                      默认情况下,即使丢失了只读的数据文件,RMAN 也不会在执行完全数据库还原操作时候还原 只读的数据文件。

                                                                                                                                                      要在完全恢复期间还原只读的数据文件,就必须在RESTORE命令中使用CHECK READONLY

                                                                                                                                                      参数:

                                                                                                                                                      RMAN> RESTORE DATABASE CHECK READONLY;

                                                                                                                                                      4.6.4、恢复 SPFILE/控制文件

                                                                                                                                                      使用自动备份恢复SPFILE/控制文件

                                                                                                                                                      RMAN> startup nomount;

                                                                                                                                                      RMAN> set dbid=153910023

                                                                                                                                                      RMAN> restore controlfile from autobackup

                                                                                                                                                      RMAN> restore spfile/controlfile to ‘/xx/xx’ from autobackup ;

                                                                                                                                                      RMAN> restore controlfile from ‘/arch/ct_c-2347671489-20060630-00’;

                                                                                                                                                      联机状态:目标数据库MOUNT或OPEN

                                                                                                                                                      RMAN> restore controlfile to ‘d:\temp\control01.ctl’;

                                                                                                                                                      4.6.5、归档重做日志的还原

                                                                                                                                                      RMAN> RESTORE ARCHIVELOG ALL;

                                                                                                                                                      RMAN> RESTORE ARCHIVELOG FROM LOGSEQ=1 UNTIL LOGSEQ=20;

                                                                                                                                                      RMAN> RESTORE ARCHIVELOG FROM LOGSEQ=1;

                                                                                                                                                      五、如何配置catalog以及使用

                                                                                                                                                      • RMAN备份有两种存放方法,一种是nocatalog(即存放在控制文件中),另一种是catalog。catalog是一个恢复目录,存放rman的备份信息。
                                                                                                                                                      • “catalog"是一个命令,用于将备份信息和恢复目录信息注册到一个特定的数据库中。这个数据库被称为"RMAN目录数据库"或"RMAN目录”。
                                                                                                                                                      • RMAN目录数据库是一个独立的数据库,用于存储备份和恢复的元数据信息。它记录了RMAN备份的详细信息,包括备份集、备份片、备份集的组成、备份的时间、备份的位置等。此外,RMAN目录还记录了数据库的结构信息,包括数据文件、控制文件、归档日志等。
                                                                                                                                                      • 通过将备份信息和恢复目录信息注册到RMAN目录数据库中,可以实现以下功能:
                                                                                                                                                        • 管理多个数据库的备份和恢复:RMAN目录数据库可以管理多个数据库的备份和恢复信息,提供一个集中的管理和查询界面。
                                                                                                                                                        • 跨数据库的备份和恢复:通过在RMAN目录数据库中注册备份信息,可以在不同的数据库之间共享备份集,实现跨数据库的备份和恢复。
                                                                                                                                                        • 跨时间点的恢复:RMAN目录数据库记录了备份的时间信息,可以根据需要选择不同时间点的备份进行恢复,以实现精确的恢复需求。
                                                                                                                                                        • 监控和报告:RMAN目录数据库可以提供备份和恢复的监控和报告功能,包括备份的成功与否、备份的大小、备份的时长等信息。

                                                                                                                                                          catalog配置的步骤:

                                                                                                                                                          1. 建立一个单独的数据库(这里以prod为例)。我们要对orcl库进行备份。即orcl是目标数据库,prod是恢复目录数据库。
                                                                                                                                                          2. 在prod库里建立表空间。
                                                                                                                                                          create tablespace rc_data datafile '/u01/app/oracle/oradata/prod/rc_data01.dbf' size 100m autoextend on next 10m maxsize unlimited;
                                                                                                                                                          
                                                                                                                                                          1. 创建一个用户,使用rc_data为默认表空间,授予它recovery_catalog_owner权限
                                                                                                                                                          create user rc_admin identified by rc_admin default tablespace rc_data;
                                                                                                                                                          grant connect,resource,recovery_catalog_owner to rc_admin;
                                                                                                                                                          
                                                                                                                                                          1. 在Rman中创建catalog
                                                                                                                                                          Rman catalog rc_admin/rc_admin@prod
                                                                                                                                                          create catalog tablespace rc_data;
                                                                                                                                                          
                                                                                                                                                          1. 注册
                                                                                                                                                          Rman target sys/oracle@orcl catalog rc_admin/rc_admin@prod
                                                                                                                                                          register database;
                                                                                                                                                          resync catalog;
                                                                                                                                                          
                                                                                                                                                          1. 取消catalog
                                                                                                                                                          Rman target sys/oracle@orcl catalog rc_admin/rc_admin@prod
                                                                                                                                                          unregister database;
                                                                                                                                                          

                                                                                                                                                          5.1、手工建库(也可以dbca建库)

                                                                                                                                                          5.1.1、官档的建库脚本示例

                                                                                                                                                          CREATE DATABASE mynewdb USER SYS IDENTIFIED BY sys_password USER SYSTEM IDENTIFIED BY system_password LOGFILE
                                                                                                                                                          GROUP 1 (
                                                                                                                                                          		'/u01/logs/my/redo01a.log'
                                                                                                                                                          		,'/u02/logs/my/redo01b.log'
                                                                                                                                                          		) SIZE 100 M BLOCKSIZE 512	,
                                                                                                                                                          GROUP 2 (
                                                                                                                                                          		'/u01/logs/my/redo02a.log'
                                                                                                                                                          		,'/u02/logs/my/redo02b.log'
                                                                                                                                                          		) SIZE 100 M BLOCKSIZE 512	,
                                                                                                                                                          GROUP 3 (
                                                                                                                                                          		'/u01/logs/my/redo03a.log'
                                                                                                                                                          		,'/u02/logs/my/redo03b.log'
                                                                                                                                                          		) SIZE 100 M BLOCKSIZE 512 
                                                                                                                                                                  MAXLOGFILES 5 
                                                                                                                                                                  MAXLOGMEMBERS 5 
                                                                                                                                                                  MAXLOGHISTORY 1 
                                                                                                                                                                  MAXDATAFILES 100 
                                                                                                                                                                  CHARACTER SET US7ASCII 
                                                                                                                                                                  NATIONAL CHARACTER SET AL16UTF16 
                                                                                                                                                                  EXTENT MANAGEMENT LOCAL
                                                                                                                                                          DATAFILE '/u01/app/oracle/oradata/mynewdb/system01.dbf' SIZE 325M REUSE
                                                                                                                                                          SYSAUX DATAFILE '/u01/app/oracle/oradata/mynewdb/sysaux01.dbf' SIZE 325M REUSE
                                                                                                                                                          DEFAULT TABLESPACE users
                                                                                                                                                              DATAFILE '/u01/app/oracle/oradata/mynewdb/users01.dbf'
                                                                                                                                                              SIZE 500M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED
                                                                                                                                                          DEFAULT TEMPORARY TABLESPACE tempts1
                                                                                                                                                              TEMPFILE '/u01/app/oracle/oradata/mynewdb/temp01.dbf'
                                                                                                                                                              SIZE 20M REUSE
                                                                                                                                                          UNDO TABLESPACE undotbs
                                                                                                                                                              DATAFILE '/u01/app/oracle/oradata/mynewdb/undotbs01.dbf'
                                                                                                                                                          SIZE 200M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;
                                                                                                                                                          

                                                                                                                                                          5.1.2、创建建库脚本

                                                                                                                                                          CREATE DATABASE mynewdb USER SYS IDENTIFIED BY oracle USER SYSTEM IDENTIFIED BY oracle LOGFILE
                                                                                                                                                          GROUP 1 (
                                                                                                                                                          		'/u01/redolog/redo01a.log'
                                                                                                                                                          		,'/u01/redolog/redo01b.log'
                                                                                                                                                          		) SIZE 100 M BLOCKSIZE 512	,
                                                                                                                                                          GROUP 2 (
                                                                                                                                                          		'/u01/redolog/redo02a.log'
                                                                                                                                                          		,'/u01/redolog/redo02b.log'
                                                                                                                                                          		) SIZE 100 M BLOCKSIZE 512	,
                                                                                                                                                          GROUP 3 (
                                                                                                                                                          		'/u01/redolog/redo03a.log'
                                                                                                                                                          		,'/u01/redolog/redo03b.log'
                                                                                                                                                          		) SIZE 100 M BLOCKSIZE 512 
                                                                                                                                                                  MAXLOGFILES 5 
                                                                                                                                                                  MAXLOGMEMBERS 5 
                                                                                                                                                                  MAXLOGHISTORY 1 
                                                                                                                                                                  MAXDATAFILES 100 
                                                                                                                                                                  CHARACTER SET WE8MSWIN1252 
                                                                                                                                                                  NATIONAL CHARACTER SET AL16UTF16 
                                                                                                                                                                  EXTENT MANAGEMENT LOCAL
                                                                                                                                                          DATAFILE '/u01/app/oracle/oradata/mynewdb/system01.dbf' SIZE 325M REUSE
                                                                                                                                                          SYSAUX DATAFILE '/u01/app/oracle/oradata/mynewdb/sysaux01.dbf' SIZE 325M REUSE
                                                                                                                                                          DEFAULT TABLESPACE users
                                                                                                                                                              DATAFILE '/u01/app/oracle/oradata/mynewdb/users01.dbf'
                                                                                                                                                              SIZE 500M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED
                                                                                                                                                          DEFAULT TEMPORARY TABLESPACE tempts1
                                                                                                                                                              TEMPFILE '/u01/app/oracle/oradata/mynewdb/temp01.dbf'
                                                                                                                                                              SIZE 20M REUSE
                                                                                                                                                          UNDO TABLESPACE undotbs
                                                                                                                                                              DATAFILE '/u01/app/oracle/oradata/mynewdb/undotbs01.dbf'
                                                                                                                                                          SIZE 200M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;
                                                                                                                                                          

                                                                                                                                                          5.1.3、执行脚本建库

                                                                                                                                                          5.1.3.1、声明ORACLE_SID变量
                                                                                                                                                          [oracle@localhost ~]$ export ORACLE_SID=catdb
                                                                                                                                                          
                                                                                                                                                          5.1.3.2、编辑初始化参数文件
                                                                                                                                                          vi $ORACLE_HOME/dbs/init$ORACLE_SID.ora
                                                                                                                                                          

                                                                                                                                                          添加以下

                                                                                                                                                          DB_NAME=catdb
                                                                                                                                                          CONTROL_FILES=('/u01/app/oracle/oradata/mynewdb/control01.ctl','/u01/app/oracle/oradata/mynewdb/control02.ctl','/u01/app/oracle/oradata/mynewdb/c
                                                                                                                                                          ontrol03.ctl')
                                                                                                                                                          MEMORY_TARGET=1G
                                                                                                                                                          
                                                                                                                                                          5.1.3.3、创建服务器参数文件并启动实例

                                                                                                                                                          创建服务器参数文件,以服务器参数文件启动数据库

                                                                                                                                                          SQL> create spfile from pfile;
                                                                                                                                                          SQL> startup nomount
                                                                                                                                                          
                                                                                                                                                          5.1.3.4、运行建库脚本建库
                                                                                                                                                          SQL> @/home/oracle/create_db.sql
                                                                                                                                                          Database created.
                                                                                                                                                          
                                                                                                                                                          5.1.3.5、然后执行以下脚本:
                                                                                                                                                          @?/rdbms/admin/catalog.sql
                                                                                                                                                          @?/rdbms/admin/catproc.sql
                                                                                                                                                          conn system/oracle
                                                                                                                                                          @?/sqlplus/admin/pupbld.sql
                                                                                                                                                          
                                                                                                                                                          5.1.3.6、配置tnsnames.ora
                                                                                                                                                          CATDB =
                                                                                                                                                          (DESCRIPTION =
                                                                                                                                                          (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
                                                                                                                                                          (CONNECT_DATA =
                                                                                                                                                          (SERVER = DEDICATED)
                                                                                                                                                          (SERVICE_NAME = catdb) ) )
                                                                                                                                                          

                                                                                                                                                          5.2、配置数据库

                                                                                                                                                          dbca或者手工建库之后,配置数据库EMREP

                                                                                                                                                          记得要配置监听之后才可以使目录库EMREP和目标库连接

                                                                                                                                                          5.2.1、创建表空间

                                                                                                                                                          SYS@EMREP>create tablespace rmantbs datafile '/u01/app/oracle/oradata/EMREP/rmantbs.dbf' size 50m autoextend on;
                                                                                                                                                          

                                                                                                                                                          5.2.2、创建用户

                                                                                                                                                          SYS@EMREP>create user rman identified by rman default tablespace rmantbs; 
                                                                                                                                                          SYS@EMREP>grant connect,resource,recovery_catalog_owner to rman;
                                                                                                                                                          

                                                                                                                                                          5.2.3、创建CATALOG

                                                                                                                                                          rman catalog rman/rman@emrep
                                                                                                                                                          RMAN> CREATE CATALOG;
                                                                                                                                                          

                                                                                                                                                          Oracle rman工具使用(真的细)

                                                                                                                                                          Oracle rman工具使用(真的细)

                                                                                                                                                          目标数据库注册到CATALOG在目标数据库执行

                                                                                                                                                          rman target / catalog rman/rman@emrep

                                                                                                                                                          REGISTER DATABASE;

                                                                                                                                                          Oracle rman工具使用(真的细)

                                                                                                                                                          Oracle rman工具使用(真的细)

                                                                                                                                                          Oracle rman工具使用(真的细)

                                                                                                                                                          查看 catalog 库中注册的目标库信息

                                                                                                                                                          Oracle rman工具使用(真的细)

                                                                                                                                                          5.3、创建脚本

                                                                                                                                                          首先连接到目标数据库和恢复目录。

                                                                                                                                                          5.3.1、创建脚本

                                                                                                                                                          RMAN> create global script rmanbak{ 
                                                                                                                                                          backup database format '/u01/backup/rman/db_%U.bak' 
                                                                                                                                                          include current controlfile plus archivelog format '/u01/backup/rman/ar_%U.bak'; 
                                                                                                                                                          }
                                                                                                                                                          

                                                                                                                                                          查看脚本名称

                                                                                                                                                          RMAN> list script names;
                                                                                                                                                          

                                                                                                                                                          查看脚本内容

                                                                                                                                                          RMAN> print script rmanbak;
                                                                                                                                                          

                                                                                                                                                          执行脚本

                                                                                                                                                          RMAN> run{ 
                                                                                                                                                          execute script rmanbak; 
                                                                                                                                                          }
                                                                                                                                                          

                                                                                                                                                          5.4、更新恢复目录

                                                                                                                                                          比如RMAN恢复目录版本是10g,那么11g版本的RMAN客户端需要升级更新本地包和模式。 如果你10gR1版本之前创建的恢复目录, 并且RECOVERY_CATALOG_OWNER角色不包含CREATE TYPE权

                                                                                                                                                          限,那么需要赋予CREATE TYPE的权限给恢复目录所有者。

                                                                                                                                                          SQL> GRANT CREATE TYPE TO rman;
                                                                                                                                                          

                                                                                                                                                          5.5、升级catalog(两次确认,敲两次):

                                                                                                                                                          RMAN> upgrade catalog;
                                                                                                                                                          RMAN> upgrade catalog;
                                                                                                                                                          

                                                                                                                                                          Oracle rman工具使用(真的细)

                                                                                                                                                          六、如何通过RMAN复制数据库

                                                                                                                                                          复制脚本

                                                                                                                                                          #!/bin/ksh
                                                                                                                                                          # script_name duplicate_Date.sh
                                                                                                                                                          #设置环境变量:指定Oracle数据库的安装目录。
                                                                                                                                                          export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
                                                                                                                                                          export ORACLE_SID=test1
                                                                                                                                                          export PATH=$PATH:$ORACLE_HOME/bin
                                                                                                                                                          #启动RMAN命令行工具:
                                                                                                                                                          /u01/app/oracle/product/11.2.0/dbhome_1/bin/rman 
                                                                                                                                                          #allocate channel:为备份和恢复操作分配通道,这里分别分配了4个磁盘通道和4个辅助数据库通道
                                                                                                                                                               allocate channel c1 type disk;
                                                                                                                                                               allocate channel c2 type disk;
                                                                                                                                                               allocate channel c3 type disk;
                                                                                                                                                               allocate channel c4 type disk;
                                                                                                                                                               allocate auxiliary channel s1 type disk;
                                                                                                                                                               allocate auxiliary channel s2 type disk;
                                                                                                                                                               allocate auxiliary channel s3 type disk;
                                                                                                                                                               allocate auxiliary channel s4 type disk;
                                                                                                                                                          #执行数据库的复制操作,将目标数据库复制为备用数据库。
                                                                                                                                                               duplicate target database
                                                                                                                                                          #指定复制操作的类型为备用数据库。在复制过程中执行恢复操作。
                                                                                                                                                              for standby
                                                                                                                                                              dorecover
                                                                                                                                                          #从活动数据库进行复制。不检查文件名。
                                                                                                                                                              from active database
                                                                                                                                                              nofilenamecheck;
                                                                                                                                                          #在通道上执行SQL语句,这里分别执行了两个SQL语句,一个是在目标数据库通道上执行的,一个是在辅助数据库通道上执行的。
                                                                                                                                                          #sql channel c1 "alter system archive log current";
                                                                                                                                                          sql channel s1 "alter database recover managed standby database using current logfile
                                                                                                                                                          disconnect";
                                                                                                                                                          }
                                                                                                                                                          _eof
                                                                                                                                                          #如果RMAN命令执行失败或成功,则将信息写入到指定的文件中。
                                                                                                                                                          if [ $? ‐ne 0 ]; then
                                                                                                                                                          echo "failed" 
                                                                                                                                                          /u01/app/oracle/product/11.2.0.4/dbhome_1/duplicate_20211207164127.result
                                                                                                                                                          else
                                                                                                                                                          echo "succeed" 
                                                                                                                                                          /u01/app/oracle/product/11.2.0.4/dbhome_1/duplicate_20211207164127.result
                                                                                                                                                          fi
                                                                                                                                                          

                                                                                                                                                          七、如何通过rman检查坏块

                                                                                                                                                          7.1、什么是坏块

                                                                                                                                                          1. Oracle数据库出现坏块现象是指:在Oracle数据库的一个或多个数据块(一个数据块的容量在创建数据库时由db_block_size参数指定,缺省为8K)内出现内容混乱的现象。由于正常的数据块都有固定的合法内容格式,坏块的出现,导致数据库进程无法正常解析数据块的内容,进而使数据库进程报错乃至挂起,并级联导致整个数据库实例出现异常。

                                                                                                                                                          坏块分类

                                                                                                                                                          1. 物理坏块:也可以称为介质坏块,指的是块格式本身是坏的,块内的数据没有任何意义。
                                                                                                                                                          2. 逻辑坏块:指的是块内的数据在逻辑是存在问题。比如说索引块的索引值没有按从小到大排列。

                                                                                                                                                          物理坏块一般是由于内存问题、OS问题、IO子系统问题和硬件引起,逻辑坏块一般是是由于OracleBug等原因引起。

                                                                                                                                                          7.2\如何检查

                                                                                                                                                          validate #仅仅支持11G和更高版本,低版本用下面两个 
                                                                                                                                                          backup …validate 
                                                                                                                                                          restore …validate
                                                                                                                                                          

                                                                                                                                                          验证控制文件和数据文件

                                                                                                                                                          RMAN> validate database;
                                                                                                                                                          

                                                                                                                                                          Oracle rman工具使用(真的细)

                                                                                                                                                          验证控制文件

                                                                                                                                                          RMAN> validate current controlfile;
                                                                                                                                                          

                                                                                                                                                          Oracle rman工具使用(真的细)

                                                                                                                                                          验证归档重做日志文件

                                                                                                                                                          RMAN> validate archivelog all;
                                                                                                                                                          

                                                                                                                                                          Oracle rman工具使用(真的细)

                                                                                                                                                          检查和更新RMAN对于归档日志的备份状态

                                                                                                                                                          Oracle rman工具使用(真的细)

                                                                                                                                                          7.3、如何处理

                                                                                                                                                          来查坏块:

                                                                                                                                                          select * from v$database_block_corruption;
                                                                                                                                                          

                                                                                                                                                          使用命令进行恢复,数据库可以在mount或者open状态下都可以:

                                                                                                                                                          RMAN> recover corruption list; 
                                                                                                                                                          

                                                                                                                                                          也可指定恢复,一般推荐前者,可以自动清理v$database_block_corruption视图:

                                                                                                                                                          RMAN> recover datafile 4 block 20;
                                                                                                                                                          

                                                                                                                                                          八、了解TTS(Transportable TableSpace)

                                                                                                                                                          • 传输表空间技术始于Oracle9i,它的原理是将元数据和数据文件从一个数据库迁移到另一个数据库,而且不需要原库和目标库具有相同的块大小,相比较导入导出工具,传输表空间只会复制包含实际数据的数据库文件到目标数据库的指定位置,所以会节省很多时间,传输表空间也是数据库之间传输大数据的一种方法。理想情况下,Transportable Tablespace可以实现近似网络直传的速率特点。
                                                                                                                                                          • 传统的TTS有三个层面基础限制,分别为: 表空间内容、self contained。我们一次性导出的表空间(一个或者多个),不能在其他 表空间中存在依赖对象。比如,我们常常将一个数据表数据和索引分布在不同的表空间上,如果我们使用Transportable Tablespace,就要求必须将这些表空间一次性全部导出;

                                                                                                                                                            Oracle rman工具使用(真的细)

                                                                                                                                                          • 检查兼容

                                                                                                                                                            Source和Target DB的Character Set、National Character Set必须完全相同; 操作系统Source Target DB要求兼容。注意:在10g以上版本,这个限制已经取消; 作为先决条件,首选确定Source数据库的字符集信息。

                                                                                                                                                            SQL> select * from v$version;
                                                                                                                                                            

                                                                                                                                                            Oracle rman工具使用(真的细)

                                                                                                                                                            九、了解RMAN Data Recovery Advisor(DRA)

                                                                                                                                                            • Data Recovery Advisor(DRA)是Oracle数据库的一个内置工具,用于发现和修复数据错误和损坏。它与Oracle的备份还原工具RMAN紧密结合使用。
                                                                                                                                                            • DRA可以自动检查数据库状态并收集数据,一旦发现错误,就会提供修复建议和相应的修复语句。它可以自动修复一些常见的问题,使修复过程更加简化和自动化。
                                                                                                                                                            • DRA可以在两种情况下工作。一种是在数据库启动时遇到障碍,比如启动过程报错。另一种是在数据库运行时遇到障碍,比如数据文件被意外删除。
                                                                                                                                                            • DRA提供了用户界面和命令行两种方式进行操作。在Oracle Enterprise Manager(OEM)中,我们可以通过点击修复链接来查看和解决问题。在命令行中,我们可以使用RMAN命令来处理修复操作。

                                                                                                                                                              十、11g、12c中RMAN的新特性

                                                                                                                                                              10.1、11g中RMAN的新特性

                                                                                                                                                              1. 自定义archivelog删除策略
                                                                                                                                                              2. 直接通过网络复制数据库
                                                                                                                                                              3. 并行备份大文件
                                                                                                                                                              4. RMAN Catalog管理性增强

                                                                                                                                                              10.2、12c中RMAN的新特性

                                                                                                                                                              10.2.1、新增用户

                                                                                                                                                              • Oracle 12c中引入了3个新的系统用户SYSBACKUP、SYSDG和SYSKM,其中,
                                                                                                                                                                • SYSKM可以执行与透明数据加密密钥(Transparent Data Encryption keystore)相关的操作。
                                                                                                                                                                • SYSDG可以在DGMGRL或命令行接口里执行与DG(Data Guard)相关的操作。
                                                                                                                                                                • SYSBACKUP特权用来在RMAN或SQL*Plus中执行备份和恢复命令。

                                                                                                                                                                  10.2.2、可以直接在RMAN中执行SQL语句

                                                                                                                                                                  • 在Oracle 12c中,可以在不需要SQL前缀的情况下在RMAN中执行任何SQL和PL/SQL命令。当然,原来的加SQL前缀的方式依然有效。

                                                                                                                                                                    11g:

                                                                                                                                                                    Oracle rman工具使用(真的细)

                                                                                                                                                                    12c:

                                                                                                                                                                    Oracle rman工具使用(真的细)

                                                                                                                                                                    10.2.3、在RMAN中提供了表级别恢复(RECOVER TABLE)

                                                                                                                                                                    • 在Oracle 12c中,在发生drop或truncate的情况下,可以从RMAN备份种将一个特定的表或分区恢复到某个时间点、SCN或归档序列号,并且可以有下面的选择:
                                                                                                                                                                      • 使用REMAP选项将表恢复为一个新表或者分区中,也可以恢复到其他用户中。
                                                                                                                                                                      • 只生成一个需要被恢复表的expdp格式的dump文件,选择后期再进行恢复。

                                                                                                                                                                        Recover Table新特性是利用创建辅助临时实例加数据泵工具来实现的。

                                                                                                                                                                        10.2.4、RMAN自动恢复到REDO终点的步骤简化

                                                                                                                                                                        • 在Oracle 12.2之前,当需要恢复数据库到某个时间点的时候,需要确定SCN,或者日志序列号,或者一个时间点,以便尽可能多的应用归档日志,进而尽可能多的恢复数据。从12.2开始,RMAN新增参数“UNTIL AVALIABLE REDO”,语法如下:
                                                                                                                                                                          RMAN> RECOVER DATABASE UNTIL AVALIABLE REDO;
                                                                                                                                                                          
                                                                                                                                                                          • RMAN将会根据控制文件信息和归档日志、线日志、归档日志备份集的物理可用性,将数据库恢复到最后一个可用的归档日志。所以在进行恢复的时候,可以不需要指定SCN,或者时间或者日志序列号。需要注意的是,数据文件仍然需要在一致的情况下,数据库才能打开。

                                                                                                                                                                            需要注意的是,这些新特性有如下的限制条件:

                                                                                                                                                                            • 不能针对恢复数据文件或者表空间使用这个命令。
                                                                                                                                                                            • 不能针对恢复PDB使用这个命令。
                                                                                                                                                                            • 只能针对全库恢复使用这个命令。

                                                                                                                                                                              10.2.5、通过网络远程恢复数据库(Restore/Recover from Service)

                                                                                                                                                                              • 在Oracle 12c中,可以在主数据库和备用数据库之间用一个服务名重新获得或恢复数据文件、控制文件、参数文件(SPFILE)、表空间或整个数据库。
                                                                                                                                                                              • 当主数据库和备用数据库之间存在相当大的差异时,不再需要复杂的前滚流程来填补它们之间的差异。RMAN能够通过网络执行备用恢复以进行增量备份,并且可以将它们应用到物理备用数据库。

                                                                                                                                                                                十一、编写RMAN备份的常用脚本

                                                                                                                                                                                #!/bin/sh 
                                                                                                                                                                                source ~/.bash_profile
                                                                                                                                                                                #获取当前日期和时间,赋值给backtime变量
                                                                                                                                                                                backtime=`date +"20%y%m%d%H%M%S"`
                                                                                                                                                                                #启动了RMAN工具,重定向log文件位置
                                                                                                                                                                                rman target / log=/u01/backup/logs/full_backup_$backtime.log切换归档日志>删除过期的备份集>删除过时的磁盘备份>备份数据库>备份当前的控制文件>切换日志>备份所有的归档日志>检查归档日志>再次删除过时的磁盘备份>释放通道
                                                                                                                                                                                run{
                                                                                                                                                                                allocate channel c1 device type disk;
                                                                                                                                                                                allocate channel c2 device type disk;
                                                                                                                                                                                crosscheck backup;
                                                                                                                                                                                crosscheck archivelog all;
                                                                                                                                                                                sql 'alter system archive log current';
                                                                                                                                                                                delete noprompt expired backup;
                                                                                                                                                                                delete noprompt obsolete device type disk;
                                                                                                                                                                                backup database format '/u01/backup/rman/db_%d_%T_%U';
                                                                                                                                                                                backup current controlfile format ''/u01/backup/rman/cntrl_%s_%p_%s';
                                                                                                                                                                                sql 'alter system archive log current';
                                                                                                                                                                                backup archivelog all format '/u01/backup/rman/archlog_%d_%T_%U';
                                                                                                                                                                                crosscheck archivelog all;
                                                                                                                                                                                crosscheck backup;
                                                                                                                                                                                delete noprompt obsolete device type disk;
                                                                                                                                                                                release channel c1;
                                                                                                                                                                                release channel c2;
                                                                                                                                                                                }
                                                                                                                                                                                #退出rman
                                                                                                                                                                                exit;
                                                                                                                                                                                #脚本的结束标志
                                                                                                                                                                                EOF
                                                                                                                                                                                

                                                                                                                                                                                十二、12 参考文档

                                                                                                                                                                                • 以下列举了一些MOS的文章,可以在MOS上搜索RMAN关键字。该章学习期间,阅读或则模拟大量MOS文章中的内容和操作。
                                                                                                                                                                                  How To Check (Validate) If RMAN Backup(s) Are Good (文档 ID 338607.1)
                                                                                                                                                                                  Checklist for an RMAN Restore (文档 ID 1554636.1)
                                                                                                                                                                                  RMAN Restore Performance on non-ASM filesystems (文档 ID 1561238.1)
                                                                                                                                                                                  RMAN Restore Performance (文档 ID 740911.1)
                                                                                                                                                                                  How to Move/Restore DB to New Host and File System using RMAN (文档 ID 1338193.1) 
                                                                                                                                                                                  How to transfer backups from ASM to filesystem when restoring to a new host (文档 ID 345134.1)
                                                                                                                                                                                  How to Recover From a DROP / TRUNCATE / DELETE TABLE with RMAN (文档 ID 223543.1)
                                                                                                                                                                                  How to Move/Restore DB to New Host and File System using RMAN (文档 ID 1338193.1)
                                                                                                                                                                                  How to recover a skipped tablespace after an incomplete recovery? (文档 ID 1561645.1)
                                                                                                                                                                                  How To Restore From An Old Backupset Using RMAN? (文档 ID 209214.1)
                                                                                                                                                                                  
VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]