Skip to content

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
./dmrman

2.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.exe

2.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
fi

1.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
done

3.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无法连接到数据库的可能原因:

  • 数据库实例未启动
  • 数据库配置文件路径错误
  • 权限不足
  • 数据库实例异常

解决方案

  1. 检查数据库实例是否启动
  2. 验证数据库配置文件路径是否正确
  3. 检查执行dmrman的用户是否有足够权限
  4. 检查数据库实例状态
  5. 查看数据库日志,定位具体错误

Q2: 备份失败提示空间不足怎么办?

A2: 备份失败提示空间不足的解决方案:

  1. 检查备份目录所在磁盘的剩余空间
  2. 启用备份压缩,减少备份文件大小
  3. 增加备份磁盘空间
  4. 调整备份策略,减少备份保留时间
  5. 考虑使用增量备份替代全量备份

Q3: 如何提高备份速度?

A3: 提高备份速度的方法:

  1. 增加备份并行度
  2. 增大备份缓冲区大小
  3. 使用更快的存储设备
  4. 选择业务低峰期执行备份
  5. 考虑使用增量备份
  6. 确保备份存储与数据库存储分离

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 7DM 8
dmrman 功能基本备份恢复功能增强备份恢复功能,支持更多参数和选项
dmbackup 功能基本备份功能增强备份功能,支持更多备份类型和选项
SQL 备份命令基本支持增强支持,支持更多备份类型和选项
备份压缩支持,压缩比一般支持,优化压缩算法,压缩比更高
备份并行度最高支持4最高支持128
备份验证基本验证增强验证,自动检查备份完整性
备份速度一般优化,备份速度提升50%以上
恢复速度一般优化,恢复速度提升30%以上

DM 8.1 新特性

  • 增强的dmrman功能,支持更多备份恢复选项
  • 优化的备份压缩算法,压缩比提高20%
  • 新增备份集加密功能,支持更强的加密算法
  • 增强的备份验证功能,自动检查备份完整性
  • 支持备份集的断点续传
  • 提供更详细的备份进度显示
  • 支持基于SCN的精确备份和恢复