首先说明设置备份,我们都会通过作业进行备份策略的设置,但是作业中并不能进行备份加密的设置。
所以说不论BAK1还是BAK2,在需要备份加密时,都需利用作业去定时执行联机备份脚本,才能进行备份文件的加密。
老备份方式(BAK1)
BAK1下的备份方式,每次生成的备份文件命名都是数据库+备份时的时间,而我们单独执行的一次备份命令,如果放在作业中执行就会造成备份文件的覆盖,备份文件也就最多保留一次的,所以说每次的备份文件命名都必须让他取系统时间,然后在作业中设置定时任务,让其自动进行联机备份。备份命令如下:
(1)全库备份:
declare
bak_time varchar(300);
v_str1 varchar(300);
begin
bak_time:=(select to_char(SYSDATE(),'YYYY_MM_DD_HH24_MI_SS'));
v_str1:='backup database full to "DAMENG_42_Y_BAK_'||bak_time||'" bakfile ''D:\dmdbms\data\DAMENG_42_Y\bak\DAMENG_42_Y_BAK_'||bak_time||'.bak'' identified by "abcd123!@#"
with encryption 1 compressed ;';
EXECUTE IMMEDIATE v_str1;
end;
(2)增量备份:
declare
bak_time varchar(300);
v_str1 varchar(300);
begin
bak_time:=(select to_char(SYSDATE(),'YYYY_MM_DD_HH24_MI_SS'));
v_str1:='backup database increment with backupdir ''D:\dmdbms\data\DAMENG_42_Y\bak'' to "DAMENG_42_Y_BAK_'||bak_time||'" bakfile ''D:\dmdbms\data\DAMENG_42_Y\bak\DAMENG_42_Y_BAK_'||bak_time||'.bak''
identified by "abcd123!@#" with encryption 1 compressed ;';
EXECUTE IMMEDIATE v_str1;
end;
加密备份(BAK1)恢复
加密备份恢复和一般的备份恢复方式相同,只是在恢复过程中需要输入密码和加密的算法,恢复如下:
新备份方式(BAK2)
BAK2下的备份方式,生成的备份文件是在备份集下,备份集名称在不指定的情况下,系统随机生成,默认备份名格式为: DB_数据库名_备份类型 _备份时间, 其中,备份时间为开始备份时的系统时间。所以说BAK2下备份命令只需执行带加密的备份文件即可:
(1)全库备份:
backup database full backupset '/opt/dmdbms/data/DAMENG/bak/'
identified by "abcd123!@#" with encryption 1 compressed;
(2)增量备份:
backup database increment with backupdir '/opt/dmdbms/data/DAMENG/bak'
backupset '/opt/dmdbms/data/DAMENG/bak/'
identified by "abcdefghi" with encryption 1 compressed;
加密备份(BAK2)恢复
restore database '/opt/dmdbms/data/DAMENG_test/dm.ini' from backupset '/opt/dmdbms/data/DAMENG/bak/DB_DAMENG_42_Y_FULL_2017_05_16_23_29_30' IDENTIFIED BY "abcd123!@#";
建议如果没有特殊要求选择默认加密算法即可满足。