注意:该步骤仅在版本为V8,发版标记为 156 的版本上适用。
准备两个路径:一个用来放归档(需要性能很好)的归档目录
一个用来放备份(没有太大的性能要求)的备份目录。
把下面sql脚本的中的 d:\dmdata\dmarch 替换为我们的归档目录,一共有1个会被替换
把下面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');
替换后,在数据库执行(注意关注所有语句都需要正确执行,没有任何报错)
然后在数据库执行这个语句:
SP_DBMS_JOB_RUN((select id from "SYSJOB"."SYSJOBS" where name='bakfull'))
加入这个文件夹为:DB_DAMENG_FULL_2021_11_04_09_18_58
下面的操作就全都在我们的测试服务器上操作了,我们把文件夹整个上传到了测试服务器的/data下,为 /data/DB_DAMENG_FULL_2021_11_04_09_18_58
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
注意:恢复的数据库,用户名密码,原备份来源的实例一致。
文章
阅读量
获赞