目录
[3.1.2. 按用户导出](#3.1.2. 按用户导出)
[3.1.3. 按表导出](#3.1.3. 按表导出)
[3.2.1. 准备导入测试环境](#3.2.1. 准备导入测试环境)
[3.2.2. 按表导入 (TABLES)](#3.2.2. 按表导入 (TABLES))
[3.2.3. 导入用户数据](#3.2.3. 导入用户数据)
[3.2.4. 导入全库备份](#3.2.4. 导入全库备份)
一、准备实验环境(测试库)
1.1.挂载新磁盘
首先需要将新添加的块盘挂载到系统的一个目录下。
首先,在原先部署单机部署达梦数据库的虚拟机的基础上,新增一块盘,用于创建一个新的实例,作为导入的测试空间

查看新磁盘 :使用 fdisk -l 或 lsblk 命令确认新磁盘的设备名称,例如 /dev/sdb。

分区和格式化:
1. 对新磁盘进行分区(可选,也可以直接使用整个磁盘)
fdisk /dev/sdc # 在 fdisk 交互界面中,依次输入 n, p, 1 回车回车, w 保存退出

2. 将分区(或整个磁盘)格式化为文件系统,例如 ext4
mkfs.ext4 /dev/sdb1

创建挂载点并挂载:
1. 创建一个目录作为挂载点,例如 /dmdata2
mkdir -p /dmdata2
2. 挂载磁盘到该目录
mount /dev/sdc1 /dmdata2
设置开机自动挂载:
编辑 /etc/fstab 文件,在末尾添加一行,防止重启后挂载丢失。
echo '/dev/sdc1 /dmdata2 ext4 defaults 0 0' >> /etc/fstab
bash
[root@localhost ~]# # 1. 创建一个目录作为挂载点,例如 /dmdata2
[root@localhost ~]# mkdir -p /dmdata2
[root@localhost ~]#
[root@localhost ~]# # 2. 挂载磁盘到该目录
[root@localhost ~]# mount /dev/sdc1 /dmdata2
[root@localhost ~]#
[root@localhost ~]# echo '/dev/sdc1 /dmdata2 ext4 defaults 0 0' >> /etc/fstab
[root@localhost ~]#
[root@localhost ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Fri May 16 18:19:17 2025
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root / xfs defaults 0 0
UUID=f5c128eb-513e-47c6-a725-564c557e05af /boot xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
/dev/sdb1 /history_data xfs defaults 0 0
# UUID=a927f23c-f9bc-4b2e-8e2e-d369e8f9b176 /history_data xfs defaults 0 0
/dev/sdc1 /dmdata2 ext4 defaults 0 0
[root@localhost ~]#
[root@localhost ~]# mount -a
赋权:

1.2.创建数据库
挂载好磁盘后,就可以使用达梦的 dminit 工具在这个新目录下初始化第二个数据库了。
切换到 dmdba 用户:
su - dmdba
执行dminit命令
cd /home/dmdba/dmdbms/bin
./dminit PATH=/dmdata2/data DB_NAME=IMPORT_DB INSTANCE_NAME=IMPORT_SVR PORT_NUM=8889 SYSDBA_PWD=Dameng123 SYSAUDITOR_PWD=Dameng123
-
PATH:指向你新挂载的磁盘目录。dminit 会在该路径下自动创建数据库文件。 -
PORT_NUM:指定为8889。

1.3.注册系统服务
为了便于管理(开机自启、使用 systemctl 命令),需要将新实例注册为操作系统服务。
切换到 root 用户:
exit # 退出 dmdba 用户,回到 root
执行服务注册脚本:
cd /home/dmdba/dmdbms/script/root
./dm_service_installer.sh -t dmserver -p IMPORT -dm_ini /dmdata2/data/IMPORT_DB/dm.ini
-
-p IMPORT:指定服务的后缀名,生成的服务名将是DmServiceIMPORT。 -
-dm_ini:必须指定为你刚在新磁盘上创建的实例的dm.ini文件路径。

注册成功后,你就可以通过以下命令来管理这个新的数据库实例了:
systemctl start DmServiceIMPORT # 启动
systemctl stop DmServiceIMPORT # 停止
systemctl status DmServiceIMPORT # 查看状态
至此,我们当前的服务器中存在两个独立的实例
二、创建测试数据
2.1.登录数据库


2.2.创建测试用户和表空间
-- 创建测试表空间
CREATE TABLESPACE TEST_DATA DATAFILE '/dmdata2/data/IMPORT_DB/TEST_DATA01.DBF' SIZE 100M;

-- 创建测试用户
CREATE USER TEST IDENTIFIED BY "Test123!!" DEFAULT TABLESPACE TEST_DATA;

-- 授予权限
GRANT DBA TO TEST;
GRANT RESOURCE TO TEST;

2.3.切换到测试用户
CONN TEST/"Test123!!"@localhost:8889;

2.4.创建测试表
bash
-- 创建部门表
CREATE TABLE DEPT (
DEPTNO INT PRIMARY KEY,
DNAME VARCHAR(50),
LOC VARCHAR(50)
);
-- 创建员工表
CREATE TABLE EMP (
EMPNO INT PRIMARY KEY,
ENAME VARCHAR(50),
JOB VARCHAR(50),
MGR INT,
HIREDATE DATE,
SAL DECIMAL(10,2),
COMM DECIMAL(10,2),
DEPTNO INT
);
-- 创建产品表(用于测试大表)
CREATE TABLE PRODUCT (
PROD_ID INT PRIMARY KEY,
PROD_NAME VARCHAR(100),
CATEGORY VARCHAR(50),
PRICE DECIMAL(10,2),
STOCK INT
);

2.5.插入测试数据
bash
-- 插入部门数据
INSERT INTO DEPT VALUES (10, 'ACCOUNTING', 'NEW YORK');
INSERT INTO DEPT VALUES (20, 'RESEARCH', 'DALLAS');
INSERT INTO DEPT VALUES (30, 'SALES', 'CHICAGO');
INSERT INTO DEPT VALUES (40, 'OPERATIONS', 'BOSTON');
COMMIT;
-- 插入员工数据
INSERT INTO EMP VALUES (7369, 'SMITH', 'CLERK', 7902, '1980-12-17', 800, NULL, 20);
INSERT INTO EMP VALUES (7499, 'ALLEN', 'SALESMAN', 7698, '1981-02-20', 1600, 300, 30);
INSERT INTO EMP VALUES (7521, 'WARD', 'SALESMAN', 7698, '1981-02-22', 1250, 500, 30);
INSERT INTO EMP VALUES (7566, 'JONES', 'MANAGER', 7839, '1981-04-02', 2975, NULL, 20);
INSERT INTO EMP VALUES (7654, 'MARTIN', 'SALESMAN', 7698, '1981-09-28', 1250, 1400, 30);
INSERT INTO EMP VALUES (7698, 'BLAKE', 'MANAGER', 7839, '1981-05-01', 2850, NULL, 30);
INSERT INTO EMP VALUES (7782, 'CLARK', 'MANAGER', 7839, '1981-06-09', 2450, NULL, 10);
INSERT INTO EMP VALUES (7788, 'SCOTT', 'ANALYST', 7566, '1982-12-09', 3000, NULL, 20);
INSERT INTO EMP VALUES (7839, 'KING', 'PRESIDENT', NULL, '1981-11-17', 5000, NULL, 10);
INSERT INTO EMP VALUES (7844, 'TURNER', 'SALESMAN', 7698, '1981-09-08', 1500, 0, 30);
INSERT INTO EMP VALUES (7876, 'ADAMS', 'CLERK', 7788, '1983-01-12', 1100, NULL, 20);
INSERT INTO EMP VALUES (7900, 'JAMES', 'CLERK', 7698, '1981-12-03', 950, NULL, 30);
INSERT INTO EMP VALUES (7902, 'FORD', 'ANALYST', 7566, '1981-12-03', 3000, NULL, 20);
INSERT INTO EMP VALUES (7934, 'MILLER', 'CLERK', 7782, '1982-01-23', 1300, NULL, 10);
COMMIT;
-- 插入产品数据(批量生成测试数据)
BEGIN
FOR i IN 1..10000 LOOP
INSERT INTO PRODUCT VALUES (i, 'Product_' || i, 'Category_' || MOD(i, 10), ROUND(DBMS_RANDOM.VALUE(10, 1000), 2), TRUNC(DBMS_RANDOM.VALUE(0, 1000)));
IF MOD(i, 1000) = 0 THEN
COMMIT;
END IF;
END LOOP;
COMMIT;
END;
/

2.6.验证数据
bash
-- 统计各表数据量
SELECT 'DEPT' AS TABLE_NAME, COUNT(*) AS ROWS FROM DEPT
UNION ALL
SELECT 'EMP', COUNT(*) FROM EMP
UNION ALL
SELECT 'PRODUCT', COUNT(*) FROM PRODUCT;
-- 查看示例数据
SELECT * FROM DEPT;
SELECT * FROM EMP WHERE ROWNUM <= 5;
SELECT * FROM PRODUCT WHERE ROWNUM <= 5;


三、做导出导入测试实验
注意:先赋权,前面搞忘记!

3.1.导出实验 (dexp)
3.1.1.全库导出
退出 disql,回到 shell
exit
全库导出
cd /home/dmdba/dmdbms/bin
./dexp SYSDBA/Dameng123@localhost:8889 FILE=/dmdata2/backup/full_export.dmp LOG=/dmdata2/backup/full_export.log FULL=Y
bash
[dmdba@localhost bin]$ ./dexp SYSDBA/Dameng123@localhost:8889 FILE=/dmdata2/backup/full_export.dmp LOG=/dmdata2/backup/full_export.log FULL=Y
dexp V8
version: 03134284336-20250117-257733-20132
start dexp:
SYSDBA/******@localhost:8889 FILE=/dmdata2/backup/full_export.dmp LOG=/dmdata2/backup/full_export.log FULL=Y
导出对象类型:SYSPACKAGE_DEF
共导出 2 个SYSPACKAGE_DEF
导出对象类型:USER
共导出 1 个USER
导出对象类型:SYSTEM_PRIVILEGE
共导出 1 个SYSTEM_PRIVILEGE
导出对象类型:SYS_ROLE_PRIVILEGE_TO_USER
共导出 3 个SYS_ROLE_PRIVILEGE_TO_USER
正在导出 第1 个SCHEMA :SYSDBA
开始导出模式[SYSDBA].....
模式[SYSDBA]导出结束.....
成功导出 第1 个SCHEMA :SYSDBA
正在导出 第2 个SCHEMA :TEST
开始导出模式[TEST].....
----- [2026-04-17 05:34:39]导出表:TEST.DEPT -----
----- [2026-04-17 05:34:39]导出表:TEST.EMP -----
----- [2026-04-17 05:34:39]导出表:TEST.PRODUCT -----
表TEST.DEPT导出结束,共导出 4 行数据, 大小 0.090 KB
表TEST.EMP导出结束,共导出 14 行数据, 大小 0.659 KB
表TEST.PRODUCT导出结束,共导出 10000 行数据, 大小 434.261 KB
共导出 3 个TABLE
模式[TEST]导出结束.....
成功导出 第2 个SCHEMA :TEST
共导出 2 个SCHEMA
整个导出过程共花费 0.441 s
成功终止导出, 没有出现警告
[dmdba@localhost bin]$

3.1.2. 按用户导出
只导出 TEST 用户
./dexp SYSDBA/Dameng123@localhost:8889 FILE=/dmdata2/backup/test_user.dmp LOG=/dmdata2/backup/test_user.log OWNER=TEST
bash
[dmdba@localhost bin]$ ./dexp SYSDBA/Dameng123@localhost:8889 FILE=/dmdata2/backup/test_user.dmp LOG=/dmdata2/backup/test_user.log OWNER=TEST
dexp V8
version: 03134284336-20250117-257733-20132
start dexp:
SYSDBA/******@localhost:8889 FILE=/dmdata2/backup/test_user.dmp LOG=/dmdata2/backup/test_user.log OWNER=TEST
导出对象类型:USER
共导出 1 个USER
导出对象类型:SYSTEM_PRIVILEGE
共导出 1 个SYSTEM_PRIVILEGE
导出对象类型:SYS_ROLE_PRIVILEGE_TO_USER
共导出 3 个SYS_ROLE_PRIVILEGE_TO_USER
正在导出 第1 个SCHEMA :TEST
开始导出模式[TEST].....
----- [2026-04-17 05:38:05]导出表:TEST.DEPT -----
----- [2026-04-17 05:38:05]导出表:TEST.EMP -----
----- [2026-04-17 05:38:05]导出表:TEST.PRODUCT -----
表TEST.DEPT导出结束,共导出 4 行数据, 大小 0.090 KB
表TEST.EMP导出结束,共导出 14 行数据, 大小 0.659 KB
表TEST.PRODUCT导出结束,共导出 10000 行数据, 大小 434.261 KB
共导出 3 个TABLE
模式[TEST]导出结束.....
成功导出 第1 个SCHEMA :TEST
共导出 1 个SCHEMA
整个导出过程共花费 0.268 s
成功终止导出, 没有出现警告
[dmdba@localhost bin]$

3.1.3. 按表导出
导出指定表
./dexp SYSDBA/Dameng123@localhost:8889 FILE=/dmdata2/backup/emp_dept.dmp LOG=/dmdata2/backup/emp_dept.log TABLES=TEST.EMP,TEST.DEPT
bash
[dmdba@localhost bin]$ ./dexp SYSDBA/Dameng123@localhost:8889 FILE=/dmdata2/backup/emp_dept.dmp LOG=/dmdata2/backup/emp_dept.log TABLES=TEST.EMP,TEST.DEPT
dexp V8
[警告]文件"/dmdata2/backup/emp_dept.dmp"已经存在
是否覆盖(y/n, 1/0):y
[警告]文件"/dmdata2/backup/emp_dept.log"已经存在
是否覆盖(y/n, 1/0):y
version: 03134284336-20250117-257733-20132
start dexp:
SYSDBA/******@localhost:8889 FILE=/dmdata2/backup/emp_dept.dmp LOG=/dmdata2/backup/emp_dept.log TABLES=TEST.EMP,TEST.DEPT
----- [2026-04-17 05:48:26]导出表:TEST.EMP -----
----- [2026-04-17 05:48:26]导出表:TEST.DEPT -----
表TEST.EMP导出结束,共导出 14 行数据, 大小 0.659 KB
表TEST.DEPT导出结束,共导出 4 行数据, 大小 0.090 KB
共导出 2 个TABLE
整个导出过程共花费 0.094 s
成功终止导出, 没有出现警告
[dmdba@localhost bin]$

3.2.导入实验 (dimp)
3.2.1. 准备导入测试环境
连接数据库
./disql SYSDBA/"1314520yP@qq"@localhost:5236
创建测试用户用于导入
CREATE USER TEST_IMP IDENTIFIED BY "Test123!!";
GRANT DBA, RESOURCE TO TEST_IMP;

exit

3.2.2. 按表导入 (TABLES)
将导出的表数据导入到数据库中。
导入单张表
./dimp USERID=SYSDBA/\"1314520yP@qq\"@localhost:5236 FILE=/dmdata2/backup/emp_dept.dmp LOG=/dmdata/dmbak/emp_to_imp.log FROMUSER=TEST TOUSER=TEST_IMP TABLE_EXISTS_ACTION=REPLACE

可以看到,直接导入会报错,因为导入库中并没有该表
解决方法:先建表结构
bash
CONN TEST_IMP/"Test123!!"@localhost:5236;
-- 创建部门表
CREATE TABLE DEPT (
DEPTNO INT PRIMARY KEY,
DNAME VARCHAR(50),
LOC VARCHAR(50)
);
-- 创建员工表
CREATE TABLE EMP (
EMPNO INT PRIMARY KEY,
ENAME VARCHAR(50),
JOB VARCHAR(50),
MGR INT,
HIREDATE DATE,
SAL DECIMAL(10,2),
COMM DECIMAL(10,2),
DEPTNO INT
);


./dimp USERID=SYSDBA/\"1314520yP@qq\"@localhost:5236 FILE=/dmdata2/backup/emp_dept.dmp LOG=/dmdata/dmbak/emp_to_imp.log FROMUSER=TEST TOUSER=TEST_IMP TABLE_EXISTS_ACTION=REPLACE

登录测试数据:
CONN TEST_IMP/"Test123!!"@localhost:5236;
select * from dept;
select * from emp;

3.2.3. 导入用户数据
删除前面产生的数据:

导入到指定用户
./dimp USERID=SYSDBA/\"1314520yP@qq\"@localhost:5236 FILE=/dmdata2/backup/test_user.dmp LOG=/dmdata2/backup/test_import.log FROMUSER=TEST TOUSER=TEST_IMP TABLE_EXISTS_ACTION=REPLACE
bash
[dmdba@localhost bin]$ ./dimp USERID=SYSDBA/\"1314520yP@qq\"@localhost:5236 FILE=/dmdata2/backup/test_user.dmp LOG=/dmdata2/backup/test_import.log FROMUSER=TEST TOUSER=TEST_IMP TABLE_EXISTS_ACTION=REPLACE
dimp V8
version: 03134284336-20250117-257733-20132
start dimp:
SYSDBA/******@localhost:5236 FILE=/dmdata2/backup/test_user.dmp LOG=/dmdata2/backup/test_import.log FROMUSER=TEST TOUSER=TEST_IMP TABLE_EXISTS_ACTION=REPLACE
本地编码:PG_UTF8, 导入文件编码:PG_GB18030
[0/8]开始导入模式[TEST]......
[0/8]导入模式中的 NECESSARY GLOBAL 对象......
[0/8]模式中的 NECESSARY GLOBAL 对象导入完成......
----- [2026-04-17 06:37:39]导入表:TEST_IMP.DEPT -----
[0/8][表: DEPT]创建表 TEST_IMP.DEPT ...
----- [2026-04-17 06:37:39]导入表:TEST_IMP.EMP -----
----- [2026-04-17 06:37:39]导入表:TEST_IMP.PRODUCT -----
[1/8][表: DEPT]创建表已完成,导入表 DEPT 的数据中...
[1/8][表: EMP]创建表 TEST_IMP.EMP ...
[2/8][表: EMP]创建表已完成,导入表 EMP 的数据中...
[2/8][表: PRODUCT]创建表 TEST_IMP.PRODUCT ...
[3/8][表: PRODUCT]创建表已完成,导入表 PRODUCT 的数据中...
[表: DEPT]导入表 TEST_IMP.DEPT 的数据:4 行被处理, 大小 0.090 KB
[表: EMP]导入表 TEST_IMP.EMP 的数据:14 行被处理, 大小 0.659 KB
[表: PRODUCT]导入表 TEST_IMP.PRODUCT 的数据:10000 行被处理, 大小 434.261 KB
[3/8]导入模式中的 GLOBAL 对象......
[3/8]模式中的 GLOBAL 对象导入完成......
[3/8]模式[TEST_IMP]导入完成......
[3/8]整个导入过程共花费 0.105 s
成功终止导入, 没有出现警告
[dmdba@localhost bin]$

登录测试:
CONN TEST_IMP/"Test123!!"@localhost:5236;

3.2.4. 导入全库备份
全库导入
./dimp USERID=SYSDBA/\"1314520yP@qq\"@localhost:5236 FILE=/dmdata2/backup/full_export.dmp LOG=/dmdata2/backup/full_import.log FULL=Y
bash
[dmdba@localhost bin]$ ./dimp USERID=SYSDBA/\"1314520yP@qq\"@localhost:5236 FILE=/dmdata2/backup/full_export.dmp LOG=/dmdata2/backup/full_import.log FULL=Y
dimp V8
version: 03134284336-20250117-257733-20132
start dimp:
SYSDBA/******@localhost:5236 FILE=/dmdata2/backup/full_export.dmp LOG=/dmdata2/backup/full_import.log FULL=Y
本地编码:PG_UTF8, 导入文件编码:PG_GB18030
[0/10]导入 GLOBAL 对象......
[0/10]导入 SYSPACKAGES_DEF 对象......
[1/10]导入 SYSPACKAGES_DEF 对象......
[2/10]导入 USER 对象 : TEST
[3/10]导入 SYS_PRIV 对象......
[4/10]导入 SR_PRIV 对象......
[5/10]导入 SR_PRIV 对象......
[6/10]导入 SR_PRIV 对象......
[7/10]GLOBAL 对象导入完毕......
[7/10]导入 SCHEMA 对象......
[7/10]开始导入模式[SYSDBA]......
[7/10]导入模式中的 NECESSARY GLOBAL 对象......
[7/10]模式中的 NECESSARY GLOBAL 对象导入完成......
[7/10]导入模式中的 GLOBAL 对象......
[7/10]模式中的 GLOBAL 对象导入完成......
[7/10]模式[SYSDBA]导入完成......
[7/10]开始导入模式[TEST]......
[7/10]导入模式中的 NECESSARY GLOBAL 对象......
[7/10]模式中的 NECESSARY GLOBAL 对象导入完成......
----- [2026-04-17 06:42:29]导入表:TEST.DEPT -----
----- [2026-04-17 06:42:29]导入表:TEST.EMP -----
[7/10][表: DEPT]创建表 TEST.DEPT ...
----- [2026-04-17 06:42:29]导入表:TEST.PRODUCT -----
[8/10][表: DEPT]创建表已完成,导入表 DEPT 的数据中...
[8/10][表: EMP]创建表 TEST.EMP ...
[9/10][表: EMP]创建表已完成,导入表 EMP 的数据中...
[9/10][表: PRODUCT]创建表 TEST.PRODUCT ...
[10/10][表: PRODUCT]创建表已完成,导入表 PRODUCT 的数据中...
[表: EMP]导入表 TEST.EMP 的数据:14 行被处理, 大小 0.659 KB
[表: DEPT]导入表 TEST.DEPT 的数据:4 行被处理, 大小 0.090 KB
[表: PRODUCT]导入表 TEST.PRODUCT 的数据:10000 行被处理, 大小 434.261 KB
[10/10]导入模式中的 GLOBAL 对象......
[10/10]模式中的 GLOBAL 对象导入完成......
[10/10]模式[TEST]导入完成......
[10/10]整个导入过程共花费 7.962 s
成功终止导入, 没有出现警告
[dmdba@localhost bin]$

