达梦逻辑备份dexp和恢复dimp

逻辑备份是指利用 dexp/dexpdp 导出工具,将指定对象(库级、模式级、表级)的数据导出到文件的备份方式。逻辑备份针对的是数据内容,并不关心这些数据物理存储在什么位置。

逻辑导出和逻辑导入数据库对象分为四种级别:数据库级、用户级、模式级和表级。四种级别独立互斥,不能同时存在。四种级别所提供的功能:

  1. 数据库级(FULL): 导出或导入整个数据库中的所有对象。
  2. 用户级(OWNER): 导出或导入一个或多个用户所拥有的所有对象。
  3. 模式级(SCHEMAS):导出或导入一个或多个模式下的所有对象。
  4. 表级(TABLES): 导出或导入一个或多个指定的表或表分区。

达梦数据库SYS用户不能用于用户登录,是系统内置用户。

系统模式有:CTISYS,SYS,SYSAUDITOR,SYSDBA,SYSSSO。创建代理环境后会自动创建SYSJOB模式,安装DEM后会自动创建DEM模式。

在全库导出时,系统模式除了SYSDBA,其他模式都默认不导出,可以指定SCHEMAS参数导出,但不是模式下所有对象都会被导出。其中SYS,SYSJOB模式为内部模式,无法导入导出。

1. 导出全库

导出全库并不会导出所有基表

bash 复制代码
dexp SYSDBA/SYSDBA@127.0.0.1:5236 FILE=/home/dmdba/fullbak.dmp log=/home/dmdba/fullbak.log FULL=Y

USERID参数可以省略

DIRECTORY参数可以省略,直接把导出文件的目录写在FILE参数中

2. 导出用户

导出用户会包含该用户下所有schema

若不指定OWNER,则默认导出当前导出用户同名的schema

bash 复制代码
dexp SYSDBA/SYSDBA@127.0.0.1:5236 OWNER=test1,test2 FILE=/home/dmdba/utest.dmp log=/home/dmdba/utest.log

tips!!!

OWNER参数中写了多个用户且有的用户不存在,在某些版本中,dmp日志不会有告警提示。

3.导出模式

bash 复制代码
dexp SYSDBA/SYSDBA@127.0.0.1:5236 SCHEMAS=test1,test2 FILE=/home/dmdba/stest.dmp log=/home/dmdba/stest.log

4. 导出表

bash 复制代码
#若TABLES参数中没有指定表的schema,则默认表属于当前导出用户同名的schema下
dexp SYSDBA/SYSDBA@127.0.0.1:5236 TABLES=RESOURCES.EMPLOYEE,RESOURCES.DEPARTMENT FILE=/home/dmdba/resources.dmp log=/home/dmdba/resources.log

#模糊匹配
dexp SYSDBA/SYSDBA@127.0.0.1:5236 TABLES=RESOURCES.EMP%,PERSON.PER% FUZZY_MATCH=Y FILE=/home/dmdba/ttest.dmp log=/home/dmdba/ttest.log

#使用include方式做模糊匹配
#不管是写多个INCLUDE参数,还是在INCLUDE参数中写多个like,都会被转and条件
dexp SYSDBA/SYSDBA@127.0.0.1:5236 SCHEMAS=RESOURCES INCLUDE="TABLES:\"LIKE '%D%'\"" FILE=/home/dmdba/ttest.dmp log=/home/dmdba/ttest.log 
dexp SYSDBA/SYSDBA@127.0.0.1:5236 SCHEMAS=RESOURCES INCLUDE="TABLES:\"LIKE '%D%'\",TABLES:\"LIKE '%T%'\"" FILE=/home/dmdba/ttest.dmp log=/home/dmdba/ttest.log

#使用子查询匹配表名
dexp SYSDBA/SYSDBA@127.0.0.1:5236 SCHEMAS=RESOURCES INCLUDE="TABLES:\"IN (SELECT TABLE_NAME FROM ALL_TABLES WHERE OWNER= 'RESOURCES' AND (TABLE_NAME LIKE 'D%' OR TABLE_NAME LIKE 'E%'))\"" FILE=/home/dmdba/ttest.dmp log=/home/dmdba/ttest.log

#排除指定表并且不导出约束
dexp SYSDBA/SYSDBA@127.0.0.1:5236 SCHEMAS=RESOURCES EXCLUDE="TABLES:\"IN (SELECT TABLE_NAME FROM ALL_TABLES WHERE OWNER= 'RESOURCES' AND (TABLE_NAME LIKE 'D%'))\",TABLES:\"LIKE '%T%'\"",CONSTRAINTS FILE=/home/dmdba/ttest.dmp log=/home/dmdba/ttest.log

