yashandb教程FG034-YashanDB物理备份实践
本文档风哥主要介绍YashanDB物理备份的相关知识,包括YashanDB物理备份的概念、类型、优势,以及RMAN备份、冷备份、热备份的具体实现和使用方法,风哥教程参考YashanDB官方文档备份恢复手册内容,适合DBA和开发人员在学习和测试中使用。学习交流加群风哥微信: itpux-com
Part01-基础概念与理论知识
1.1 YashanDB物理备份概念
YashanDB物理备份是指通过备份数据库的物理文件(如数据文件、控制文件、日志文件等)来保护数据库。物理备份可以快速恢复数据库到备份时的状态,是数据库灾难恢复的重要手段。更多视频教程www.fgedu.net.cn
- 备份数据库的物理文件
- 可以快速恢复数据库
- 适合灾难恢复
- 备份和恢复速度快
- 可以进行增量备份
1.2 YashanDB物理备份类型
YashanDB支持以下类型的物理备份:
– 冷备份(脱机备份):在数据库关闭状态下进行的备份
– 热备份(联机备份):在数据库运行状态下进行的备份
– RMAN备份:使用RMAN工具进行的备份
– 增量备份:只备份自上次备份以来的变化
– 差异备份:备份自上次全量备份以来的变化
– 备份集:RMAN创建的备份文件集合
– 映像副本:数据库文件的完整副本
1.3 YashanDB物理备份的优势
YashanDB物理备份的优势:
- 速度快:备份和恢复速度快
- 可靠性高:直接备份物理文件,可靠性高
- 完整性好:可以备份整个数据库的物理结构
- 支持增量备份:可以减少备份时间和存储空间
- 支持并行备份:可以提高备份速度
- 支持压缩备份:可以减少存储空间
Part02-生产环境规划与建议
2.1 YashanDB物理备份规划
在生产环境中进行YashanDB物理备份规划时,需要考虑以下因素:
1. 备份频率:根据数据变化频率确定备份频率
2. 备份类型:选择适合的备份类型(全量、增量、差异)
3. 备份时间:选择系统负载低的时间进行备份
4. 存储位置:确定备份文件的存储位置
5. 备份验证:定期验证备份的有效性
6. 备份保留:确定备份文件的保留期限
7. 恢复时间目标:根据业务需求确定恢复时间目标
8. 备份介质:选择合适的备份介质(磁盘、磁带等)
2.2 YashanDB物理备份策略
YashanDB物理备份的策略:
- 全量备份:定期进行全量备份,如每周一次
- 增量备份:在全量备份之间进行增量备份,如每天一次
- 差异备份:备份自上次全量备份以来的变化
- 归档日志备份:定期备份归档日志,确保可以进行point-in-time恢复
- 控制文件备份:定期备份控制文件,确保控制文件损坏时可以恢复
- 备份集管理:定期管理备份集,删除过期的备份
2.3 YashanDB物理备份最佳实践
YashanDB物理备份的最佳实践:
- 定期备份:建立定期备份计划
- 备份验证:定期验证备份的有效性
- 备份压缩:使用压缩减少备份文件大小
- 备份加密:对敏感数据进行加密备份
- 备份存储:将备份文件存储在安全的位置,最好是异地存储
- 备份自动化:使用脚本自动化备份过程
- 备份监控:监控备份过程,确保备份成功
Part03-生产环境项目实施方案
3.1 YashanDB RMAN备份
3.1.1 YashanDB RMAN备份命令
RMAN target /
— 配置RMAN
CONFIGURE DEFAULT DEVICE TYPE TO DISK;
CONFIGURE DEVICE TYPE DISK PARALLELISM 4;
CONFIGURE BACKUP OPTIMIZATION ON;
CONFIGURE COMPRESSION ALGORITHM ‘BASIC’;
— 全库备份
BACKUP DATABASE PLUS ARCHIVELOG;
— 增量备份
BACKUP INCREMENTAL LEVEL 1 DATABASE PLUS ARCHIVELOG;
— 表空间备份
BACKUP TABLESPACE FGEDUTBS;
— 数据文件备份
BACKUP DATAFILE ‘/yashandb/fgdata/fgedudb/datafile/o1_mf_fgedutbs_%u_.dbf’;
— 控制文件备份
BACKUP CURRENT CONTROLFILE;
— 归档日志备份
BACKUP ARCHIVELOG ALL;
— 备份到指定位置
BACKUP DATABASE PLUS ARCHIVELOG FORMAT ‘/yashandb/backup/%U’;
— 压缩备份
BACKUP AS COMPRESSED BACKUPSET DATABASE PLUS ARCHIVELOG;
3.1.2 YashanDB RMAN备份参数
– TARGET:指定目标数据库
– CATALOG:指定恢复目录数据库
– DEVICE TYPE:指定备份设备类型
– PARALLELISM:指定并行度
– FORMAT:指定备份文件格式
– COMPRESSED:指定压缩备份
– INCREMENTAL LEVEL:指定增量备份级别
– PLUS ARCHIVELOG:备份归档日志
– TAG:指定备份标签
– NOT BACKED UP:只备份未备份的文件
– SKIP:跳过指定的文件
3.2 YashanDB冷备份
3.2.1 YashanDB冷备份步骤
1. 关闭数据库
SHUTDOWN IMMEDIATE;
2. 备份数据文件、控制文件、参数文件和密码文件
# 备份数据文件
cp /yashandb/fgdata/fgedudb/datafile/* /yashandb/backup/
# 备份控制文件
cp /yashandb/fgdata/fgedudb/controlfile/* /yashandb/backup/
# 备份参数文件
cp /yashandb/app/dbs/initfgedudb.ora /yashandb/backup/
# 备份密码文件
cp /yashandb/app/dbs/orapwfgedudb /yashandb/backup/
3. 启动数据库
STARTUP;
3.3 YashanDB热备份
3.3.1 YashanDB热备份步骤
1. 确保数据库处于归档模式
SELECT log_mode FROM v$database;
2. 开始热备份
ALTER DATABASE BEGIN BACKUP;
3. 备份数据文件
# 备份数据文件
cp /yashandb/fgdata/fgedudb/datafile/* /yashandb/backup/
4. 结束热备份
ALTER DATABASE END BACKUP;
5. 备份控制文件和归档日志
ALTER DATABASE BACKUP CONTROLFILE TO ‘/yashandb/backup/controlfile.bak’;
# 备份归档日志
ALTER SYSTEM ARCHIVE LOG CURRENT;
cp /yashandb/fgdata/fgedudb/archivelog/* /yashandb/backup/
3.4 YashanDB备份验证
3.4.1 YashanDB备份验证方法
RMAN target /
— 验证备份集
VALIDATE BACKUPSET ‘backup_set_name’;
— 验证数据库备份
VALIDATE DATABASE;
— 验证表空间备份
VALIDATE TABLESPACE FGEDUTBS;
— 验证数据文件备份
VALIDATE DATAFILE ‘/yashandb/fgdata/fgedudb/datafile/o1_mf_fgedutbs_%u_.dbf’;
— 验证归档日志备份
VALIDATE ARCHIVELOG ALL;
Part04-生产案例与实战讲解
4.1 YashanDB RMAN全库备份实战案例
在生产环境中,使用RMAN进行全库备份:
— 1. 连接到RMAN
RMAN target /
— 2. 配置RMAN
CONFIGURE DEFAULT DEVICE TYPE TO DISK;
CONFIGURE DEVICE TYPE DISK PARALLELISM 4;
CONFIGURE BACKUP OPTIMIZATION ON;
CONFIGURE COMPRESSION ALGORITHM ‘BASIC’;
— 3. 执行全库备份
BACKUP DATABASE PLUS ARCHIVELOG FORMAT ‘/yashandb/backup/full_%U’;
— 备份结果
Starting backup at 11-APR-26
current log archived
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=123 device type=DISK
allocated channel: ORA_DISK_2
channel ORA_DISK_2: SID=124 device type=DISK
allocated channel: ORA_DISK_3
channel ORA_DISK_3: SID=125 device type=DISK
allocated channel: ORA_DISK_4
channel ORA_DISK_4: SID=126 device type=DISK
channel ORA_DISK_1: starting archived log backup set
channel ORA_DISK_1: specifying archived log(s) in backup set
input archived log thread=1 sequence=1 RECID=1 STAMP=1234567890
input archived log thread=1 sequence=2 RECID=2 STAMP=1234567891
channel ORA_DISK_1: starting piece 1 at 11-APR-26
channel ORA_DISK_1: finished piece 1 at 11-APR-26
piece handle=/yashandb/backup/full_1234567890_1_1 tag=TAG20260411T100000 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:05
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00001 name=/yashandb/fgdata/fgedudb/datafile/o1_mf_system_%u_.dbf
input datafile file number=00002 name=/yashandb/fgdata/fgedudb/datafile/o1_mf_sysaux_%u_.dbf
input datafile file number=00003 name=/yashandb/fgdata/fgedudb/datafile/o1_mf_undotbs1_%u_.dbf
input datafile file number=00004 name=/yashandb/fgdata/fgedudb/datafile/o1_mf_users_%u_.dbf
input datafile file number=00005 name=/yashandb/fgdata/fgedudb/datafile/o1_mf_fgedutbs_%u_.dbf
channel ORA_DISK_1: starting piece 1 at 11-APR-26
channel ORA_DISK_2: starting piece 2 at 11-APR-26
channel ORA_DISK_3: starting piece 3 at 11-APR-26
channel ORA_DISK_4: starting piece 4 at 11-APR-26
channel ORA_DISK_1: finished piece 1 at 11-APR-26
piece handle=/yashandb/backup/full_1234567890_2_1 tag=TAG20260411T100000 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:05:00
channel ORA_DISK_2: finished piece 2 at 11-APR-26
piece handle=/yashandb/backup/full_1234567890_3_1 tag=TAG20260411T100000 comment=NONE
channel ORA_DISK_2: backup set complete, elapsed time: 00:05:00
channel ORA_DISK_3: finished piece 3 at 11-APR-26
piece handle=/yashandb/backup/full_1234567890_4_1 tag=TAG20260411T100000 comment=NONE
channel ORA_DISK_3: backup set complete, elapsed time: 00:05:00
channel ORA_DISK_4: finished piece 4 at 11-APR-26
piece handle=/yashandb/backup/full_1234567890_5_1 tag=TAG20260411T100000 comment=NONE
channel ORA_DISK_4: backup set complete, elapsed time: 00:05:00
current log archived
channel ORA_DISK_1: starting archived log backup set
channel ORA_DISK_1: specifying archived log(s) in backup set
input archived log thread=1 sequence=3 RECID=3 STAMP=1234567892
channel ORA_DISK_1: starting piece 1 at 11-APR-26
channel ORA_DISK_1: finished piece 1 at 11-APR-26
piece handle=/yashandb/backup/full_1234567890_6_1 tag=TAG20260411T100000 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:05
channel ORA_DISK_1: starting control file and SPFILE backup set
channel ORA_DISK_1: starting piece 1 at 11-APR-26
channel ORA_DISK_1: finished piece 1 at 11-APR-26
piece handle=/yashandb/backup/full_1234567890_7_1 tag=TAG20260411T100000 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:05
Finished backup at 11-APR-26
— 4. 验证备份
VALIDATE BACKUPSET ‘full_1234567890_1_1’, ‘full_1234567890_2_1’, ‘full_1234567890_3_1’, ‘full_1234567890_4_1’, ‘full_1234567890_5_1’, ‘full_1234567890_6_1’, ‘full_1234567890_7_1’;
— 验证结果
Starting validate at 11-APR-26
using channel ORA_DISK_1
using channel ORA_DISK_2
using channel ORA_DISK_3
using channel ORA_DISK_4
channel ORA_DISK_1: starting validation of backup set
channel ORA_DISK_1: backup set key=1234567890
channel ORA_DISK_1: reading from backup piece /yashandb/backup/full_1234567890_1_1
channel ORA_DISK_1: validation complete, elapsed time: 00:00:05
channel ORA_DISK_2: starting validation of backup set
channel ORA_DISK_2: backup set key=1234567891
channel ORA_DISK_2: reading from backup piece /yashandb/backup/full_1234567890_2_1
channel ORA_DISK_2: validation complete, elapsed time: 00:02:00
channel ORA_DISK_3: starting validation of backup set
channel ORA_DISK_3: backup set key=1234567892
channel ORA_DISK_3: reading from backup piece /yashandb/backup/full_1234567890_3_1
channel ORA_DISK_3: validation complete, elapsed time: 00:02:00
channel ORA_DISK_4: starting validation of backup set
channel ORA_DISK_4: backup set key=1234567893
channel ORA_DISK_4: reading from backup piece /yashandb/backup/full_1234567890_4_1
channel ORA_DISK_4: validation complete, elapsed time: 00:02:00
channel ORA_DISK_1: starting validation of backup set
channel ORA_DISK_1: backup set key=1234567894
channel ORA_DISK_1: reading from backup piece /yashandb/backup/full_1234567890_5_1
channel ORA_DISK_1: validation complete, elapsed time: 00:02:00
channel ORA_DISK_2: starting validation of backup set
channel ORA_DISK_2: backup set key=1234567895
channel ORA_DISK_2: reading from backup piece /yashandb/backup/full_1234567890_6_1
channel ORA_DISK_2: validation complete, elapsed time: 00:00:05
channel ORA_DISK_3: starting validation of backup set
channel ORA_DISK_3: backup set key=1234567896
channel ORA_DISK_3: reading from backup piece /yashandb/backup/full_1234567890_7_1
channel ORA_DISK_3: validation complete, elapsed time: 00:00:05
Finished validate at 11-APR-26
4.2 YashanDB RMAN增量备份实战案例
在生产环境中,使用RMAN进行增量备份:
— 1. 连接到RMAN
RMAN target /
— 2. 执行0级增量备份(全量备份)
BACKUP INCREMENTAL LEVEL 0 DATABASE PLUS ARCHIVELOG FORMAT ‘/yashandb/backup/inc0_%U’;
— 3. 插入新数据
SQL> INSERT INTO fgedu.employees VALUES (8, ‘郑十’, ‘销售部’, 12000);
SQL> COMMIT;
— 4. 执行1级增量备份
BACKUP INCREMENTAL LEVEL 1 DATABASE PLUS ARCHIVELOG FORMAT ‘/yashandb/backup/inc1_%U’;
— 增量备份结果
Starting backup at 11-APR-26
current log archived
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=123 device type=DISK
allocated channel: ORA_DISK_2
channel ORA_DISK_2: SID=124 device type=DISK
allocated channel: ORA_DISK_3
channel ORA_DISK_3: SID=125 device type=DISK
allocated channel: ORA_DISK_4
channel ORA_DISK_4: SID=126 device type=DISK
channel ORA_DISK_1: starting archived log backup set
channel ORA_DISK_1: specifying archived log(s) in backup set
input archived log thread=1 sequence=4 RECID=4 STAMP=1234567893
channel ORA_DISK_1: starting piece 1 at 11-APR-26
channel ORA_DISK_1: finished piece 1 at 11-APR-26
piece handle=/yashandb/backup/inc1_1234567897_1_1 tag=TAG20260411T101000 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:05
channel ORA_DISK_1: starting incremental level 1 datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00005 name=/yashandb/fgdata/fgedudb/datafile/o1_mf_fgedutbs_%u_.dbf
channel ORA_DISK_1: starting piece 1 at 11-APR-26
channel ORA_DISK_1: finished piece 1 at 11-APR-26
piece handle=/yashandb/backup/inc1_1234567897_2_1 tag=TAG20260411T101000 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:01:00
current log archived
channel ORA_DISK_1: starting archived log backup set
channel ORA_DISK_1: specifying archived log(s) in backup set
input archived log thread=1 sequence=5 RECID=5 STAMP=1234567894
channel ORA_DISK_1: starting piece 1 at 11-APR-26
channel ORA_DISK_1: finished piece 1 at 11-APR-26
piece handle=/yashandb/backup/inc1_1234567897_3_1 tag=TAG20260411T101000 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:05
channel ORA_DISK_1: starting control file and SPFILE backup set
channel ORA_DISK_1: starting piece 1 at 11-APR-26
channel ORA_DISK_1: finished piece 1 at 11-APR-26
piece handle=/yashandb/backup/inc1_1234567897_4_1 tag=TAG20260411T101000 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:05
Finished backup at 11-APR-26
— 5. 验证增量备份
VALIDATE BACKUPSET ‘inc1_1234567897_1_1’, ‘inc1_1234567897_2_1’, ‘inc1_1234567897_3_1’, ‘inc1_1234567897_4_1’;
4.3 YashanDB冷备份实战案例
在生产环境中,使用冷备份进行数据库备份:
— 1. 关闭数据库
SQL> SHUTDOWN IMMEDIATE;
Database closed.
Database dismounted.
ORACLE instance shut down.
— 2. 备份数据文件、控制文件、参数文件和密码文件
# 创建备份目录
mkdir -p /yashandb/backup/cold
# 备份数据文件
cp /yashandb/fgdata/fgedudb/datafile/* /yashandb/backup/cold/
# 备份控制文件
cp /yashandb/fgdata/fgedudb/controlfile/* /yashandb/backup/cold/
# 备份参数文件
cp /yashandb/app/dbs/initfgedudb.ora /yashandb/backup/cold/
# 备份密码文件
cp /yashandb/app/dbs/orapwfgedudb /yashandb/backup/cold/
# 备份归档日志
cp /yashandb/fgdata/fgedudb/archivelog/* /yashandb/backup/cold/
— 3. 启动数据库
SQL> STARTUP;
ORACLE instance started.
Total System Global Area 1610612736 bytes
Fixed Size 2253784 bytes
Variable Size 402653128 bytes
Database Buffers 1191182336 bytes
Redo Buffers 7383040 bytes
Database mounted.
Database opened.
— 4. 验证备份文件
ls -la /yashandb/backup/cold/
-rw-r—– 1 oracle oinstall 10485760 Apr 11 10:20 o1_mf_system_%u_.dbf
-rw-r—– 1 oracle oinstall 52428800 Apr 11 10:20 o1_mf_sysaux_%u_.dbf
-rw-r—– 1 oracle oinstall 20971520 Apr 11 10:20 o1_mf_undotbs1_%u_.dbf
-rw-r—– 1 oracle oinstall 5242880 Apr 11 10:20 o1_mf_users_%u_.dbf
-rw-r—– 1 oracle oinstall 10485760 Apr 11 10:20 o1_mf_fgedutbs_%u_.dbf
-rw-r—– 1 oracle oinstall 9437184 Apr 11 10:20 o1_mf_control01_%u_.ctl
-rw-r—– 1 oracle oinstall 9437184 Apr 11 10:20 o1_mf_control02_%u_.ctl
-rw-r—– 1 oracle oinstall 1544 Apr 11 10:20 initfgedudb.ora
-rw-r—– 1 oracle oinstall 768 Apr 11 10:20 orapwfgedudb
-rw-r—– 1 oracle oinstall 1048576 Apr 11 10:20 1_1_1234567890.dbf
-rw-r—– 1 oracle oinstall 1048576 Apr 11 10:20 1_2_1234567891.dbf
-rw-r—– 1 oracle oinstall 1048576 Apr 11 10:20 1_3_1234567892.dbf
4.4 YashanDB热备份实战案例
在生产环境中,使用热备份进行数据库备份:
— 1. 确保数据库处于归档模式
SQL> SELECT log_mode FROM v$database;
LOG_MODE
————
ARCHIVELOG
— 2. 创建备份目录
mkdir -p /yashandb/backup/hot
— 3. 开始热备份
SQL> ALTER DATABASE BEGIN BACKUP;
Database altered.
— 4. 备份数据文件
cp /yashandb/fgdata/fgedudb/datafile/* /yashandb/backup/hot/
— 5. 结束热备份
SQL> ALTER DATABASE END BACKUP;
Database altered.
— 6. 备份控制文件和归档日志
SQL> ALTER DATABASE BACKUP CONTROLFILE TO ‘/yashandb/backup/hot/controlfile.bak’;
Database altered.
SQL> ALTER SYSTEM ARCHIVE LOG CURRENT;
System altered.
cp /yashandb/fgdata/fgedudb/archivelog/* /yashandb/backup/hot/
— 7. 验证备份文件
ls -la /yashandb/backup/hot/
-rw-r—– 1 oracle oinstall 10485760 Apr 11 10:30 o1_mf_system_%u_.dbf
-rw-r—– 1 oracle oinstall 52428800 Apr 11 10:30 o1_mf_sysaux_%u_.dbf
-rw-r—– 1 oracle oinstall 20971520 Apr 11 10:30 o1_mf_undotbs1_%u_.dbf
-rw-r—– 1 oracle oinstall 5242880 Apr 11 10:30 o1_mf_users_%u_.dbf
-rw-r—– 1 oracle oinstall 10485760 Apr 11 10:30 o1_mf_fgedutbs_%u_.dbf
-rw-r—– 1 oracle oinstall 9437184 Apr 11 10:30 controlfile.bak
-rw-r—– 1 oracle oinstall 1048576 Apr 11 10:30 1_1_1234567890.dbf
-rw-r—– 1 oracle oinstall 1048576 Apr 11 10:30 1_2_1234567891.dbf
-rw-r—– 1 oracle oinstall 1048576 Apr 11 10:30 1_3_1234567892.dbf
-rw-r—– 1 oracle oinstall 1048576 Apr 11 10:30 1_4_1234567893.dbf
-rw-r—– 1 oracle oinstall 1048576 Apr 11 10:30 1_5_1234567894.dbf
Part05-风哥经验总结与分享
5.1 YashanDB物理备份使用经验
YashanDB物理备份使用经验总结:
- 选择合适的备份工具:优先使用RMAN进行物理备份
- 制定备份策略:根据数据变化频率制定备份策略
- 定期备份:建立定期备份计划
- 备份验证:定期验证备份的有效性
- 备份存储:将备份文件存储在安全的位置,最好是异地存储
- 备份自动化:使用脚本自动化备份过程
- 备份监控:监控备份过程,确保备份成功
5.2 YashanDB物理备份常见问题
## 1. 备份失败
– 症状:备份过程中出现错误
– 原因:权限不足,存储空间不足,I/O错误,数据库连接问题
– 解决:确保用户有足够的权限,检查存储空间,检查I/O设备,确保数据库连接正常
## 2. 备份速度慢
– 症状:备份过程耗时过长
– 原因:数据量较大,系统资源不足,I/O性能差,未使用并行
– 解决:使用并行备份,优化I/O性能,在系统负载低时进行备份
## 3. 备份文件损坏
– 症状:备份文件损坏,无法用于恢复
– 原因:存储介质故障,网络中断,系统崩溃,备份过程中数据库异常
– 解决:定期验证备份文件的完整性,使用可靠的存储介质,确保备份过程中数据库稳定
## 4. 恢复失败
– 症状:使用备份文件恢复数据库时失败
– 原因:备份文件损坏,备份不完整,恢复命令错误
– 解决:确保备份文件完整有效,使用正确的恢复命令
## 5. 备份空间不足
– 症状:备份过程中因空间不足而失败
– 原因:备份文件过大,存储空间不足
– 解决:使用压缩备份,清理过期备份,增加存储空间
5.3 YashanDB物理备份使用建议
YashanDB物理备份使用建议:
- 制定备份计划:根据业务需求制定合理的备份计划
- 选择合适的备份工具:优先使用RMAN进行物理备份
- 定期备份:建立定期备份计划,确保数据的安全性
- 备份验证:定期验证备份的有效性,确保可恢复性
- 备份存储:将备份文件存储在安全的位置,最好是异地存储
- 备份自动化:使用脚本自动化备份过程,减少人工干预
- 备份监控:监控备份过程,确保备份成功
- 灾备策略:建立完善的灾备策略,确保数据的安全性和可恢复性
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
