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

相关推荐
云和数据.ChenGuang4 小时前
Django 应用安装脚本 – 如何将应用添加到 INSTALLED_APPS 设置中 原创
数据库·django·sqlite
woshilys4 小时前
sql server 查询对象的修改时间
运维·数据库·sqlserver
Hacker_LaoYi5 小时前
SQL注入的那些面试题总结
数据库·sql
建投数据5 小时前
建投数据与腾讯云数据库TDSQL完成产品兼容性互认证
数据库·腾讯云
Hacker_LaoYi6 小时前
【渗透技术总结】SQL手工注入总结
数据库·sql
岁月变迁呀7 小时前
Redis梳理
数据库·redis·缓存
独行soc7 小时前
#渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍06-基于子查询的SQL注入(Subquery-Based SQL Injection)
数据库·sql·安全·web安全·漏洞挖掘·hw
你的微笑,乱了夏天7 小时前
linux centos 7 安装 mongodb7
数据库·mongodb
工业甲酰苯胺7 小时前
分布式系统架构:服务容错
数据库·架构
独行soc8 小时前
#渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍08-基于时间延迟的SQL注入(Time-Based SQL Injection)
数据库·sql·安全·渗透测试·漏洞挖掘