达梦数据库逻辑备份恢复

仅为个人学习记录

一、简述

1、DM 数据库的备份还原包括两种类型:物理备份还原和逻辑备份还原

2、物理备份还原

(1)对数据库的操作系统物理文件(如数据文件、控制文件和日志文件等)的备份还原

(2)数据库本身的backup命令,dmrman的backup&restore&recover命令

3、逻辑备份还原

(1)对数据库逻辑组件(如表、视图和存储过程等数据库对象)的备份还原

(2)dexp&dimp

(3)逻辑备份有物理备份所不具有的灵活性

二、dexp导出解析

1、基础参数

(1)USERID

用户连接参数

dexp USERID=SYSDBA/SYSDBA@127.0.0.1:5236 FILE=db_full.dmp LOG=db_full.log FULL=Y DIRECTORY=/mnt/data/dexp

userid=可省略,连接本地5236端口时,@127.0.0.1:5236可省略

连接密码中带有特殊字符 (/,@.:等, ), 需 要外加三层双引号("""""" )

如:sysdba/”””sys@dba”””

(2)FILE

导出的文件名,可以包含路径,默认名为dexp.dmp

  1. 如果 FILE 指定的文件包含生成路径,则忽略 DIRECTORY 中的路径 ;
  2. 如果 FILE 没有指定路径时,使用 DIRECTORY 中指定的路径 ;
  3. 如果 FILE 和 DIRECTORY 都没有指定路径,则使用系统当前路径。

(3)LOG

导出时的日志文件名,可以包含路径,默认名为dexp.log

  1. 如果 LOG 指定的文件包含生成路径,则忽略 DIRECTORY 中的路径 ;
  2. 如果 LOG 没有指定路径时,使用 DIRECTORY 中指定的路径 ;
  3. 如果 LOG 和 DIRECTORY 都没有指定路径,则使用系统当前路径。

(4) DIRECTORY

指定导出文件及日志文件生成的路径

2、导出级别参数

(1)full 全库导出

例:dexp USERID=SYSDBA/SYSDBA FILE=db_full.dmp LOG=db_full.log FULL=Y DIRECTORY=/mnt/data/dexp

(2)OWNER,用户导出

例:导出属于myuser1和myuser2用户的所有对象,一个用户可以拥有多个模式

dexp USERID=SYSDBA/SYSDBA FILE=db_full.dmp LOG=db_full.log OWNER=MYUSER1,MYUSER2  DIRECTORY=/mnt/data/dexp

(3)SCHEMAS,模式导出

例:导出属于myuser1和myuser2模式的所有对象

dexp USERID=SYSDBA/SYSDBA FILE=db_full.dmp LOG=db_full.log SCHEMAS=MYUSER1,MYUSER2  DIRECTORY=/mnt/data/dexp

(4)TABLES

导入一个或多个指定的表或表分区。导出所有数据行、约束、索引

dexp USERID=SYSDBA/SYSDBA FILE=db_full.dmp LOG=db_full.log TBLES=MYTAB1,MYTAB2  DIRECTORY=/mnt/data/dexp

3、其他参数

(1)EXCLUDE

设置导出时忽略的对象种类

语法:

  1. EXCLUDE=(<对象种类名>{,<对象种类名>})
  2. EXCLUDE=TABLES:<表名>{,<表名>}
  3. EXCLUDE=SCHEMAS:<模式名>{,<模式名>}

<对象种类名>:包括 CONSTRAINTS、INDEXES、ROWS、TRIGGERS、GRANTS。

(2)INCLUDE

设置导出时包含的对象种类

语法

  1. INCLUDE=(<对象种类名>{,<对象种类名>})
  2. INCLUDE=TABLES:<表名>{,<表名>}

(3)单独设置对象种类

和EXCLUDE INCLUDE一样作用,选其一就可以

  1. CONSTRAINTS=N:设置不导出约束。可选参数。缺省该参数为 Y,导出约束。
  2. TABLESPACE=Y:设置导出的对象定义中包含表空间。可选参数。缺省该参数为 N,不包含表空间。
  3. GRANTS=N:设置不导出权限。可选参数。缺省该参数为 Y,导出权限。
  4. INDEXES=N:设置不导出索引。可选参数。缺省该参数为 Y,导出索引。
  5. TRIGGERS=N:设置不导出触发器。可选参数。缺省该参数为 Y,导出触发器。
  6. ROWS=N:设置不导出数据。可选参数。缺省该参数为 Y,导出数据。

(4)PARFILE

PARFILE用于将常用的参数设置保存到文件中,然后使用参数文件PARFILE进行导出、导入操作。

PARFILE=<path>

parfile内容格式例:

FILE=db_exp.dmp

LOG=db_exp.log

TABLES=table1

DIRECTORY=/mnt/data/dexp

(5)COMPRESS

是否压缩,缺省不压缩

(6)QUERY

指定过滤条件来对表数据进行导出

