![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/08c6297f1f5c4c6d0ff5e13d66ca5a61.jpeg)
** Recovery Catalog Creation and Maintenance 恢复目录的创建和维护**
目标:
- 掌握恢复目录的内容
- 列出需要恢复目录的RMAN功能
- 创建恢复目录
- 使用RMAN命令维护恢复目录
- 使用RMAN注册、重新同步和重置数据库
- 查询恢复目录以生成报告和列表
- 创建、存储和运行脚本
- 了解备份和恢复恢复目录的方法
一、基础知识
1、Overview 概述
2、Recovery Catalog Contents 恢复Catalog内容
- 恢复目录是一个可选的存储库,包含以下信息:
- 数据文件和归档重做日志文件备份集和备份件
- 数据文件副本
- 存档的重做日志文件
- 目标数据库的物理结构
- 恢复目录还可以包含:
- 持久RMAN配置设置
- 存储的作业脚本
3、Benefits of Using Catalog 使用Catalog的好处
以下功能仅在使用恢复目录时才可用:
- 有关于一个目录中多个目标数据库的元数据
- 有关于单个目标数据库的多个化身的元数据
- 有历史元数据
- 查询在非当前时间报告目标数据库
4、Creating Recovery Catalog 创建恢复Catalog
5、Resynchronization 同步问题
发生恢复目录的重新同步:
- 自动使用BACKUP和COPY命令
- 使用RESYNC CATALOG命令手动
当RMAN执行重新同步时,它将恢复目录与目标数据库的当前控制文件或备份控制文件进行比较,并使用丢失或更改的信息更新恢复目录。重新同步时,RMAN执行以下操作:
1.创建快照控制文件
2.将恢复编录与快照控制文件进行比较
3使用丢失或更改的信息更新恢复目录。
RMAN在执行某些命令 (包括BACKUP) 时,根据需要自动执行重新同步。您还可以使用RESYNC CATALOG命令手动执行完全重新同步。
6、RESYNC CATALOG 手动同步命令
当您执行以下操作时,发出RESYNC CATALOG命令:
- 添加或删除表空间
- 添加或删除数据文件
- 重新定位数据库文件
在基础操作2登录之后,执行:
RESYNC CATALOG;
7、Resetting aincarnation 重置化身
- 使用RESET DATABASE命令:
- 指示RMAN创建一个新的数据库化身记录
- 区分RESETLOGS打开和旧控制文件的意外还原操作
- 重置数据库后用RESETLOGS打开
8、Stored Scripts Management 存储脚本管理
- 创建本地/全局存储脚本
- 更新存储的脚本
- 对存储的脚本进行注释
- 显示存储的脚本
- 列出存储的脚本
- 删除存储的脚本
- 转换存储的脚本和文件
- 向存储的脚本传递参数
9、Backup of Catalog 目录备份
- 包含恢复目录的数据库的整个数据库备份
- 包含恢复目录的表空间的表空间备份
- 出口:
- 如果目录数据库不是很大,可以定期导出数据库
- 如果目录数据库很大,请导出包含恢复目录的架构
10、Recovering the Catalog 恢复目录
- 从恢复目录数据库的以前备份创建数据库。
- 将目录重新定位到另一个数据库并导入数据。
- 从导出导入整个数据库
二、基础操作
1、创建Catalog
1.创建表空间
CREATE TABLESPACE cata
DATAFILE '/u01/app/oracle/oradata/orcl/catalog_01.dbf' SIZE 1024M
SEGMENT SPACE MANAGEMENT AUTO
EXTENT MANAGEMENT LOCAL UNIFORM;
这是一个用于在 Oracle 数据库中创建表空间的 SQL 语句。让我解释一下这个语句的各个部分:
CREATE TABLESPACE cata
DATAFILE '/u01/app/oracle/oradata/orcl/catalog_01.dbf' SIZE 1024M
SEGMENT SPACE MANAGEMENT AUTO
EXTENT MANAGEMENT LOCAL UNIFORM;
CREATE TABLESPACE cata
:创建一个名为 “cata” 的表空间。
DATAFILE '/u01/app/oracle/oradata/orcl/catalog_01.dbf' SIZE 1024M
:指定表空间的数据文件和大小。在这里,数据文件路径是
‘/u01/app/oracle/oradata/orcl/catalog_01.dbf’,大小为 1024MB。
SEGMENT SPACE MANAGEMENT AUTO
:指定段空间的管理方式为自动管理。这表示 Oracle 将自动管理表空间中段(例如表和索引)的空间。
EXTENT MANAGEMENT LOCAL UNIFORM
:指定区管理方式为本地且统一。这表示表空间的分配是以统一的大小进行的,并且只在本地进行管理。
这里是使用sqlplus界面使用sql命令创建的,文件位置和其他数据文件位置一起即可,大小不能小于300M,否则后期会有问题
2.创建用户
CREATE USER cata IDENTIFIED BY cata
DEFAULT TABLESPACE cata
QUOTA UNLIMITED ON cata;
CREATE USER cata
:创建一个用户名为 “cata” 的用户。
IDENTIFIED BY cata
:指定用户的密码为 “cata”。
DEFAULT TABLESPACE cata
:指定用户的默认表空间为 “cata”。这是用户创建对象(如表、索引等)时将使用的表空间。
QUOTA UNLIMITED ON cata
:为用户 “cata” 分配在表空间 “cata” 中的空间配额。使用UNLIMITED
表示该用户在 “cata” 表空间中有无限制的空间配额,即可以使用该表空间中的所有可用空间。
3.为用户授权
GRANT connect,resource TO cata;
GRANT
:用于授予权限的关键字。
connect
:是一个数据库角色,授予该权限允许用户连接到数据库。具有connect
权限的用户可以登录到数据库,但不能执行太多的数据库操作。
resource
:同样是一个数据库角色,授予该权限允许用户创建表、序列、过程等数据库对象,并使用已有的表。
TO cata
:表示将这两个权限授予给用户名为 “cata” 的用户。因此,这个语句的作用是授予用户 “cata” 连接数据库的权限 (
connect
) 以及在数据库中创建和使用对象的权限(resource
)。用户 “cata” 将能够连接到数据库并具备一定的数据库对象管理能力。
GRANT recovery_catalog_owner TO cata;
GRANT
:用于授予权限的关键字。
recovery_catalog_owner
:是一个特殊的数据库角色,用于管理 Oracle RMAN(Recovery Manager)恢复目录。该角色具有管理 RMAN 恢复目录所需的权限。
TO cata
:表示将recovery_catalog_owner
角色授予给用户名为 “cata” 的用户。因此,这个语句的作用是将 Oracle 数据库中
recovery_catalog_owner
角色的权限授予给用户"cata"。通过这个权限,用户 “cata” 将能够管理和操作 Oracle RMAN 恢复目录,用于备份和恢复数据库。
4.创建Catalog
启动监听
lsnrctl start
进入RMAN
rman catalog cata/cata@orcl
在连接上去之后提示我们连接到恢复目录数据库
- 创建Catalog
在创建之前我们可以先查看一下cata用户数据
select object_name,object_type from user_objects;
我们可以看到此时刚创建的用户没有数据
然后我们创建Catalog
create catalog TABLESPACE cata;
再次查看用户数据
我们发现cata用户下创建了许多表和索引,还有一些其他数据
5和6.Connect to target database and Register target database
这里是需要两个Oracle的(如果只有一个oracle也想实操的话往下看单机模拟)
实验中两个Oracle的TNS如上(这里根据自己情况调整)
这里就是先连接到需要注册的数据库也就是目标数据库
然后在连接到回复目录数据库
然后执行register database;
完成注册
- 单机模拟 (受限于只有一个oracle,想要模拟实操)
这里实际上是将自己的orcl数据库即作为目标数据库,又作为恢复目录数据库,在实际开发中这样没有任何意义,仅供模拟实操
2、创建Catalog完成之后的日常登录方式
方式一:
- 正常情况
- 单机模拟
方式二:
- 正常情况
- 单机模拟
rman target sys/123@orcl catalog cata/cata@orcl
3、Script Examples 脚本示例
- 使用CREATE SCRIPT存储脚本。
create script Level0Backup {
backup
incremental level 0
format '/u01/app/oracle/backup/%d_%s_%p' filesperset 5
(database include current controlfile);
sql 'alter system archive log current';
}
backup incremental level 0
:表示创建一个 Level 0 的增量备份。Level 0 备份是全量备份,它包含了整个数据库的所有数据。
format '/u01/app/oracle/backup/%d_%s_%p'
:指定备份文件的格式和存储路径。%d
表示数据库名,%s
表示备份集的名称,%p
表示备份片的序号。备份文件将保存在/u01/app/oracle/backup/
目录中。
fileper_set 5
:表示每个备份集中包含的备份文件的数量限制为 5 个。这可以有助于管理备份文件的数量。
(database include current controlfile)
:指定备份的内容,包括整个数据库以及当前的控制文件。
sql 'alter system archive log current'
:在备份期间执行的 SQL 命令,这里是强制数据库归档当前的日志文件。
- 使用EXECUTE SCRIPT运行一个脚本
run {execute script Level0Backup;}
4、Managing Scripts 管理脚本
- 使用REPLACE SCRIPT重写脚本
格式:REPLACE SCRIPT 脚本名 {
内容
}
每次修改脚本需要对脚本完全修改,就相当于重新创建这个脚本,只不过脚本名字还是那个名字而已
以上基础操作3的脚本为例,将filesperset改成3,如下:
REPLACE script Level0Backup {
backup
incremental level 0
format '/u01/app/oracle/backup/%d_%s_%p' filesperset 3
(database include current controlfile);
sql 'alter system archive log current';
}
- 使用DELETE SCRIPT删除脚本
DELETE SCRIPT Level0Backup;
- 使用打印脚本显示脚本
PRINT SCRIPT Level0Backup;
完结散花