注册
已运行实例,如何进行备份和恢复测试?

已运行实例,如何进行备份和恢复测试?

hql 2021/11/04 2318 5 0
摘要 一定要做好归档和备份,并且定期备份它们;保护好归档和备份是永恒的主题。

注意:该步骤仅在版本为V8,发版标记为 156 的版本上适用。

  1. 准备两个路径:一个用来放归档(需要性能很好)的归档目录
    一个用来放备份(没有太大的性能要求)的备份目录。

  2. 把下面sql脚本的中的 d:\dmdata\dmarch 替换为我们的归档目录,一共有1个会被替换

  3. 把下面sql脚本的中的 d:\dmdata\dmbak 替换为我们的备份目录,一共有4个会被替换

注意:
1)我们要先建立好 归档目录、备份目录,保证这两个目录已经存在,且权限正确(比如:dmdba都已经有权限了)。
2)过程中,数据库可能会挂起1-5秒左右。

alter database mount; alter database add archivelog 'dest=d:\dmdata\dmarch ,TYPE=local,FILE_SIZE=1024,SPACE_LIMIT=102400'; alter database archivelog; alter database open; sp_set_para_value(1,'BAK_USE_AP',2); create table test2021110400090001(v1 int); drop table test2021110400090001; checkpoint(100); begin SP_INIT_JOB_SYS(1); exception when others then Null; end; call SP_CREATE_JOB('bakfull',1,0,'',0,0,'',0,''); call SP_JOB_CONFIG_START('bakfull'); call SP_ADD_JOB_STEP('bakfull', 'bak01', 6, '01000000d:\dmdata\dmbak', 0, 0, 0, 0, NULL, 0); call SP_ADD_JOB_SCHEDULE('bakfull', 'bak01', 1, 2, 1, 64, 0, '23:00:00', NULL, '2021-10-22 14:24:06', NULL, ''); call SP_JOB_CONFIG_COMMIT('bakfull'); call SP_CREATE_JOB('bakincr',1,0,'',0,0,'',0,''); call SP_JOB_CONFIG_START('bakincr'); call SP_ADD_JOB_STEP('bakincr', 'bak01', 6, '11000000d:\dmdata\dmbak|d:\dmdata\dmbak', 0, 0, 0, 0, NULL, 0); call SP_ADD_JOB_SCHEDULE('bakincr', 'bak01', 1, 2, 1, 63, 0, '23:00:00', NULL, '2021-10-22 14:24:06', NULL, ''); call SP_JOB_CONFIG_COMMIT('bakincr'); call SP_CREATE_JOB('delbak',1,0,'',0,0,'',0,''); call SP_JOB_CONFIG_START('delbak'); call SP_ADD_JOB_STEP('delbak','bak1',0, 'SF_BAKSET_BACKUP_DIR_ADD(''DISK'',''d:\dmdata\dmbak'');call sp_db_bakset_remove_batch(''DISK'',now()-14);', 1, 2, 0, 0, NULL, 0); call SP_ADD_JOB_SCHEDULE('delbak', 'del01', 1, 1, 1, 0, 0, '23:30:00', NULL, '2020-11-02 14:48:41', NULL, ''); call SP_JOB_CONFIG_COMMIT('delbak'); call SP_CREATE_JOB('statistics',1,0,'',0,0,'',0,''); call SP_JOB_CONFIG_START('statistics'); call SP_ADD_JOB_STEP('statistics', 'statistics1', 0, 'begin for rs in ( select ''DBMS_STATS.GATHER_SCHEMA_STATS(''''''||username||'''''',100,TRUE,''''FOR ALL COLUMNS SIZE AUTO'''');'' sqls from all_users ) LOOP execute immediate rs.sqls; end loop; end;', 0, 0, 0, 0, NULL, 0); call SP_ADD_JOB_SCHEDULE('statistics', 'statistics1', 1, 1, 1, 0, 0, '01:00:00', NULL, '2021-06-09 22:54:37', NULL, ''); call SP_JOB_CONFIG_COMMIT('statistics');
  1. 替换后,在数据库执行(注意关注所有语句都需要正确执行,没有任何报错)

  2. 然后在数据库执行这个语句:

SP_DBMS_JOB_RUN((select id from "SYSJOB"."SYSJOBS" where name='bakfull'))
  1. 然后从备份目录中下载最新的那个文件夹,就是我们的备份。
  2. 把这个文件夹上传到我们新的服务器上(要做恢复测试的服务器上)。

加入这个文件夹为:DB_DAMENG_FULL_2021_11_04_09_18_58

下面的操作就全都在我们的测试服务器上操作了,我们把文件夹整个上传到了测试服务器的/data下,为 /data/DB_DAMENG_FULL_2021_11_04_09_18_58

  1. 我们在测试服务器进行恢复测试,一共只需要执行三个命令:

1)假定我们数据库软件安装在 /home/dmdba/dmdbms/bin下面
2)假定我们的数据库实例需要恢复到 /data/dmdata下面

cd /home/dmdba/dmdbms/bin ./dminit path=/data/dmdata ./dmrman use_ap=2 >restore database '/data/dmdata/DAMENG/dm.ini' from backupset '/data/DB_DAMENG_FULL_2021_11_04_09_18_58' >recover database '/data/dmdata/DAMENG/dm.ini' from backupset '/data/DB_DAMENG_FULL_2021_11_04_09_18_58' >recover database '/data/dmdata/DAMENG/dm.ini' update db_magic

注意:1)/data/dmdata 这个路径,在执行dminit时,指定的什么路径,后面的三个命令的路径前缀,也要保持一致,跟着变化;且该路径的空间大小,要足够放下原数据库实例的所有表空间文件。

上面restore recover recover 三个步骤执行完,就可以启动数据库,进行数据校验了(此时,数据已经恢复完成)。

启动数据库可以暂时前台启动:
cd /home/dmdba/dmdbms/bin
./dmserver /data/dmdata/DAMENG/dm.ini

注意:恢复的数据库,用户名密码,原备份来源的实例一致。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服