外观
DM 备份命令与工具
DM数据库提供了多种备份命令和工具,用于执行数据库备份操作。这些工具和命令支持全量备份、增量备份、日志备份等多种备份类型,可以满足不同场景的备份需求。掌握DM数据库的备份命令和工具,对于确保数据库数据安全至关重要。
主要备份工具:
- dmrman:DM数据库备份恢复管理工具,支持各种备份恢复操作
- dmbackup:DM数据库备份工具,提供图形化和命令行两种操作方式
- SQL命令:通过SQL语句执行备份操作
- DM企业管理器:图形化管理工具,提供直观的备份操作界面
主要备份命令:
- BACKUP DATABASE:备份整个数据库
- BACKUP TABLESPACE:备份指定表空间
- BACKUP DATAFILE:备份指定数据文件
- BACKUP ARCHIVELOG:备份归档日志
- RESTORE DATABASE:恢复数据库
- RECOVER DATABASE:恢复数据库到指定状态
dmrman 工具详解
1. 工具简介
dmrman(DM Recovery Manager)是DM数据库提供的备份恢复管理工具,是执行DM数据库备份恢复操作的主要工具。它支持命令行交互和脚本两种方式,可以执行全量备份、增量备份、日志备份、恢复等操作。
主要功能:
- 执行各种备份操作
- 执行各种恢复操作
- 管理备份集
- 验证备份完整性
- 生成备份报告
2. 工具位置与启动
工具位置:
- Windows:
%DM_HOME%\bin\dmrman.exe - Linux:
$DM_HOME/bin/dmrman
启动方式:
2.1 交互式启动
shell
# Windows
dmrman.exe
# Linux
./dmrman2.2 命令行直接执行
shell
# Windows
dmrman.exe "BACKUP DATABASE 'D:/dmdbms/data/DAMENG/dm.ini' FULL TO BACKUPSET 'D:/dmdbms/backup/full_backup'"
# Linux
./dmrman "BACKUP DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' FULL TO BACKUPSET '/opt/dmdbms/backup/full_backup'"2.3 脚本方式执行
shell
# 创建备份脚本 backup_script.txt
BACKUP DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' FULL TO BACKUPSET '/opt/dmdbms/backup/full_backup';
BACKUP ARCHIVELOG FROM DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' TO BACKUPSET '/opt/dmdbms/backup/log_backup';
# 执行脚本
./dmrman SCRIPT FILE '/opt/dmdbms/scripts/backup_script.txt'3. 常用命令
3.1 备份命令
3.1.1 全量备份
shell
# 交互式执行
BACKUP DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' FULL TO BACKUPSET '/opt/dmdbms/backup/full_backup';
# 带压缩的全量备份
BACKUP DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' FULL TO BACKUPSET '/opt/dmdbms/backup/compressed_backup' COMPRESSED;
# 带加密的全量备份
BACKUP DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' FULL TO BACKUPSET '/opt/dmdbms/backup/encrypted_backup' COMPRESSED ENCRYPT WITH PASSWORD 'mypassword';3.1.2 增量备份
shell
# 累积增量备份
BACKUP DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' INCREMENT WITH BACKUPDIR '/opt/dmdbms/backup' TO BACKUPSET '/opt/dmdbms/backup/cumulative_backup';
# 差异增量备份
BACKUP DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' INCREMENT DIFFERENTIAL WITH BACKUPDIR '/opt/dmdbms/backup' TO BACKUPSET '/opt/dmdbms/backup/differential_backup';3.1.3 日志备份
shell
# 备份所有归档日志
BACKUP ARCHIVELOG FROM DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' TO BACKUPSET '/opt/dmdbms/backup/log_backup';
# 备份指定时间范围的归档日志
BACKUP ARCHIVELOG FROM DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' BETWEEN TIME '2023-01-01 00:00:00' AND '2023-01-02 00:00:00' TO BACKUPSET '/opt/dmdbms/backup/time_range_log_backup';3.1.4 表空间备份
shell
# 备份指定表空间
BACKUP TABLESPACE 'USERS' FROM DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' TO BACKUPSET '/opt/dmdbms/backup/tablespace_backup';3.1.5 数据文件备份
shell
# 备份指定数据文件
BACKUP DATAFILE '/opt/dmdbms/data/DAMENG/USERS01.DBF' FROM DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' TO BACKUPSET '/opt/dmdbms/backup/datafile_backup';3.2 恢复命令
3.2.1 全量恢复
shell
# 全量恢复
RESTORE DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' FROM BACKUPSET '/opt/dmdbms/backup/full_backup';3.2.2 增量恢复
shell
# 增量恢复
RECOVER DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' FROM BACKUPSET '/opt/dmdbms/backup/incremental_backup';3.2.3 归档日志恢复
shell
# 应用归档日志
RECOVER DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' WITH ARCHIVEDIR '/opt/dmdbms/arch';
# 应用归档日志到指定时间点
RECOVER DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' WITH ARCHIVEDIR '/opt/dmdbms/arch' UNTIL TIME '2023-01-01 12:00:00';3.2.4 更新数据库模式
shell
# 更新数据库模式
RECOVER DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' UPDATE DB_MAGIC;3.3 管理命令
3.3.1 查看备份集
shell
# 查看所有备份集
BACKUP LIST;
# 查看指定备份集
BACKUP LIST '/opt/dmdbms/backup/full_backup';3.3.2 检查备份完整性
shell
# 检查备份集完整性
CHECK BACKUPSET '/opt/dmdbms/backup/full_backup';3.3.3 修复备份目录
shell
# 修复备份目录
REPAIR BACKUPDIR '/opt/dmdbms/backup';3.3.4 清理归档日志
shell
# 清理指定时间之前的归档日志
PURGE ARCHIVELOG FROM DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' UNTIL TIME '2023-01-01 00:00:00';
# 清理指定LSN之前的归档日志
PURGE ARCHIVELOG FROM DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' UNTIL LSN 123456;dmbackup 工具详解
1. 工具简介
dmbackup是DM数据库提供的备份工具,支持图形化和命令行两种操作方式,主要用于执行DM数据库的备份操作。
主要功能:
- 支持全量备份、增量备份、日志备份
- 支持压缩备份和加密备份
- 支持定时备份
- 支持备份集管理
- 支持备份报告生成
2. 工具位置与启动
工具位置:
- Windows:
%DM_HOME%\bin\dmbackup.exe - Linux:
$DM_HOME/bin/dmbackup
启动方式:
2.1 图形化方式(仅Windows)
shell
# 直接双击dmbackup.exe或通过命令行启动
dmbackup.exe2.2 命令行方式
shell
# Windows
dmbackup.exe backup database full "D:/dmdbms/data/DAMENG/dm.ini" "D:/dmdbms/backup/full_backup"
# Linux
./dmbackup backup database full "/opt/dmdbms/data/DAMENG/dm.ini" "/opt/dmdbms/backup/full_backup"3. 命令行参数详解
基本语法:
dmbackup <command> <object> <type> <dm_ini_path> <backup_path> [options]主要参数:
| 参数 | 说明 |
|---|---|
| command | 操作命令:backup、restore、check |
| object | 备份对象:database、tablespace、datafile、archivelog |
| type | 备份类型:full、increment、differential |
| dm_ini_path | 数据库配置文件路径 |
| backup_path | 备份集路径 |
| --compress | 启用备份压缩 |
| --encrypt | 启用备份加密 |
| --password | 加密密码 |
| --parallel | 备份并行度 |
| --buffer_size | 备份缓冲区大小 |
使用示例:
shell
# 带压缩的全量备份
./dmbackup backup database full "/opt/dmdbms/data/DAMENG/dm.ini" "/opt/dmdbms/backup/compressed_backup" --compress --parallel 4
# 带加密的增量备份
./dmbackup backup database increment "/opt/dmdbms/data/DAMENG/dm.ini" "/opt/dmdbms/backup/encrypted_incremental_backup" --encrypt --password "mypassword"SQL 备份命令详解
1. 基本语法
DM数据库支持通过SQL语句执行备份操作,主要备份命令包括:
- BACKUP DATABASE:备份整个数据库
- BACKUP TABLESPACE:备份指定表空间
- BACKUP DATAFILE:备份指定数据文件
- BACKUP ARCHIVELOG:备份归档日志
2. BACKUP DATABASE 命令
语法:
sql
BACKUP DATABASE [FULL | INCREMENT [DIFFERENTIAL]] [WITH BACKUPDIR <备份目录>] TO BACKUPSET <备份集路径> [COMPRESSED] [ENCRYPT WITH PASSWORD <密码>];使用示例:
sql
-- 全量备份
BACKUP DATABASE FULL TO BACKUPSET '/opt/dmdbms/backup/full_backup';
-- 带压缩的全量备份
BACKUP DATABASE FULL TO BACKUPSET '/opt/dmdbms/backup/compressed_backup' COMPRESSED;
-- 累积增量备份
BACKUP DATABASE INCREMENT WITH BACKUPDIR '/opt/dmdbms/backup' TO BACKUPSET '/opt/dmdbms/backup/cumulative_backup';
-- 差异增量备份
BACKUP DATABASE INCREMENT DIFFERENTIAL WITH BACKUPDIR '/opt/dmdbms/backup' TO BACKUPSET '/opt/dmdbms/backup/differential_backup';3. BACKUP TABLESPACE 命令
语法:
sql
BACKUP TABLESPACE <表空间名> [FULL | INCREMENT [DIFFERENTIAL]] [WITH BACKUPDIR <备份目录>] TO BACKUPSET <备份集路径> [COMPRESSED] [ENCRYPT WITH PASSWORD <密码>];使用示例:
sql
-- 备份单个表空间
BACKUP TABLESPACE 'USERS' TO BACKUPSET '/opt/dmdbms/backup/tablespace_users_backup';
-- 备份多个表空间
BACKUP TABLESPACE 'USERS', 'SYSAUX' TO BACKUPSET '/opt/dmdbms/backup/tablespace_multiple_backup';
-- 带压缩的表空间备份
BACKUP TABLESPACE 'USERS' TO BACKUPSET '/opt/dmdbms/backup/tablespace_compressed_backup' COMPRESSED;4. BACKUP DATAFILE 命令
语法:
sql
BACKUP DATAFILE <数据文件路径> [FULL | INCREMENT [DIFFERENTIAL]] [WITH BACKUPDIR <备份目录>] TO BACKUPSET <备份集路径> [COMPRESSED] [ENCRYPT WITH PASSWORD <密码>];使用示例:
sql
-- 备份单个数据文件
BACKUP DATAFILE '/opt/dmdbms/data/DAMENG/USERS01.DBF' TO BACKUPSET '/opt/dmdbms/backup/datafile_users01_backup';
-- 备份多个数据文件
BACKUP DATAFILE '/opt/dmdbms/data/DAMENG/USERS01.DBF', '/opt/dmdbms/data/DAMENG/USERS02.DBF' TO BACKUPSET '/opt/dmdbms/backup/datafile_multiple_backup';5. BACKUP ARCHIVELOG 命令
语法:
sql
BACKUP ARCHIVELOG [ALL | CURRENT | FROM <归档目录> | BETWEEN TIME <开始时间> AND <结束时间> | BETWEEN LSN <开始LSN> AND <结束LSN>] TO BACKUPSET <备份集路径> [COMPRESSED] [ENCRYPT WITH PASSWORD <密码>];使用示例:
sql
-- 备份所有归档日志
BACKUP ARCHIVELOG ALL TO BACKUPSET '/opt/dmdbms/backup/archivelog_all_backup';
-- 备份当前归档日志
BACKUP ARCHIVELOG CURRENT TO BACKUPSET '/opt/dmdbms/backup/archivelog_current_backup';
-- 备份指定时间范围的归档日志
BACKUP ARCHIVELOG BETWEEN TIME '2023-01-01 00:00:00' AND '2023-01-02 00:00:00' TO BACKUPSET '/opt/dmdbms/backup/archivelog_time_range_backup';
-- 备份指定路径的归档日志
BACKUP ARCHIVELOG FROM '/opt/dmdbms/arch' TO BACKUPSET '/opt/dmdbms/backup/archivelog_path_backup';备份工具最佳实践
1. dmrman 最佳实践
1.1 使用脚本自动化备份
shell
#!/bin/bash
# 配置参数
DM_HOME="/opt/dmdbms"
INSTANCE_INI="/opt/dmdbms/data/DAMENG/dm.ini"
BACKUP_DIR="/opt/dmdbms/backup"
DATE=$(date +%Y%m%d%H%M%S)
# 创建备份目录
mkdir -p $BACKUP_DIR
# 执行全量备份
$DM_HOME/bin/dmrman << EOF
BACKUP DATABASE '$INSTANCE_INI' FULL TO BACKUPSET '$BACKUP_DIR/full_backup_$DATE' COMPRESSED;
BACKUP ARCHIVELOG FROM DATABASE '$INSTANCE_INI' TO BACKUPSET '$BACKUP_DIR/log_backup_$DATE' COMPRESSED;
EXIT;
EOF
# 检查备份结果
if [ $? -eq 0 ]; then
echo "备份成功:$DATE"
# 删除30天前的全量备份
find $BACKUP_DIR -name "full_backup_*" -type d -mtime +30 -exec rm -rf {}
# 删除14天前的日志备份
find $BACKUP_DIR -name "log_backup_*" -type d -mtime +14 -exec rm -rf {}
else
echo "备份失败:$DATE" >&2
exit 1
fi1.2 合理设置备份参数
shell
# 设置合理的并行度
BACKUP DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' FULL TO BACKUPSET '/opt/dmdbms/backup/full_backup' COMPRESSED PARALLEL 8;
# 设置合适的缓冲区大小
BACKUP DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' FULL TO BACKUPSET '/opt/dmdbms/backup/full_backup' COMPRESSED BUFFER_SIZE 64;
# 启用备份验证
BACKUP DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' FULL TO BACKUPSET '/opt/dmdbms/backup/full_backup' COMPRESSED VERIFY;2. 备份策略设计
2.1 混合备份策略
| 备份类型 | 备份频率 | 保留时间 |
|---|---|---|
| 全量备份 | 每周日 | 30天 |
| 增量备份 | 每天 | 7天 |
| 日志备份 | 每小时 | 14天 |
2.2 备份命令组合
shell
# 全量备份(每周日执行)
dmrman "BACKUP DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' FULL TO BACKUPSET '/opt/dmdbms/backup/full_backup_$(date +%Y%m%d)' COMPRESSED"
# 增量备份(每天执行)
dmrman "BACKUP DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' INCREMENT WITH BACKUPDIR '/opt/dmdbms/backup' TO BACKUPSET '/opt/dmdbms/backup/incremental_backup_$(date +%Y%m%d)' COMPRESSED"
# 日志备份(每小时执行)
dmrman "BACKUP ARCHIVELOG FROM DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' TO BACKUPSET '/opt/dmdbms/backup/log_backup_$(date +%Y%m%d%H)' COMPRESSED"3. 备份验证
3.1 定期检查备份完整性
shell
#!/bin/bash
# 配置参数
DM_HOME="/opt/dmdbms"
BACKUP_DIR="/opt/dmdbms/backup"
# 检查最近7天的备份集
for backup_set in $(find $BACKUP_DIR -name "*_backup_*" -type d -mtime -7); do
echo "检查备份集:$backup_set"
$DM_HOME/bin/dmrman "CHECK BACKUPSET '$backup_set'"
if [ $? -eq 0 ]; then
echo "备份集 $backup_set 完整性检查通过"
else
echo "备份集 $backup_set 完整性检查失败" >&2
fi
done3.2 定期测试恢复
shell
#!/bin/bash
# 测试恢复脚本,定期执行以验证备份可用性
# 配置参数
DM_HOME="/opt/dmdbms"
BACKUP_DIR="/opt/dmdbms/backup"
TEST_DB_DIR="/opt/dmdbms/test_db"
# 创建测试数据库目录
mkdir -p $TEST_DB_DIR
# 复制最近的全量备份到测试目录
latest_full_backup=$(ls -dt $BACKUP_DIR/full_backup_* | head -1)
cp -r $latest_full_backup $TEST_DB_DIR/
# 复制配置文件
cp $DM_HOME/data/DAMENG/dm.ini $TEST_DB_DIR/
cp $DM_HOME/data/DAMENG/dmarch.ini $TEST_DB_DIR/
# 修改配置文件中的路径
sed -i "s|/opt/dmdbms/data/DAMENG|$TEST_DB_DIR|g" $TEST_DB_DIR/dm.ini
# 执行测试恢复
$DM_HOME/bin/dmrman << EOF
RESTORE DATABASE '$TEST_DB_DIR/dm.ini' FROM BACKUPSET '$TEST_DB_DIR/$(basename $latest_full_backup)';
RECOVER DATABASE '$TEST_DB_DIR/dm.ini' UPDATE DB_MAGIC;
EXIT;
EOF
# 检查恢复结果
if [ $? -eq 0 ]; then
echo "测试恢复成功:$(date +%Y%m%d%H%M%S)"
else
echo "测试恢复失败:$(date +%Y%m%d%H%M%S)" >&2
fi
# 清理测试目录
rm -rf $TEST_DB_DIR常见问题(FAQ)
Q1: dmrman 无法连接到数据库怎么办?
A1: dmrman无法连接到数据库的可能原因:
- 数据库实例未启动
- 数据库配置文件路径错误
- 权限不足
- 数据库实例异常
解决方案:
- 检查数据库实例是否启动
- 验证数据库配置文件路径是否正确
- 检查执行dmrman的用户是否有足够权限
- 检查数据库实例状态
- 查看数据库日志,定位具体错误
Q2: 备份失败提示空间不足怎么办?
A2: 备份失败提示空间不足的解决方案:
- 检查备份目录所在磁盘的剩余空间
- 启用备份压缩,减少备份文件大小
- 增加备份磁盘空间
- 调整备份策略,减少备份保留时间
- 考虑使用增量备份替代全量备份
Q3: 如何提高备份速度?
A3: 提高备份速度的方法:
- 增加备份并行度
- 增大备份缓冲区大小
- 使用更快的存储设备
- 选择业务低峰期执行备份
- 考虑使用增量备份
- 确保备份存储与数据库存储分离
Q4: 如何加密备份数据?
A4: 加密备份数据的方法:
shell
# 使用dmrman加密备份
dmrman "BACKUP DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' FULL TO BACKUPSET '/opt/dmdbms/backup/encrypted_backup' COMPRESSED ENCRYPT WITH PASSWORD 'mypassword'"
# 使用SQL命令加密备份
BACKUP DATABASE FULL TO BACKUPSET '/opt/dmdbms/backup/encrypted_backup' COMPRESSED ENCRYPT WITH PASSWORD 'mypassword';Q5: 如何查看备份集的详细信息?
A5: 查看备份集详细信息的方法:
shell
# 使用dmrman查看备份集信息
dmrman "BACKUP LIST '/opt/dmdbms/backup/full_backup'"
# 查询系统视图查看备份信息
SELECT * FROM V$BACKUPSET;
SELECT * FROM V$BACKUPSET_DETAIL;Q6: 如何恢复加密备份?
A6: 恢复加密备份的方法:
shell
# 使用dmrman恢复加密备份
dmrman "RESTORE DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' FROM BACKUPSET '/opt/dmdbms/backup/encrypted_backup' DECRYPT WITH PASSWORD 'mypassword'"不同版本的差异
DM 7 vs DM 8
| 特性 | DM 7 | DM 8 |
|---|---|---|
| dmrman 功能 | 基本备份恢复功能 | 增强备份恢复功能,支持更多参数和选项 |
| dmbackup 功能 | 基本备份功能 | 增强备份功能,支持更多备份类型和选项 |
| SQL 备份命令 | 基本支持 | 增强支持,支持更多备份类型和选项 |
| 备份压缩 | 支持,压缩比一般 | 支持,优化压缩算法,压缩比更高 |
| 备份并行度 | 最高支持4 | 最高支持128 |
| 备份验证 | 基本验证 | 增强验证,自动检查备份完整性 |
| 备份速度 | 一般 | 优化,备份速度提升50%以上 |
| 恢复速度 | 一般 | 优化,恢复速度提升30%以上 |
DM 8.1 新特性
- 增强的dmrman功能,支持更多备份恢复选项
- 优化的备份压缩算法,压缩比提高20%
- 新增备份集加密功能,支持更强的加密算法
- 增强的备份验证功能,自动检查备份完整性
- 支持备份集的断点续传
- 提供更详细的备份进度显示
- 支持基于SCN的精确备份和恢复
