1. 完全备和增量备

  1. 当用户选择在数据库或表空间上进行增量备份时,系统会自动将该数据库或表空间最近的一个备份作为其基础备份
    手册说基础备份可以是完全备份也可以是一个增量备份
    实际测试,基础备份都是以完全备份
    参考文档:
  2. 如果该数据库或表空间自创建以来还没有进行过备份,则增量备份无法进行
  3. 最近那一次的还原会使以前的备份对于当前系统都失效。系统管理员在每次系统还原后就立即作一次完全备份是一个很好的习惯
  4. 增量备份所依赖的基础备份有且仅有一个完全备份

2. 联机备和脱机备

联机方式支持数据库备份、用户表空间备份和用户表备份,而脱机方式只支持数据库备份
拷贝文件不是简单地将数据文件和日志文件的所有内容拷贝到备份文件,而是仅仅拷贝使用过的数据页

联机

BACKUP DATABASE [FULL |INCREMENT WITH BACKUPDIR '<备份目录>'{,'<备份目录>'}] TO <备份名>
[BAKFILE '<备份路径>'] [BACKUPINFO '<备份描述>'] [MAXSIZE <限制大小>] [IDENTIFIED BY <密钥>
[WITH ENCRYPTION<TYPE>]][COMPRESSED][WITHOUT LOG][PARALLEL '<并行映射文件路径>']

参数说明:
(1) FULL|INCREMENT 备份类型,FULL 表示完全备份,INCREMENT 表示增量备份;
(2) <备份目录> 基础备份所在的目录,最大长度为 256 个字节;
(3) <备份名> 备份的名称,在 DMDBMS 中以此标识不同的备份;
(4) <备份路径> 备份文件存放的完整路径;
(5) <备份描述> 备份的描述信息;
(6) <限制大小> 最大备份文件大小,最小值为 16M,最大值 2G;
(7) <密钥> 备份加密通过使用 IDENTIFIED BY 来指定密码;
(8) WITH ENCRYPTION 用来指定加密类型, 0 表示不加密, 1 表示简单加密,2 表示复杂加密;
(9) COMPRESSED 用来指定是否压缩。如果使用,则表示压缩,否则表示不压缩;
(10) WITHOUT LOG 联机数据库备份是否备份日志。如果使用,则表示不备份,否则表示备份;
(11) PARALLEL 用来指定并行映射文件的完整路径;
(12) <并行映射文件路径> 并行映射文件的完整路径,最大长度为 256 个字节;

例子:
BACKUP DATABASE FULL TO full_bak BAKFILE ‘/home/dm/datafull_bak.bak’; (默认BAKFILE在dm.ini中BAK_PATH; 且备份名不可以重复,不管是在哪个路径下。下同)
BACKUP DATABASE INCREMENT WITH BACKUPDIR ‘/home/dm/’ TO incr_bak BAKFILE ‘/home/dm/dataincr_bak.bak’;

脱机

./dmbackup TYPE=FULL INI_PATH=../data/DAMENG/dm.ini NAME=test
详见手册

备份用户表空间

BACKUP TABLESPACE <表空间名> [FULL| INCREMENT WITH BACKUPDIR '<备份目录>'{,'<备份目录>'}] TO 
<备份名> [BAKFILE '<备份路径>'] [BACKUPINFO '<备份描述>'] [MAXSIZE <限制大小>][IDENTIFIED BY 
<密钥>[WITH ENCRYPTION <TYPE>]] [COMPRESSED];

例子:
BACKUP TABLESPACE main FULL TO TS_BAK BAKFILE ‘/home/dm/tablespace_bak.bak’ ;

3. 逻辑备

逻辑备份的命令行工具 dexp.exe
dexp 工具可以对本地或者远程数据库进行数据库级、模式级和表级的逻辑备份。备份的内容非常灵活,可以选择是否备份索引、数据行和权限,是否忽略各种约束(外键约束、非空约束、唯一约束等) ,在备份前可以选择生成日志文件,记录备份的过程以供查看
详见手册

4. B树备份

B 树备份提供表级备份的功能

BACKUP TABLE <表名> TO <备份名> [BAKFILE '<备份路径>'] [BACKUPINFO '<备份描述>'][MAXSIZE 
<限制大小>] [IDENTIFIED BY <密钥>[WITH ENCRYPTION <TYPE>]] [COMPRESSED];

例子:
BACKUP TABLE t TO table_bak BAKFILE ‘/home/dm/table_bak.bak’;

注:表名最好加双引号,否则如果表名为全数字,备份失败

5. 并行备份

系统在执行备份时,充分利用了 CPU 资源和磁盘组资源,达到提升备份性能的目的