5. 并行和压缩

如果CPU核数为N的话,那一般来说PARALLEL为N或者N+1最合适。实测开启并性不会创建多个文件,并行开启后,导出速度会快一倍左右,表并行开启后速度没有明显快。

数据压缩等级 (0-9 默认1),压缩等级越高,压缩比越高。

bash 复制代码
dexp SYSDBA/SYSDBA@127.0.0.1:5236 SCHEMAS=RESOURCES COMPRESS=Y COMPRESS_LEVEL=1 PARALLEL=4 FILE=/home/dmdba/stest.dmp log=/home/dmdba/stest.log

6. 导入数据

不管以什么级别方式导出,导入时,dmp文件中所有表的所属用户在目标库中必须提前创建

bash 复制代码
dimp SYSDBA/SYSDBA@127.0.0.1:5236 FILE=/home/dmdba/utest.dmp LOG=imp_utest.log

如果导出时没有指定TABLESPACE=Y,导入时,表会创建在目标库对应用户的默认表空间下,REMAP_TABLESPACE参数是不生效的。

如果导出时指定了TABLESPACE=Y,导入时,对应的表空间必须提前创建,否则报错,也可以使用REMAP_TABLESPACE参数。

bash 复制代码
dimp SYSDBA/SYSDBA@127.0.0.1:5236 FILE=/home/dmdba/utest.dmp LOG=imp_utest.log remap_tablespace=TBS_TEST:MAIN

7. 关于dexpdp/dimpdp

dexpdp/dimpdp与dexp/dimp语法相同

使用dexp导出时,导出的文件会在当前执行导出命令的环境的指定目录下,而dexpdp的导出文件会在指定的数据库服务器上

8. 定时备份脚本

PATH是系统环境变量的路径,不可随便更改,可以在后面添加自己的路径,否则会有command not find的错误

bash 复制代码
[dmdba@localhost ~]$ cat dexp_utest.sh 
#!/bin/sh
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/opt/dmdbms/bin"
export DM_HOME="/opt/dmdbms"
export PATH=$PATH:$HOME/.local/bin:$HOME/bin:$DM_HOME/bin:$DM_HOME/tool

FILE_PATH="/home/dmdba/"
EXP_FILE="utest_`date +%Y%m%d%H%M%S`.dmp"
LOG_FILE="${EXP_FILE}.log"
cd $FILE_PATH
find $FILE_PATH -mtime +7 -name "utest_*" -exec rm -f {} \;

dexp SYSDBA/SYSDBA@127.0.0.1:5236 OWNER=test FILE=$FILE_PATH$EXP_FILE LOG=$FILE_PATH$LOG_FILE TABLESPACE=Y

允许dmdba用户使用crontab程序

bash 复制代码
[root@localhost ~]# cat /etc/cron.allow
dmdba

配置定时任务

bash 复制代码
[root@localhost ~]# crontab -l -u dmdba
0 2 * * * /home/dmdba/dexp_utest.sh &>/dev/null

达梦社区地址
https://eco.dameng.com

相关推荐
山峰哥9 分钟前
造价算量系统SQL优化,慢查询从9秒压到35毫秒‌
大数据·数据库·sql·编辑器·深度优先
AC赳赳老秦21 分钟前
电力能源公开数据采集实操:用 OpenClaw 合规抓取电网电价与发电量数据,生成区域能源供需分析报告
大数据·数据库·人工智能·python·php·deepseek·openclaw
Discipline~Hai1 小时前
Linux网络编程05-sqlite3数据库
linux·c语言·网络·数据库·sqlite·linux应用软件编程
青禾8371 小时前
一文入门 MySQL + MongoDB + Redis:三大数据库核心知识
数据库·mysql·mongodb
努力努力再努力wz1 小时前
【Redis入门系列】:从 RESP 协议到 redis-plus-plus:Redis 客户端编程与 C++ 接口设计
开发语言·数据库·c++·redis·分布式·缓存·架构
志栋智能1 小时前
凌晨3点的告警,如何用AI在5分钟内完成定界?
运维·服务器·数据库·人工智能·自动化
G.E.M.小白1 小时前
【SQLite3 数据库】从安装、SQL 操作到 C/C++ API 实战
数据库·oracle·sqlite3
神明不懂浪漫1 小时前
【第一章】MySQL简介
数据库·经验分享·笔记·mysql·oracle
山岚的运维笔记2 小时前
mysql 专业笔记 -- 第 14 章:GROUP BY
运维·数据库·笔记·后端·学习·mysql·dba
zcn1262 小时前
不同列or运算优化经验
数据库·sql优化改写