一、Nocatalog 模式(默认模式)
1. 核心原理
以数据库控制文件(control file) 作为备份元数据的存储载体,所有备份信息(备份集、归档日志、恢复点等)均写入控制文件,无额外独立目录库依赖。
2. 登录命令(核心补充)
bash
运行
# 方式1:本地登录(最常用,直接连接本地目标库)
oracle> rman target / nocatalog;
# 方式2:远程登录(指定目标库的TNS连接串)
oracle> rman target 用户名/密码@目标库TNS别名 nocatalog;
# 登录成功提示(无catalog相关连接信息)
Recovery Manager: Release 10.2.0.1.0 - Production on Wed Dec 10 15:05:20 2008
Copyright (c) 1982, 2005, Oracle. All rights reserved.
connected to target database: ORA10G (DBID=3988862108)
# 无 "connected to recovery catalog database" 提示,代表Nocatalog模式生效
3. 关键配置(解决元数据自动清除问题)
(1)查看控制文件备份信息保留时间
sql
-- 查看默认保留时间(默认7天)
SQL> show parameter control_file_record_keep_time;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
control_file_record_keep_time integer 7
(2)调整保留时间(建议加大,避免元数据过早丢失)
sql
-- 调整为14天,scope=both 同时生效于内存和参数文件
SQL> alter system set control_file_record_keep_time=14 scope=both;
-- 验证修改结果
SQL> select name,value,issys_modifiable from v$parameter where name='control_file_record_keep_time';
NAME VALUE ISSYS_MOD
--------------- ---------- ---------
control_file_re 14 IMMEDIATE
4. 核心注意事项
- 控制文件会随备份次数增加存储大量元数据,定期备份 control file 是核心要求,否则元数据丢失将无法恢复。
- 备份信息超过
control_file_record_keep_time会自动清除,需根据备份策略合理设置该参数。
5. Nocatalog 恢复步骤(必须先恢复控制文件)
plaintext
1) 搭建Oracle运行环境(准备init/spfile参数文件);
2) 以文件方式手动恢复controlfile到init文件指定路径;
3) 启动数据库到mount状态:startup mount;
4) 连接RMAN(Nocatalog模式)恢复数据文件(datafile);
5) 打开数据库并重置日志:alter database open resetlogs。
二、Catalog 模式(独立目录模式)
1. 核心原理
需提前创建独立的恢复目录数据库,备份元数据存储在该目录库中,与目标数据库分离,支持长期保留和集中管理。
2. 完整配置步骤(实操脚本)
(1)创建恢复目录表空间
sql
SQL> create tablespace rman_ts
datafile '/u01/oracle/oradata/ora10g/rmants.dbf'
size 20M; -- 可根据备份规模调整大小
(2)创建并授权 RMAN 目录用户
sql
-- 创建用户,指定默认表空间
SQL> create user rman identified by rman
default tablespace rman_ts
quota unlimited on rman_ts;
-- 授予恢复目录管理权限(核心权限)
SQL> grant recovery_catalog_owner to rman;
-- 补充基础连接权限(可选)
SQL> grant connect to rman;
-- 查看角色权限(验证授权结果)
SQL> select * from dba_sys_privs where grantee='RECOVERY_CATALOG_OWNER';
(3)创建并注册恢复目录
bash
运行
# 1. 仅连接到恢复目录数据库(初始化目录)
oracle> rman catalog rman/rman;
# 2. 创建恢复目录(指定表空间)
RMAN> create catalog tablespace rman_ts;
# 3. 注册目标数据库(将目标库元数据关联到目录库)
RMAN> register database;
# 执行后提示:database registered in recovery catalog + full resync complete
# 4. 连接目标数据库(后续备份恢复需同时连目标库+目录库)
RMAN> connect target /;
3. 登录命令
bash
运行
# 方式1:本地目标库 + 本地目录库
oracle> rman target / catalog rman/rman;
# 方式2:远程目标库 + 远程目录库
oracle> rman target 目标库用户名/密码@目标库TNS catalog rman/rman@目录库TNS;
# 登录成功提示(同时显示目标库和目录库连接信息)
Recovery Manager: Release 10.2.0.1.0 - Production on Wed Dec 10 15:00:42 2008
Copyright (c) 1982, 2005, Oracle. All rights reserved.
connected to target database: ORA10G (DBID=3988862108)
connected to recovery catalog database
4. 核心优势
- 元数据无保留时间限制,可永久存储,满足审计 / 长期备份需求;
- 支持集中管理多个目标数据库的备份元数据;
- 恢复时无需手动恢复控制文件,RMAN 可从目录库获取元数据。
5. Catalog 恢复步骤
plaintext
1) 搭建Oracle运行环境(准备init/spfile参数文件);
2) 连接RMAN(Catalog模式),直接restore controlfile(从目录库获取元数据);
3) 启动数据库到mount状态:alter database mount;
4) 恢复数据文件(datafile);
5) 打开数据库并重置日志:alter database open resetlogs。
三、核心命令解释(通用)
| 命令 | 作用 |
|---|---|
| Report schema | 查看目标数据库的 schema 信息(确认需备份 / 恢复的对象) |
| List backup | 从控制文件 / 恢复目录读取备份信息(Nocatalog 读控制文件,Catalog 读目录库) |
| Crosscheck backup | 校验备份文件的物理存在性(对比元数据与实际磁盘文件) |
| Delete backupset 24 | 删除指定编号(24)的备份集(同时删除元数据和物理文件) |
四、核心差异总结
| 维度 | Nocatalog 模式 | Catalog 模式 |
|---|---|---|
| 登录命令 | rman target / nocatalog |
rman target / catalog rman/rman |
| 元数据存储位置 | 目标库控制文件 | 独立恢复目录数据库 |
| 配置复杂度 | 无额外配置,开箱即用 | 需创建目录库、用户、授权、注册目标库 |
| 恢复前提 | 必须先手动恢复控制文件 | 可直接通过 RMAN 恢复控制文件 |
| 元数据保留 | 受 control_file_record_keep_time 限制 | 无时间限制,永久保留 |
| 核心风险 | 控制文件损坏则元数据丢失 | 目录库独立,目标库控制文件损坏不影响 |
| 适用场景 | 小型库、测试环境、简单备份策略 | 生产库、多实例集群、长期备份需求 |
rman target / 命令登录的时什么模式
你使用 rman target / 命令登录时,默认进入的是 Nocatalog 模式(无目录模式),这是 RMAN 的默认工作模式。
关键细节说明
-
核心判定依据
-
RMAN 的模式由是否指定
catalog关键字决定:- 仅用
rman target /:默认启用 Nocatalog 模式 (即使不写nocatalog关键字,也默认是该模式); - 用
rman target / catalog 用户名/密码:才会启用 Catalog 模式。
- 仅用
-
登录成功后可通过提示验证: bash
运行
# Nocatalog模式登录提示(无目录库连接信息) connected to target database: ORA10G (DBID=3988862108) # Catalog模式登录提示(多一行目录库连接信息) connected to target database: ORA10G (DBID=3988862108) connected to recovery catalog database
-
-
补充说明
target /中的/代表本地操作系统认证 连接目标数据库,和模式无关(模式只由catalog/nocatalog控制);- 若想显式指定 Nocatalog 模式,可写为
rman target / nocatalog,效果和rman target /完全一致,只是更直观。
总结
rman target /→ 默认Nocatalog 模式(元数据存在目标库控制文件);rman target / catalog 用户名/密码→ Catalog 模式(元数据存在独立恢复目录库);- 显式指定 Nocatalog:
rman target / nocatalog(和默认写法等价,推荐生产环境显式指定,便于维护)。