达梦逻辑备份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

相关推荐
doubt。28 分钟前
【BUUCTF】[RCTF2015]EasySQL1
网络·数据库·笔记·mysql·安全·web安全
Maybe_ch1 小时前
群晖部署-Calibreweb
数据库·群晖·nas
小辛学西嘎嘎1 小时前
MVCC在MySQL中实现无锁的原理
数据库·mysql
CC呢1 小时前
基于STM32单片机火灾安全监测一氧化碳火灾
数据库·mongodb
MasterNeverDown2 小时前
解决 PostgreSQL 中创建 TimescaleDB 扩展的字符串错误
数据库·postgresql·oracle
limts2 小时前
Oracle之开窗函数使用
数据库·oracle
拾荒的小海螺4 小时前
JAVA:Spring WebClient 的应用指南
java·数据库·spring
LuckyRich14 小时前
2024年博客之星主题创作|2024年度感想与新技术Redis学习
数据库·redis·缓存
重整旗鼓~4 小时前
4.flask-SQLAlchemy,表Model定义、增删查改操作
数据库·python·flask
PGCCC5 小时前
【PGCCC】PostgreSQL 中表级锁的剖析
数据库·postgresql·区块链