官网文档:https://eco.dameng.com/docs/zh-cn/faq/faq-import-export.html
达梦数据库安装成功后,会显示如下客户端
用于建立连接,建表,查询等操作,可在模式下查看建立的数据库信息
在库中建表,表名只能大写,或者查询时报错
用于启动停止服务
用于导入导出数据
建立迁移任务,选择导入数据
去管理工具,查询验证,只有姓名导入,其他导入失败
新建的表则插入成功
重新建立迁移任务
建立迁移任务,选择导出数据
数据成功导出,切可以支持导入多个表
联机备份前必须要配置归档,脱机可配置可不配置
##修改数据库为 Mount 状态
ALTER DATABASE MOUNT
##配置本地归档
ALTER DATABASE ADD ARCHIVELOG ‘DEST = /home/dm_arch/arch, TYPE = local,FILE_SIZE = 1024, SPACE_LIMIT = 40960’;
##开启归档模式
ALTER DATABASE ARCHIVELOG;
##修改数据库为 Open 状态
ALTER DATABASE OPEN;
查看数据库归档状态(arch_mode 为y说明处于归档)
select arch_mode from v$database;
右键管理服务器也可以查看
命令行
##配置归档,请参考归档配置;
##保证数据库处于脱机状态;
##启动 DMRMAN 命令行工具;
##DMRMAN 中输入以下命令:
RMAN>BACKUP ARCHIVE LOG ALL DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' BACKUPSET '/home/dm_bak/arch_all_bak_01';
页面
代理=》创建代理环境=》新建作业=》确定
会自动生成一个ddl语句
设置定时任务
call SP_CREATE_JOB('db_bak_gd_log',1,0,'',0,0,'',0,'配置归档备份');
call SP_JOB_CONFIG_START('db_bak_gd_log');
call SP_ADD_JOB_STEP('db_bak_gd_log', '归档备份库', 6, '31020200D:\dmdbms\data\bfwj_gdbf', 1, 1, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('db_bak_gd_log', '归档备份调度', 1, 1, 1, 0, 0, '11:03:55', NULL, '2024-01-08 10:57:43', NULL, '');
call SP_JOB_CONFIG_COMMIT('db_bak_gd_log');
错误码为0说明备份成功
备份路径下会生成一个文件夹
查询备份相关信息
SELECT * FROM V
B
A
C
K
U
P
S
E
T
B
K
P
;
S
E
L
E
C
T
?
F
R
O
M
V
BACKUPSET_BKP; SELECT * FROM V
BACKUPSETB?KP;SELECT?FROMVBACKUPSET_SEARCH_DIRS;
SELECT * FROM V$BACKUP_HISTORY;
查看数据库相关信息
SELECT '实例名称' 数据库选项,INSTANCE_NAME 数据库集群相关参数值 FROM V$INSTANCE UNION ALL
SELECT '数据库名',CUR_DATABASE()FROM DUAL UNION ALL
SELECT '授权客户',(SELECT AUTHORIZED_CUSTOMER FROM V$LICENSE) UNION ALL
SELECT '数据库授权码',(SELECT SERIES_NO FROM V$LICENSE) UNION ALL
SELECT '数据库有效期',CAST((SELECT EXPIRED_DATE FROM V$LICENSE)AS VARCHAR) UNION ALL
SELECT '数据库版本',SUBSTR(SVR_VERSION,INSTR(SVR_VERSION,'(')) FROM V$INSTANCE UNION ALL
SELECT '数据库实例路径',(SELECT PARA_VALUE FROM V$DM_INI WHERE PARA_NAME LIKE'%SYSTEM_PATH%') FROM V$INSTANCE UNION ALL
SELECT '数据库模式',MODE$ FROM V$INSTANCE UNION ALL
SELECT '数据库状态',STATUS$ FROM V$INSTANCE UNION ALL
SELECT 'OGUID',CAST(OGUID AS VARCHAR) FROM V$INSTANCE UNION ALL
SELECT '归档状态_开 Y/关 N',ARCH_MODE FROM V$DATABASE UNION ALL
SELECT '长度是否以字符为单位',CASE (SELECT PARA_VALUE FROM V$DM_INI WHERE "V$DM_INI".PARA_NAME ='LENGTH_IN_CHAR') WHEN '0' THEN '否' WHEN '1' THEN '是' END UNION ALL
SELECT '大小写是否敏感_是 Y,1/否N,0',CAST(SF_GET_CASE_SENSITIVE_FLAG() AS VARCHAR) UNION ALL
SELECT '字符集',CASE SF_GET_UNICODE_FLAG() WHEN '0' THEN 'GBK18030' WHEN '1' THEN 'UTF-8' WHEN '2' THEN 'EUC-KR' END UNION ALL
SELECT '页大小',CAST(PAGE()/1024 AS VARCHAR) UNION ALL
SELECT '簇大小',CAST(SF_GET_EXTENT_SIZE() AS VARCHAR) UNION ALL
SELECT '唯一魔数',CAST(PERMANENT_MAGIC AS VARCHAR) UNION ALL
SELECT 'LSN',CAST(CUR_LSN AS VARCHAR) FROM V$RLOG UNION ALL
SELECT '当前登录用户',USER;
备份集校验
--SF_BAKSET_CHECK (device_type,backup_dir)
SELECT SF_BAKSET_CHECK ('DISK','/home/dm_bak/db_bak_for_check');
为1说明备份成功
验证备份集是否有效
备份之后,尝试修改数据
备份前的数据
备份后修改数据
新建测试表
考虑到生产环境的实例不能关闭,切为了不影响实际业务数据,新建一个实例进行恢复
实际生产环境端口5236,且实例名为DAMENG,新建一个5237,实例名为DM02
[dmdba@localhost bin]$ ./dminit path=/dm8/data1/ DB_NAME=DM02 INSTANCE_NAME=DMSVR02 PORT_NUM=5237 page_size=16 extent_size=32 CASE_SENSITIVE=1 log_size=500
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2023-06-30
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
log file path: /dm8/data1/DM02/DM0201.log
log file path: /dm8/data1/DM02/DM0202.log
write to dir [/dm8/data1/DM02].
create dm database success. 2022-12-29 14:15:45
#
#前台启动数据库,确认实例是否初始化正常。
[dmdba@localhost bin]$ ./dmserver /dm8/data1/DM02/dm.ini
#退出实例准备数据还原
以上是window系统操作,同样的指令,可见新建一个实例成功
新建达梦连接,端口号给5237,可见创建成功
里面是空的
实例2当前未配置归档
数据库备份还原恢复
./dmrman
restore database '/dm8/data1/DM02/dm.ini' from backupset '/dm8/backup/1229';
recover database '/dm8/data1/DM02/dm.ini' WITH ARCHIVEDIR '/dm8/data/DM01/arch' UNTIL LSN 1000050;
recover database '/dm8/data1/DM02/dm.ini' update db_magic;
归档备份还原恢复
##还原归档。启动 DMRMAN,设置 OVERWRITE 为 2,如果归档文件已存在,会报错。
##1、指定还原的目标归档日志目录:
RMAN>RESTORE ARCHIVE LOG FROM BACKUPSET '/home/dm_bak/arch_all_for_restore' TO ARCHIVEDIR'/opt/dmdbms/data/DAMENG_FOR_RESTORE/arch_dest' OVERWRITE 2;
##2、指定还原目标库的 dm.ini 文件路径:
RMAN>RESTORE ARCHIVE LOG FROM BACKUPSET '/home/dm_bak/arch_all_for_restore' TO DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' OVERWRITE 2;
以下用的是归档方式
归档还原时候报错,不知道什么原因,有大佬知道可以回复下
CHECK BACKUPSET ‘D:\dmdbms\data\bfwj_gdbf\DB_DAMENG_FULL_2024_01_11_10_25_45’;
尝试使用管理工具页面还原
换个备份方式,重新备份,后面选择全备试下
call SP_CREATE_JOB('db_bak_gd_log',1,0,'',0,0,'',0,'配置归档备份');
call SP_JOB_CONFIG_START('db_bak_gd_log');
call SP_ADD_JOB_STEP('db_bak_gd_log', '归档备份库', 6, '01020200D:\dmdbms\data\bfwj_gdbf', 1, 1, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('db_bak_gd_log', '归档备份调度', 1, 1, 1, 0, 0, '10:24:55', NULL, '2024-01-08 10:57:43', NULL, '');
call SP_JOB_CONFIG_COMMIT('db_bak_gd_log');
注意备份的时候这两个地方都要启动
刚刚全备的已经成功了
测试在新实例上还原,新实例之前已经开启过归档了,可以看到改用完全备份方式成功
./dmrman
restore database 'D:\dmdbms\data\DM02\dm.ini' from backupset 'D:\dmdbms\data\bfwj_gdbf\ARCH_LOG_DAMENG_2024_01_10_11_20_57';
recover database 'D:\dmdbms\data\DM02\dm.ini' WITH ARCHIVEDIR 'D:\dmdbms\data\DAMENG\he_gd' UNTIL LSN 1000050;
recover database 'D:\dmdbms\data\DM02\dm.ini' update db_magic;
注意这里用的是归档路径不是备份集路径
开启新实例,查看数据是否和旧实例数据一样
dmserver D:\dmdbms\data\DM02\dm.ini
可以看到5237的数据和5236的数据一致
整个过程中实例5236的数据是不需要关闭的,只是把数据恢复到了5237的实例中