6. 还原

dmrestore 还原命令
参数:

INI_PATH        //配置文件路径,最大长度为 256 字节
FILE            //用于还原的备份文件完整路径
BACKUP_DIR      //备份文件存放路径,用于搜索备份文件(默认会搜索备份文件所在的目录,以及库的默认备份目录)
ARCHIVE_DIR     //归档日志存放的目录,可以指定 1~8 个。在还原联机库备份且不带日志的备份文件时,ARCHIVE_DIR 为必选参数
DATAFIL_PATH    //指定还原后的新文件路径([编号,路径],……,[编号,路径])。编号与路径成对出现,最多可以指定 16 个
SHOW_BAK_INFO   //可选值(0,1,2)0:表示利用备份还原;1:仅显示备份信息,不进行还原;2:表示使用归档日志进行还原
RES_TYPE        //可选值(0,1,2,3)0:表示利用备份还原;1:仅显示备份信息,不进行还原;2:表示使用归档日志进行还原;
                //3:仅还原单个完全备份或者增量备份
LOG             //指定一个文件,还原时日志会写入该文件
HELP            //打印帮助信息

还原数据库

利用备份文件还原:

# ./dmrestore INI_PATH=data/DAMENG/dm.ini FILE=data/DAMENG/bak/DB_DAMENG_20150506194312000009.bak
//查看归档是否打开
select arch_mode from v$database;
//查看归档日志信息
select arch_name,arch_type,arch_dest from v$dm_arch_ini;

利用归档文件还原:
修改目标库 db_magic 和源库中归档文件的 db_magic 一致。然后就可以执行还原操作了
修改 db_magic命令
DMMDF PATH TYPE
参数说明 :
path :文件全路径。文件为 SYSTEM.DBF 或 DAMENG01.LOG
type :1 或 0。1 表示 0 号数据文件,与 path 中 SYSTEM.DBF 对应;2 表示 0 号日志文件,与 path 中 DAMENG01.LOG 对应

//查看源备份库中system.dbf的db_magic
# ./dmmdf data1/DAMENG/SYSTEM.DBF 1
**********************************************************
1 db_magic=1430986615
2 next_trxid=1169
**********************************************************
查看到 db_magic

//修改目的备份库中system.dbf的db_magic
# ./dmmdf data2/DAMENG/SYSTEM.DBF 1
Please input which parameter you want to change(1-2), q to quit: 
选择1,修改成1430986615

//修改目的备份库中 DAMENG01.log的db_magic
# ./dmmdf data2/DAMENG/DAMENG01.log 2
**********************************************************
1 sig = DMRLOG
2 ver = 7001
3 chksum = 0
4 dbversion = 0x70009
5 sta = 0
6 n_magic = 21
7 db_magic = 1430986615
8 clsn_fil = 0
10 next_seq = 15556
11 arch_seq = 0
12 len = 67108864
13 free = 4096
14 clsn = 59219
15 clsn_off = 4096
16 arch_lsn = 0
**********************************************************
You can only reset sta(5) or db_magic (7) or clsn (14).
Please input the num which one you want to change, q to quit:
选择7,修改成1430986615

//还原数据库
# ./dmrestore INI_PATH=data/DAMENG/dm.ini ARCHIVE_DIR=dmdata/arch SHOW_BAK_INFO=2

还原表空间

RESTORE TABLESPACE <表空间名> FROM '<备份路径>' | BACKUP <备份文件名> [ INDENTIFIED BY <密码>]
[ WITH BACKUPDIR '<备份目录>'{,'<备份目录>'}][WITH ARCHIVEDIR '归档目录'{,'归档目录'}][DBFILE 
<文件 ID> TO '<文件路径>' {,DBFILE <文件 ID> TO '<文件路径>'}] [MIRROR <文件 ID> TO '<文件路径>'
{,MIRROR <文件 ID> TO '<文件路径>'}];

对于表空间联机还原,还原前需要将表空间置为脱机状态;还原后,为了使用表空间,需要重新将表空间置为联机状态

ALTER TABLESPACE main OFFLINE;
RESTORE TABLESPACE main FROM '/usr/local/tablespace_bak.bak' IDENTIFIED BY ABCDEF;
ALTER TABLESPACE main ONLINE;

还原用户表

RESTORE TABLE FROM '<文件路径>' | BACKUP <备份名> [IDENTIFIED BY <密钥>]

例子:
RESTORE TABLE FROM ‘/home/dm/table_bak.bak’ IDENTIFIED BY ABCDEF;
RESTORE table t3 FROM ‘/usr/local/dmbackup/table_I[T1].bak’; //7.1.4.6可以写表名,之前版本写了会报错