生产环境中,在安装完成数据库之后需要打开归档,并设置定时备份机制。

这次设置的定时备份机制是每周日零点三十分全备,每周一至六零点三十分增备,每周日零点十五分删除180天以前的备份文件。

打开归档的sql脚本如下。   ./disql SYSDBA/SYSDBA@127.0.0.1:5238 \`dmarch.sql

dmarch.sql 脚本的内容如下。

alter database mount;
alter database add ARCHIVELOG 'type=local, dest=/dm8/data/DM01/arch, file_size=64,space_limit=102400';
alter database ARCHIVELOG;
sp_set_para_value(1, 'ARCH_INI', 1);
alter database open;

上图中第一步就是将数据库切换到mount模式,同Oracle一样,只有在mount模式下,才可以变更归档模式。

上面脚本中备份文件的大小要根据实际情况去设置,空间的限制要根据实际的情况去设置,这里设置的是100G。

 

设置定时备份作业。执行如下命令。

每周日零点三十分全备,每周一至六零点三十分增备,每周日零点十五分删除180天以前的备份文件  备份到/dm8/data/DM01/bak 目录下面

 

./disql SYSDBA/SYSDBA@127.0.0.1:5238 \`backup.sql    下面是backup.sql 脚本的内容。

--创建代理环境
SP_INIT_JOB_SYS(1);
call SP_DROP_JOB('FULBAK');
call SP_DROP_JOB('INCREBAK');
call SP_DROP_JOB('DELBAK');
--fullbak
call SP_CREATE_JOB('FULBAK',1,0,'',0,0,'',0,'每周日零点三十分全备');

call SP_JOB_CONFIG_START('FULBAK');

call SP_ADD_JOB_STEP('FULBAK', 'FULBAK_STEP', 6, '01000000/dm8/data/DM01/bak', 1, 2, 0, 0, NULL, 0);

call SP_ADD_JOB_SCHEDULE('FULBAK', 'FULBAK_SCHEDULE', 1, 2, 1, 1, 0, '00:30:00', NULL, '2021-01-31 07:10:00', NULL, '');

call SP_JOB_CONFIG_COMMIT('FULBAK');


--increbak
call SP_CREATE_JOB('INCREBAK',1,0,'',0,0,'',0,'每周一至六零点三十分增备');

call SP_JOB_CONFIG_START('INCREBAK');

call SP_ADD_JOB_STEP('INCREBAK', 'INCREBAK_STEP', 6, '11000000/dm8/data/DM01/bak|/dm8/data/DM01/bak', 1, 2, 0, 0, NULL, 0);

call SP_ADD_JOB_SCHEDULE('INCREBAK', 'INCREBAK_SCHEDULE', 1, 2, 1, 126, 0, '00:30:00', NULL, '2021-01-31 07:12:00', NULL, '');

call SP_JOB_CONFIG_COMMIT('INCREBAK');

--delbak
call SP_CREATE_JOB('DELBAK',1,0,'',0,0,'',0,'每周日零点十五分删除180天以前的备份文件');

call SP_JOB_CONFIG_START('DELBAK');

call SP_ADD_JOB_STEP('DELBAK', 'DELBAK_STEP', 0, 'call SF_BAKSET_BACKUP_DIR_ADD(''DISK'',''/dm8/data/DM01/bak'');
call SP_DB_BAKSET_REMOVE_BATCH(''DISK'',SYSDATE-180);', 1, 2, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('DELBAK', 'DELBAK_SCHEDULE', 1, 2, 1, 1, 0, '00:15:00', NULL, '2021-01-31 07:15:00', NULL, '');
call SP_JOB_CONFIG_COMMIT('DELBAK');

下面我把上面的时间修改一下,以及备份的删除策略改成立即执行。执行下面的脚本内容。./disql SYSDBA/SYSDBA@127.0.0.1:5238 \`backup_now.sql

我当前服务器的时间是07:40:11 。  backup_now.sql 脚本的内容如下。

--fullbak
call SP_JOB_CONFIG_START('FULBAK');

call SP_ALTER_JOB_SCHEDULE('FULBAK', 'FULBAK_SCHEDULE', 1, 2, 1, 1, 0, '07:43:00', NULL, '2021-01-31 07:43:00', NULL, '');

call SP_JOB_CONFIG_COMMIT('FULBAK');

--increbak
call SP_JOB_CONFIG_START('INCREBAK');

call SP_ALTER_JOB_SCHEDULE('INCREBAK', 'INCREBAK_SCHEDULE', 1, 2, 1, 127, 0, '07:44:00', NULL, '2021-01-31 07:44:00', NULL, '');

call SP_JOB_CONFIG_COMMIT('INCREBAK');


--delbak
call SP_JOB_CONFIG_START('DELBAK');

call SP_ALTER_JOB_STEP('DELBAK', 'DELBAK_STEP', 0, 'call SF_BAKSET_BACKUP_DIR_ADD(''DISK'',''/dm8/data/DM01/bak'');
call SP_DB_BAKSET_REMOVE_BATCH(''DISK'',SYSDATE);', 1, 2, 0, 0, NULL, 0);

call SP_ALTER_JOB_SCHEDULE('DELBAK', 'DELBAK_SCHEDULE', 1, 2, 1, 1, 0, '07:45:00', NULL, '2021-01-31 07:45:00', NULL, '');

call SP_JOB_CONFIG_COMMIT('DELBAK');

最后,重新按正确的要求设置备份策略。执行开头的脚本即可,完成定时备份策略的创建。

 

Logo

一站式 AI 云服务平台

更多推荐