物理备份工具:
1、disql方式
2、drman方式
重要概念:
CKPT_LSN:最后一次落盘的LSN好
LSN:log sequence number
FILE_LSN:联机日志redo 中记录的最大LSN
PWR:page write record
备份集也记录了两个LSN
BEGIN_LSN:备份集开始的LSN
END_LSN:备份机结束的LSN
备份时 BEGIN_LSN=CKPT_LSN FILE_LSN=END_LSN
恢复过程中需要的归档日志范围时CKPT_LSN和FILE_LSN之前全部的归档日志和联机日志
PWR:可以在备份时评估需要备份的数据页,降低备份集的大小,提高备份速度。
命令行备份:
BACKUP DATABASE [[[FULL] [DDL_CLONE]]| INCREMENT [CUMULATIVE][WITH BACKUPDIR '<
基备份搜索目录>'{,'<基备份搜索目录>'}]|[BASE ON BACKUPSET '<基备份目录>']][TO <备份
名>][BACKUPSET '<备份集路径>']
[DEVICE TYPE <介质类型> [PARMS '<介质参数>']]
[BACKUPINFO '<备份描述>'] [MAXPIECESIZE <备份片限制大小>]
[LIMIT <read_limit>|<write_limit>]
[IDENTIFIED BY <密码>|”<密码>” [WITH ENCRYPTION <TYPE>][ENCRYPT WITH <加密算法>]]
[COMPRESSED [LEVEL <压缩级别>]] [WITHOUT LOG]
[TRACE FILE '<TRACE 文件名>'] [TRACE LEVEL <TRACE 日志级别>]
[TASK THREAD <线程数>][PARALLEL [<并行数>] [READ SIZE <拆分块大小>]];
<read_limit>::= READ SPEED <读速度上限> [WRITE SPEED <写速度上限>]
<write_limit>::= WRITE SPEED <写速度上限>
最简单备份命令
全备
备份机位置数据文件所在目录中 /dmdata/DAMENG/bak/bak_full01
1、backup database backupset 'bak_full01';
2、指定备份机位置,备份设备类型,单个备份机最大300M,压缩等级5,并行度8
BACKUP DATABASE TO WEEKLY_FULL_BAK BACKUPSET '/dmbk/bak_full01' DEVICE TYPE DISK BACKUPINFO '备份描述' MAXPIECESIZE 300 COMPRESSED LEVEL 5 PARALLEL 8;
3、只备份结构DDL_CLONE
backup database DDL_CLONE TO NOROW_FULL_BAK backupset '/dmbk/bak_full01bak_full01' DEVICE TYPE DISK BACKUPINFO '只备份结构';
4、增量备份
--需要有一个full 备份
BACKUP DATABASE FULL BACKUPSET '/dmbk/db_full_bak_01';
BACKUP DATABASE INCREMENT WITH BACKUPDIR '/dmbk' BACKUPSET '/dmbk/db_increment_bak_02';
表空间备份:
BACKUP TABLESPACE MAIN BACKUPSET 'ts_bak_01';
BACKUP TABLESPACE MAIN FULL BACKUPSET '/dmbk/ts_full_bak_01'; --全备
BACKUP TABLESPACE MAIN INCREMENT BASE ON BACKUPSET '/dmbk/ts_full_bak_01' BACKUPSET '/dmbk/ts_increment_bak_02'; --要有全备作为基备然后才可以增备
表备份 都为联机备份,没有增备和归档备份
BACKUP TABLE TAB_01 BACKUPSET 'tab_bak_01';
归档备份
BACKUP ARCHIVE LOG ALL BACKUPSET 'arch_bak_01';
加密备份 --指定加密秘钥,加密级别和加密算法,DM8 默认密码规则长度大于等于9
BACKUP DATABASE BACKUPSET '/dmbk/db_bak_for_encrypt_01' IDENTIFIED BY "123456789" WITH ENCRYPTION 2 ENCRYPT WITH RC4;
--设置trace 文件
BACKUP DATABASE BACKUPSET '/dmbk/db_bak_for_trac_01' TRACE FILE '/dmbk/db_bak_trace.log' TRACE LEVEL 2;
备份机管理
相关视图
V$BACKUPSET:显示备份集基本信息。
V$BACKUPSET_DBINFO:显示备份集的数据库相关信息。
V$BACKUPSET_DBF:显示备份集中数据文件的相关信息。
V$BACKUPSET_ARCH:显示备份集的归档信息。
V$BACKUPSET_RLOG:显示备份集的日志信息。
V$BACKUPSET_BKP:显示备份集的备份片信息。
V$BACKUPSET_SEARCH_DIRS:显示备份集搜索目录。
V$BACKUPSET_TABLE:显示表备份集中备份表信息。
V$BACKUPSET_INDEX:显示表备份集中备份索引信息。
V$BACKUPSET_SUBS:显示并行备份中生成的子备份集信息。
相关管理函数
SF_RMAN_ADD_BACKUP_DIR:添加备份目录。
SF_RMAN_REMOVE_BACKUP_DIR:指定删除内存中的备份目录。
SF_RMAN_REMOVE_BACKUP_DIR_ALL:删除内存中全部的备份 目录。
SF_RMAN_BAKSET_CHECK:校验指定的备份文件。
SF_RMAN_BAKSET_REMOVE:删除指定的备份集。
SP_RMAN_BATCH_DEL_DB_BAKSET:批量删除数据库备份集。
SP_RMAN_BATCH_DEL_TS_BAKSET:批量删除表空间备份集。
SP_RMAN_BATCH_DEL_TAB_BAKSET:批量删除表备份集。
命令行还原指令
命令行只支持表的数据还原,表空间和库的备份还原需要借助DRMAN,所以需要保证表结构一致
还原示例:
CREATE TABLE TAB_FOR_RES_01(C1 INT);
BACKUP TABLE TAB_FOR_RES_01 BACKUPSET '/dmbk/tab_bak_for_res_01';
SELECT SF_BAKSET_CHECK('DISK','/dmbk/tab_bak_for_res_01');
drop table TAB_FOR_RES_01
select * from TAB_FOR_RES_01;
RESTORE TABLE TAB_FOR_RES_01 FROM BACKUPSET '/dmbk/tab_bak_for_res_01';
DRMAN备份还原 DMRMAN是脱机状态备份
BACKUP DATABASE '/dmdata/DAMENG/dm.ini' FULL BACKUPSET '/dmbk/db_full_bak_01';
BACKUP DATABASE '/dmdata/DAMENG/dm.ini' INCREMENT WITH BACKUPDIR '/dmbk' BACKUPSET 'db_increment_bak_02';
BACKUP ARCHIVE LOG ALL DATABASE '/dmdata/DAMENG/dm.ini' BACKUPSET '/dmbk/arch_all_bak_01';
--配置trace log
CONFIGURE DEFAULT TRACE FILE '/dmbk/trace.log ' TRACE LEVEL 2
SHOW BACKUPSET '/dmbk/db_full_bak_01';
CHECK BACKUPSET '/dmbk/db_full_bak_01' DATABASE '/dmdata/DAMENG/dm.ini';
REMOVE BACKUPSET '/dmbk/db_full_bak_01';
DMRMAN 备份还原实例:
1、联机备份数据库
BACKUP DATABASE BACKUPSET '/dmbk/db_full_bak_for_restore';
2、初始化一个新库
3、检查备份集
DRMAN>CHECK BACKUPSET '/dmbk/db_full_bak_for_restore';
SHOW BACKUPSET '/dmbk/db_full_bak_for_restore' INFO DB; --确认DB_MAGIC 值1078888870
4、模拟数据文件丢失
5、还原数据库restore --保证dm.ini 存在并且控制文件也在
RESTORE DATABASE '/dmdata/DAMENG/dm.ini' FROM BACKUPSET '/dmbk/db_full_bak_for_restore';
6、恢复数据库 recover
--从备份集恢复
RECOVER DATABASE '/dmdata/DAMENG/dm.ini' FROM BACKUPSET '/dmbk/db_full_bak_for_restore';
--从归档恢复
1、确认备份集的 DB_MAGIC
2、确认归档文件所在路径
3、执行recover指令
RECOVER DATABASE '/dmdata/DAMENG/dm.ini' WITH ARCHIVEDIR'/home/dm_arch/arch' USE DB_MAGIC 1447060265;
--不完全恢复指令
RMAN>RECOVER DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' WITH ARCHIVEDIR'/home/dm_arch/arch' USE DB_MAGIC 1447060265 UNTIL TIME'2015-11-16 10:56:40.624931';
RMAN>RECOVER DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' WITH ARCHIVEDIR'/home/dm_arch/arch' USE DB_MAGIC 1447060265 UNTIL LSN 50857;
7、恢复完成后更新DB_MAGIC
RECOVER DATABASE '/dmdata/DAMENG/dm.ini' UPDATE DB_MAGIC;
8、启动数据库
elect * from v$instance; 确认状态