例:dexp USERID=SYSDBA/SYSDBA FILE=db_exp.dmp LOG=db_exp.log TABLES=OTHER.READER QUERY="WHERE AGE=19"

(7)FUZZY_MATCH

指定 TABLES 选项是否支持模糊匹配,缺省为N

例:dexp USERID=SYSDBA/SYSDBA FILE=db_exp.dmp LOG=db_exp.log TABLES=OTHER.R% FUZZY_MATCH=Y

(8)PARALLEL

指定导出的过程中所使用的线程数目

PARALLEL=<num>,缺省为1,范围时1-100;

三、dimp导出解析

多数参考dexp参数即可

1、常用参数

(1)TABLE_EXISTS_ACTION

要导入的表已经存在时的处理方式,默认直接报错

TABLE_EXISTS_ACTION=[SKIP | APPEND | TRUNCATE | REPLACE]

  1. SKIP:跳过此表。
  2. APPEND:直接向现有表中导入数据
  3. TRUNCATE:先删除现有表中的数据,再向表中导入数据
  4. REPLACE:先删除现有表,再导数据

(2)REMAP_SCHEMA

将源模式中的数据导入到目标模式中

REMAP_SCHEMA=SRC_SCHEMA:DEST_SCHEMA

  1. <SRC_SCHEMA>:源模式。如果指定的源模式不存在,则导入到对象原来所在的模式。
  2. <DEST_SCHEMA>:目标模式。如果目标模式不存在,先创建目标模式,再继续导入。

四、dexp&dimp应用举例

1、并行导出test用户下所有数据并压缩

dexp USERID=SYSDBA/SYSDBA FILE=db_full.dmp LOG=db_full.log OWNER=test   parallel=20 compress=Y DIRECTORY=/mnt/data/dexp

2、导入

dimp USERID=SYSDBA/SYSDBA FILE=db_full.dmp LOG=db_full_imp.log OWNER=test   parallel=20 DIRECTORY=/mnt/data/dexp

达梦数据库 - 新一代大型通用关系型数据库 | 达梦云适配中心达梦数据库产品体验站,DM8在线试玩,达梦数据库全系列产品免费下载,官方权威的快速上手文档和产品手册,最活跃的达梦技术社区,面向全行业ISV厂商免费的云适配服务。icon-default.png?t=LA92https://eco.dameng.com/

### 达梦数据库在Linux环境下的备份恢复测试 #### 准备工作 为了确保能够顺利进行达梦数据库备份恢复操作,需提前准备如下事项: - **安装必要的工具**:确认已安装`tar`用于打包压缩文件以及`gzip`用于解压`.gz`格式文件。这些命令通常默认存在于大多数Linux发行版中[^1]。 - **配置定时任务**:利用`cron`服务来设置定期执行备份的任务计划。编辑用户的crontab文件可以实现这一点,通过运行`crontab -e`进入编辑模式并添加相应的调度指令。 #### 创建备份脚本 编写Shell脚本来自动化整个备份流程是非常有效的做法。下面是一个简单的例子展示如何创建每日一次按照日期命名的备份,并将其压缩成`.tar.gz`格式存档,同时只保存最近30天内的备份副本以节约磁盘空间。 ```bash #!/bin/bash # 设置变量 DM_HOME=/opt/dmdbms # 达梦数据库安装路径 BACKUP_DIR=/backup/db # 备份存储位置 DATE=$(date +%Y%m%d) # 获取当前日期作为文件名的一部分 FILENAME=dm_backup_$DATE.tar.gz LOGFILE=$BACKUP_DIR/backup.log # 执行备份命令并将输出重定向到日志文件 $DM_HOME/bin/dm_rman backup database to $BACKUP_DIR/$FILENAME >> $LOGFILE 2>&1 # 清理旧于30天前的日志备份文件 find $BACKUP_DIR/* -mtime +30 -exec rm {} \; ``` 此段代码实现了基本功能需求,但实际应用时可能还需要根据具体情况进行调整优化,比如增加错误处理机制等额外特性。 #### 数据库恢复过程 当需要从之前制作好的备份恢复数据时,则要遵循特定步骤来进行完整的还原操作。这里假设已经有一个名为`dm_backup_20230701.tar.gz`的有效备份文件存在。 1. 解压备份包至临时目录: ```bash cd /tmp && tar zxvf /path/to/dm_backup_20230701.tar.gz ``` 2. 使用RMAN工具加载备份集中的内容回到目标实例里去: ```sql connect target / restore controlfile from '/tmp/control_file.bak'; recover database using backup controlfile until cancel; alter database open resetlogs; ``` 上述SQL语句序列适用于基于控制文件的场景;对于其他类型的备份方式(如表级逻辑备份),则应采用不同的策略[^2]。 #### 测试验证 完成以上所有步骤之后,应当仔细检查新导入的数据是否完好无损,可以通过查询一些关键表格的内容或者对比前后版本之间的差异等方式来进行最终的质量检验[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值