暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【达梦8】普通表空间的备份与恢复

原创 李美静 恩墨学院 2021-09-24
2146

1 内容概览

本文主要讲解表空间的备份,并且模拟故障,进行恢复。在进行表空间备份时,只能联机进行备份,可以在disql中使用命令备份,也可以使用图形工具manager工具对表空间进行联机备份。

2 表空间备份

2.1 方式一:使用disql

SQL> backup tablespace main;
操作已执行
已用时间: 878.121(毫秒). 执行号:5.

SQL> select backup_name,backup_path from v$backupset;

行号     BACKUP_NAME                           BACKUP_PATH                                                   
---------- ------------------------------------- -------------------
1          DB_DAMENG_FULL_20200826_092335_643689 /opt/dm8/data/DAMENG/bak/DB_DAMENG_FULL_20200826_092335_643689
2          TS_MAIN_FULL_20200826_101951_442207   /opt/dm8/data/DAMENG/bak/TS_MAIN_FULL_20200826_101951_442207

1.png

2.2 方式二:图形manager备份

[dmdba@enmoedu1 log]$ manager
2.png
3.png
4.png
点击ddl获取对应的命令:

backup tablespace "MAIN" full to "TS_MAIN_FULL_2020_08_26_10_25_24" backupset 'TS_MAIN_FULL_2020_08_26_10_25_24' backupinfo 'backup for main tbs';

最后点击确定按钮。
在主页面查看到生成的备集:
5.png

注:如果备份的时候,指定备份集存放的目录与参数bak_path的值不同,那么备份完成之后,需要添加备份的工作目录之后,才能在以上表空间备份中看到生成的备份。如下图所示:
6.png

3 模拟业务

SQL> create user lmj identified by dmdba123456;
操作已执行
SQL> grant resource to lmj;
操作已执行
已用时间: 4.176(毫秒). 执行号:604.
SQL> grant create table to lmj;
操作已执行
SQL> create table lmj.test1 (id number) tablespace main;
操作已执行
已用时间: 26.524(毫秒). 执行号:37.
SQL> insert into lmj.test1 values(10);
影响行数 1
已用时间: 5.217(毫秒). 执行号:38.
SQL> commit;
操作已执行
已用时间: 5.850(毫秒). 执行号:39.
SQL> select * from lmj.test1;
行号     ID
---------- --
1          10

7.png

4 模拟故障

删除main表空间对应的数据文件

SQL> select file_name,tablespace_name from dba_data_files where tablespace_name='MAIN';

行号     FILE_NAME                     TABLESPACE_NAME
---------- ----------------------------- ---------------
1          /opt/dm8/data/DAMENG/MAIN.DBF MAIN
[dmdba@enmoedu1 log]$ rm -f  /opt/dm8/data/DAMENG/MAIN.DBF
[dmdba@enmoedu1 log]$ ll /opt/dm8/data/DAMENG/MAIN.DBF
ls: 无法访问/opt/dm8/data/DAMENG/MAIN.DBF: 没有那个文件或目录

8.png

5 识别故障

方法一:利用图形工具manager查看表空间MAIN,发现已经没有了数据文件
9.png
方法二:使用SP_FILE_SYS_CHECK函数检查OS文件。
检查之前查看main表空间上的数据是正常的,因为有缓存。

SQL> select * from lmj.test1;

行号     ID
---------- --
1          10

10.png
检查之后查看,发现文件丢失,再查询数据报错。

SQL> exec sp_file_sys_check;
DMSQL 过程已成功完成
已用时间: 0.499(毫秒). 执行号:612.
SQL> select * from lmj.test1;
select * from lmj.test1;
[-3430]:表空间[MAIN]中文件[/dm8/data/DAMENG/MAIN.DBF]已被删除.
已用时间: 0.316(毫秒). 执行号:0.

11.png
方法三:对表空间尝试脱机再联机,提示故障
12.png
此时报错:已经丢失了数据文件
点击详情之后:
13.png

6 恢复表空间

注:Dm8需要在脱机状态下恢复表空间,对应的图形工具是console。

6.1 停服务

[dmdba@enmoedu1 arch]$ DmServiceDMSERVER stop
Stopping DmServiceDMSERVER: [ OK ]

14.png

6.2 还原并且恢复表空间

方式一:使用命令行

[dmdba@enmoedu1 dm8]$ dmrman
dmrman V8
RMAN> restore database '/opt/dm8/data/DAMENG/dm.ini' tablespace main from backupset '/opt/dm8/data/DAMENG/bak/TS_MAIN_FULL_2020_08_26_10_25_24';
restore database '/opt/dm8/data/DAMENG/dm.ini' tablespace main from backupset '/opt/dm8/data/DAMENG/bak/TS_MAIN_FULL_2020_08_26_10_25_24';
file dm.key not found, use default license!
RESTORE TABLESPACE[main] IN DB[/opt/dm8/data/DAMENG/dm.ini] CHECK......
Database mode = 0, oguid = 0
EP[0]'s cur_lsn[50173]
RESTORE TABLESPACE[main] IN DB[/opt/dm8/data/DAMENG/dm.ini],dbf collect......
RESTORE TABLESPACE[main] IN DB[/opt/dm8/data/DAMENG/dm.ini],ts status and dbf refresh ......
RESTORE BACKUPSET [/opt/dm8/data/DAMENG/bak/TS_MAIN_FULL_2020_08_26_10_25_24] START......
total 0 packages processed...
RESTORE TABLESPACE[main] IN DB[/opt/dm8/data/DAMENG/dm.ini],UPDATE ctl file......
CMD END.CODE:[0]
restore successfully.
time used: 521.843(ms)
RMAN> recover database '/opt/dm8/data/DAMENG/dm.ini' tablespace main;
recover database '/opt/dm8/data/DAMENG/dm.ini' tablespace main;
Database mode = 0, oguid = 0
[WARN]tablespace MAIN is corrupted(state: 2), restore or drop please.
EP[0]'s cur_lsn[50173]
RECOVER TABLESPACE[main] IN DB[/opt/dm8/data/DAMENG/dm.ini] CHECK......
EP[0]'s cur_lsn[50173]
EP:0 total 5 pkgs applied, percent: 12%
EP:0 total 10 pkgs applied, percent: 24%
EP:0 total 15 pkgs applied, percent: 36%
EP:0 total 20 pkgs applied, percent: 48%
EP:0 total 25 pkgs applied, percent: 60%
EP:0 total 30 pkgs applied, percent: 73%
EP:0 total 35 pkgs applied, percent: 85%
EP:0 total 40 pkgs applied, percent: 97%
EP:0 total 41 pkgs applied, percent: 100%
Recover from archive log finished, time used:0.037s.
CMD END.CODE:[0]
recover successfully.
time used: 576.031(ms)

15.png
16.png
方式二:使用图形console工具
$console
17.png
如上选择DMAP方式,保证 DmAPService服务正常

[dmdba@enmoedu1 ~]$ DmAPService status
DmAPService (pid 4907) is running.

通过配置按钮添加备份存放的目录,最后获取备份,即可看到所有的备份
18.png
如上图选中要还原的备份,之后点击还原,出现如下界面:
19.png
点击确定,提示还原成功.
20.png
选择表空间恢复,添加恢复过程中使用的归档所在目录:
21.png
点击确定,提示恢复成功
22.png
启动服务:

[dmdba@enmoedu1 ~]$ DmServiceDMSERVER start
Starting DmServiceDMSERVER: [ OK ]

6.3 验证数据

SQL> select * from lmj.test1;
行号     ID
---------- --
1          10

23.png

最后修改时间:2021-09-24 17:50:01
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论