重庆思庄Oracle、Redhat认证学习论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 207|回复: 0
打印 上一主题 下一主题

达梦数据库DM8在WINDOWS上通过命令使用时间点进行不完整恢复

[复制链接]
跳转到指定楼层
楼主
发表于 3 天前 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一、环境

操作系统:win11
数据库版本:dm8

数据库名:DAMENG
数据库目录:c:\dmdbs\data
归档:d:\arch_log
备份目录:d:\backup\dameng_full,D:\backup\arch_bak

二、准备数据
   create table emp(empid number,last_name varchar(20));
   SQL> insert into emp values(100,'abc');
   SQL> insert into emp values(101,'wangjia');
   SQL> insert into emp values(102,'liuzeyu');
   SQL> insert into emp values(103,'zhangxinyue');
   SQL> insert into emp values(104,'yangshuang');
   SQL> insert into emp values(105,'xiaolongqy');
   SQL> insert into emp values(106,'zhangqi');
   SQL> insert into emp values(107,'wangwang');
   SQL> insert into emp values(108,'tongyi');
   SQL> insert into emp values(109,'kangshifu');

   记录下当前的时间,等会我们就恢复到这个时间点

   SQL> select now();

行号       NOW()
---------- --------------------------
1          2025-03-09 14:52:55.455000

已用时间: 0.514(毫秒). 执行号:529.
或是记录当前的LSN,还可以通过LSN进行不完全恢复
SELECT FILE_LSN FROM V$RLOG


三、进行数据库备份

备份数据库和归档日志
SQL> backup database full backupset 'D:\backup\dameng_full\fullbak_20250309';
操作已执行
已用时间: 00:00:05.284. 执行号:808.

SQL> backup archivelog all delete input backupset 'D:\backup\arch_bak\arch_20250309';
操作已执行
已用时间: 00:00:05.071. 执行号:811.

四、删除表
SQL> drop table emp;
操作已执行
已用时间: 56.222(毫秒). 执行号:530.
SQL> select * from emp;
select * from emp;
第1 行附近出现错误[-2106]:无效的表或视图名[EMP].
已用时间: 0.770(毫秒). 执行号:0.
SQL> select now();

行号       NOW()
---------- --------------------------
1          2025-03-09 15:18:56.387000



五、基于时间点恢复

1.停掉当前实例
exit
Server is stopping...

2.删除之前实例的目录
cd C:\dmdbms\data
rmdir DAMENG

3.初始化一个实例,实例名与之前一致
c:\dmdbms\bin>dminit.exe path=c:\dmdbms\data db_name=DAMENG instance_name=DAMENG SYSDBA_PWD='sztech_4U' sysauditor_pwd='szgtech_4U'

initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2025-12-25
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL

log file path: c:\dmdbms\data\DAMENG\DAMENG01.log


log file path: c:\dmdbms\data\DAMENG\DAMENG02.log

write to dir [c:\dmdbms\data\DAMENG].
create dm database success. 2025-03-09 15:22:41

c:\dmdbms\bin>

4.使用归档日志和全备进行还原

使用dmrman 完成

c:\dmdbms\bin>dmrman
dmrman V8

#还原归档日志

RMAN> restore archivelog from backupset 'D:\backup\arch_bak\arch_20250309' to archivedir 'd:\arch_log\' ;   

restore archivelog from backupset 'D:\backup\arch_bak\arch_20250309' to archivedir 'd:\arch_log\';
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:00][Remaining:00:00:00]
restore successfully.
time used: 275.587(ms)

#还原备份集

RMAN> restore database 'C:\dmdbms\data\DAMENG\dm.ini' from backupset 'D:\backup\dameng_full\fullbak_20250309'  

restore database 'C:\dmdbms\data\DAMENG\dm.ini' from backupset 'D:\backup\dameng_full\fullbak_20250309'
file dm.key not found, use default license!
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:02][Remaining:00:00:00]
restore successfully.
time used: 00:00:03.201

#通过归档日志进行不完全恢复

RMAN> recover database 'C:\dmdbms\data\DAMENG\dm.ini' with archivedir 'd:\arch_log' until time '2025-03-09 14:52:55.455000';     

recover database 'C:\dmdbms\data\DAMENG\dm.ini' with archivedir 'd:\arch_log' until time '2025-03-09 14:52:55.455000';
Database mode = 2, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
EP[0]'s cur_lsn[59163], file_lsn[59163]
[Percent:79.31%][Speed:0.00PKG/s][Cost:00:00:00][Remaining:00:00:00]
recover successfully!
time used: 796.950(ms)

说明:
1.若不带until time 就是完全恢复.
2.不完全恢复包括until time和until lsn,使用 SELECT FILE_LSN FROM V$RLOG查LSN


# 更新 magic

RMAN> recover database 'C:\dmdbms\data\DAMENG\dm.ini' update db_magic;      

recover database 'C:\dmdbms\data\DAMENG\dm.ini' update db_magic;
Database mode = 2, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
EP[0]'s cur_lsn[59350], file_lsn[59350]
recover successfully!
time used: 00:00:01.342
RMAN>

六、验证
1.启动数据库
c:\dmdbms\bin>dmserver.exe path=c:\dmdbms\data\DAMENG\dm.ini

2.验证
disql /nolog
sql>conn sysdba;


SQL> select now();

行号       NOW()
---------- --------------------------
1          2025-03-09 17:02:26.715000

已用时间: 1.428(毫秒). 执行号:601.
SQL> select * from emp;

行号       EMPID LAST_NAME
---------- ----- -----------
1          100   abc
2          101   wangjia
3          102   liuzeyu
4          103   zhangxinyue
5          104   yangshuang
6          105   xiaolongqy
7          106   zhangqi
8          107   wangwang
9          108   tongyi
10         109   kangshifu

10 rows got

已用时间: 0.525(毫秒). 执行号:602.
SQL>

可以看到数据已经恢复了.


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持 反对反对
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|重庆思庄Oracle、Redhat认证学习论坛 ( 渝ICP备12004239号-4 )

GMT+8, 2025-3-12 21:18 , Processed in 0.111210 second(s), 19 queries .

重庆思庄学习中心论坛-重庆思庄科技有限公司论坛

© 2001-2020

快速回复 返回顶部 返回列表