备份数据库
语法:
DMBACKUP KEYWORD=value
确认 DM 数据库服务器已停止后,使用dmbackup 进行备份
如:
DMBACKUP TYPE=FULL INI_PATH=c:\dmdata\dameng\dm.ini NAME=test_fullbak
还原数据库:
脱机库还原支持无备份文件的还原,原理就是利用归档文件,在目标库上执行REDO操作,把库还原到指定的时间点或者LSN。限制条件是:
1)目标库和归档必须是源自同一个库;
2)必须保证源库的归档是完整,否则会出现不可预知的错误,即要保证备份之后产生的归档是完整的。要利用归档还原,需要利用备份文件还原一个目标库,修改目标库 db_magic 和源库中归档文件的 db_magic 一致。然后就可以执行还原操作了。
库 db_magic 的修改可以使用 dmmdf 工具。
dmmdf 工具可以修改 TYPE 中指定的文件中的信息,例如 db_magic。
语法:
dmmdf KEYWORD=value
具体参数详看官方文档:
dmmdf 工具的使用,举例说明:
dmmdf.exe TYPE=1 FILE=d:\data\DAMENG\SYSTEM.dbf
dmmdf.exe TYPE=2 FILE=d:\data\DAMENG\DAMENG01.log
dmmdf.exe TYPE=3 FILE=d:\data\DAMENG\bak\dmdb.bak
dmmdf.exe TYPE=4 FILE=d:\data\DAMENG\bak\bset\nbak.meta dmmdf.exe TYPE=5 FILE=d:\data\DAMENG\bak\bset\nbak.bak dmmdf.exe TYPE=6 FILE=d:\data\DAMENG\bak\bset
dmmdf.exe TYPE=7 FILE=d:\data\DAMENG\arch DB_MAGIC_SRC=4734373 DB_MAGIC_DST=4734366
DMRESTORE 还原工具的用法如下:
DMRESTORE KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)
--------------------------------------------------------------------------------------------------
使用备份文件还原:
利用备份文件 c:\dmdata\backup\test.bak 还原数据库
DMRESTORE INI_PATH=c:\dmdata\dameng\dm.ini FILE=c:\dmdata\backup\test.bak
利用归档文件 c:\dmdata\arch 还原数据库
第一步,修改目标库中的 db_magic。
--原备份库为 D:\tmp1\DAMENG,新还原的库为 D:\tmp2\DAMENG
1.使用 DMMDF 工具查看源备份库中 db_magic。
dmmdf type=1 file=D:\tmp1\DAMENG\system.dbf 查看到 db_magic 为 1375075864。记下。
2.使用 DMMDF 工具查看目标库中 system.dbf 的 db_magic。
dmmdf type=1 file=D:\tmp2\DAMENG\system.dbf --查看到 db_magic 为 1375251734。
输入 1 后,出现 Please input new value: 输入:1375075864。
3.使用 DMMDF 工具查看目标库中 DAMENG01.log 的 db_magic。
dmmdf type=2 file=D:\tmp2\DAMENG\DAMENG01.log --查看到 db_magic 为 1375257160。
输入 7 后,出现 Input the new value:
输入:1375075864。
至此,修改完毕。
第二步,还原数据库
DMRESTORE INI_PATH=c:\dmdata\dameng\dm.ini ARCHIVE_DIR=(c:\dmdata\arch) SHOW_BAK_INFO=2
--------------------------------------------------------------------------------------------------
使用归档日志还原
DMRESTORE INI_PATH=c:\dmdata\dameng\dm.ini FILE=c:\dmdata\backup\test.bak ARCHIVE_DIR = c:\dmdata\dameng\arch
--------------------------------------------------------------------------------------------------
还原到指定时间点或LSN
DMRESTORE INI_PATH=c:\dmdata\dameng\dm.ini FILE=c:\dmdata\backup\test.bak TIME="2011-9-25 15:20:20" ARCHIVE_DIR = c:\dmdata\dameng\arch
DMRESTORE INI_PATH=c:\dmdata\dameng\dm.ini FILE=c:\dmdata\backup\test.bak END_LSN=20000 ARCHIVE_DIR = c:\dmdata\dameng\arch
--------------------------------------------------------------------------------------------------
使用并行映射文件还原
利用并行备份文件 c:\dmdata\backup\test.bak 还原数据库,并行映射文件为E:\bak.parallel。
DMRESTORE INI_PATH=c:\dmdata\dameng\dm.ini FILE=c:\dmdata\backup\test.bak PARALLEL_DIR=E:\bak.parallel
--------------------------------------------------------------------------------------------------
使用不同库归档恢复数据库
使用不同库的归档恢复数据库,应用场景如下:
1. 创建一个源库 D;
2. 做一个备份 B;
3. 在 D 上做一些操作,目的是生成一些归档 A; 4. 创建一个新库D2;
5. 用 B+A 还原恢复;
6. 在 D2 上做一些操作,生成一些归档 A2;
7. 现在有了 B,A,A2, 理论上应该可以恢复出一个最新状态的 D2。
对应上述场景,操作步骤如下:
1.初始化源库和目标库,待备份和还原。
--D
dminit path=e:\tmp\del1
--D2
dminit path=e:\tmp\del2
2.源库配置归档并启动,归档路径为 e:\tmp\del1\dameng\arch。
dmserver e:\tmp\del1\dameng\dm.ini
3.备份源库,可以联机或脱机备份,这里以联机为例,备份文件为 B。
backup database bakfile 'e:\tmp\db_del1_bak_01.bak';
4.操作源数据库,生成一些归档 A。
drop table test;
create table test(c1 int);
insert into test values(1); commit;
select * from test;
5.利用源库的备份及归档还原数据库到 D2。
dmrestore ini_path=e:\tmp\del2\dameng\dm.ini file=e:\tmp\db_del1_bak_01.bak ARCHIVE_DIR=e:\tmp\del1\dameng\arch
6.配置归档,启动数据库 D2,并执行一些操作生成归档 A2,归档路径为e:\tmp\del2\dameng\arch。
dmserver e:\tmp\del2\dameng\dm.ini
insert into test values(2);
insert into test values(3);
commit;
select * from test;
查询结果:
行号 C1
1 1
2 2
3 3
7.关闭数据库 D2,利用备份文件 B、归档 A、A2 还原数据库到 D2。
利用B+A还原目标库
dmrestore ini_path=e:\tmp\del2\dameng\dm.ini file=e:\tmp\db_del1_bak_01.bak ARCHIVE_DIR=e:\tmp\del1\dameng\arch
查看归档A2的db_magic。
c:\dmdbms\bin>dmrachk.exe arch_fil=E:\TMP\del2\DAMENG\arch\ARCHIVE_LOCAL1_20151123102621688.log
arch_db_magic : 1448245568
修改目标库D2的db_magic与A2的一致,A2的db_magic为1448245568。
dmmdf E:\TMP\del2\DAMENG\SYSTEM.DBF 1
dmmdf E:\TMP\del2\DAMENG\DAMENG01.log 2
利用归档A2恢复
dmrestore ini_path=e:\tmp\del2\dameng\dm.ini ARCHIVE_DIR=e:\tmp\del2\dameng\arch res_type=2
8.启动数据 D2 查看结果。
select * from test;
行号 C1
1 1
2 2
3 3