一、环境
①、操作系统环境为Red Hat Enterprise Linux 8.5
②、数据库版本为达梦V8企业版
二、使用场景描述
①、异构数据库测试迁移后,想保留表结构,只将正式库数据库做迁移的;
②、测试环境对表结构做了大量调整,想保留表结构应用到其他项目。
三、实验演示
1、逻辑备份说明
dexp 工具可以对本地或者远程数据库进行数据库级、用户级、模式级和表级的逻辑备
份。备份的内容非常灵活,,在备份前还可以选择生成日志文件,记录备份的过程以供
查看。
2、查看数据库服务,准备测试用户及数据
[root@localhost ~]# su - dmdba
上一次登录:三 4月 20 00:55:29 CST 2022pts/0 上
[dmdba@localhost ~]$ ps -ef|grep dms
dmdba 990 1 0 00:54 ? 00:00:07 /dm8/bin/dmserver path=/dm8/data/DAMENG/dm.ini -noconsole
dmdba 1449 1423 0 01:20 pts/0 00:00:00 grep --color=auto dms
[dmdba@localhost ~]$
①、登录disql,新建测试数据
[dmdba@localhost bin]$ ./disql
disql V8
用户名:
密码:
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 2.651(ms)
SQL> CREATE TABLE TEST.T1(ID INT,NAME VARCHAR(20));
操作已执行
已用时间: 8.382(毫秒). 执行号:2200.
SQL> SELECT * FROM TEST.T1;
未选定行
已用时间: 1.159(毫秒). 执行号:2201.
②、使用循环插入测试数据,一共插入50条数据
SQL> BEGIN
FOR I IN 1..50
LOOP
INSERT INTO TEST.T1 VALUES(I,'AAA'||I);
COMMIT;
END LOOP;
END;
/2 3 4 5 6 7 8
DMSQL 过程已成功完成
已用时间: 51.257(毫秒). 执行号:2202.
SQL> SELECT * FROM TEST.T1;
行号 ID NAME
---------- ----------- -----
1 1 AAA1
2 2 AAA2
3 3 AAA3
4 4 AAA4
5 5 AAA5
6 6 AAA6
7 7 AAA7
8 8 AAA8
9 9 AAA9
10 10 AAA10
11 11 AAA11
...
行号 ID NAME
---------- ----------- -----
45 45 AAA45
46 46 AAA46
47 47 AAA47
48 48 AAA48
49 49 AAA49
50 50 AAA50
3、备份TEST用户下的所有数据(用户级别的备份)
[dmdba@localhost bin]$ ./dexp TEST/dameng123@127.0.0.1:5236 FILE=/dm8/TEST.dmp OWNER=TEST
dexp V8
正在导出 第1 个SCHEMA :TEST
开始导出模式[TEST].....
表T1导出结束,共导出 50 行数据
模式[TEST]导出结束.....
成功导出 第1 个SCHEMA :TEST
共导出 1 个SCHEMA
整个导出过程共花费 0.235 s
成功终止导出, 没有出现警告
4、备份TEST用户下的所有表结构(用户级别的备份),添加导出参数EXCLUDE,导出内容中忽略指定的对象。对象有CONSTRAINTS、INDEXES、ROWS、TRIGGERS 和GRANTS。
比如:EXCLUDE= (CONSTRAINTS,INDEXES)
[dmdba@localhost bin]$ ./dexp TEST/dameng123@127.0.0.1:5236 FILE=/dm8/TEST001.dmp OWNER=TEST EXCLUDE= (ROWS)
-bash: 未预期的符号 `(' 附近有语法错误
[dmdba@localhost bin]$
**出现报错,原因:linux无法直接识别括号,需要转义**
[dmdba@localhost bin]$ ./dexp TEST/dameng123@127.0.0.1:5236 FILE=/dm8/TEST001.dmp OWNER=TEST EXCLUDE=\(ROWS\)
dexp V8
正在导出 第1 个SCHEMA :TEST
开始导出模式[TEST].....
模式[TEST]导出结束.....
成功导出 第1 个SCHEMA :TEST
共导出 1 个SCHEMA
整个导出过程共花费 0.043 s
成功终止导出, 没有出现警告
5、删除TEST用户下的T1表,还原备份的表结构
SQL> SELECT COUNT(*) FROM TEST.T1;
行号 COUNT(*)
---------- --------------------
1 50
已用时间: 0.458(毫秒). 执行号:2601.
SQL> DROP TABLE TEST.T1;
操作已执行
已用时间: 28.884(毫秒). 执行号:2602.
SQL> SELECT COUNT(*) FROM TEST.T1;
SELECT COUNT(*) FROM TEST.T1;
第1 行附近出现错误[-2106]:无效的表或视图名[T1].
已用时间: 0.575(毫秒). 执行号:0.
①、T1表已经被删除,现在还原表结构
[dmdba@localhost bin]$ ./dimp TEST/dameng123@127.0.0.1:5236 FILE=/dm8/TEST001.dmp OWNER=TEST
dimp V8
本地编码:PG_UTF8, 导入文件编码:PG_GB18030
开始导入模式[TEST]......
导入模式中的 NECESSARY GLOBAL 对象……
模式中的 NECESSARY GLOBAL 对象导入完成……
----- [2022-04-20 01:41:57]导入表:T1 -----
创建表 T1 ...
表 T1 的数据导入完成,共导入数据:0 行
导入模式中的 GLOBAL 对象……
模式中的 GLOBAL 对象导入完成……
模式[TEST]导入完成......
整个导入过程共花费 0.023 s
成功终止导入, 没有出现警告
[dmdba@localhost bin]$
②、查询还原的表T1
[dmdba@localhost bin]$ ./disql
disql V8
用户名:
密码:
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 2.997(ms)
SQL> SELECT * FROM TEST.T1;
*未选定行*
已用时间: 1.716(毫秒). 执行号:3000.
只有表结构,并无数据。
至此,数据库用户级整库备份数据库表结构结束。
更多资讯请上达梦技术社区了解:https://eco.dameng.com