一、备份还原简介
数据库备份是
DBA
日常最重要的工作内容。备份的主要目的是数据容灾,保证数据的安全性,在数据库发生故障时,通过还原备份集,将数据恢复到可用状态。
DM
数据库中的数据存储在数据库的物理数据文件中,数据文件按照页、簇和段的方式进行管理,数据页是最小的数据存储单元。任何一个对 DM
数据库的操作,归根结底都是对某个数据文件页的读写操作。
因此,
DM
备份的本质就是从数据库文件中拷贝有效的数据页保存到备份集中,这里的有效数据页包括数据文件的描述页和被分配使用的数据页。而在备份的过程中,如果数据库系统还在继续运行,这期间的数据库操作并不是都会立即体现到数据文件中,而是首先以日志的形式写到归档日志中,因此,为了保证用户可以通过备份集将数据恢复到备份结束时间点的状态,就需要将备份过程中产生的归档日志也保存到备份集中。
还原与恢复是备份的逆过程。还原是将备份集中的有效数据页重新写入目标数据文件的过程。恢复则是指通过重做归档日志,将数据库状态恢复到备份结束时的状态;也可以恢复到指定时间点和指定 LSN
。恢复结束以后,数据库中可能存在处于未提交状态的活动事务,这些活动事务在恢复结束后的第一次数据库系统启动时,会由 DM
数据库自动进行回滚。
二、物理备份
1.联机备份
联机方式支持数据库、用户表空间、用户表和归档的备份以及用户表的还原。在进行联机库级备份、归档备份和表空间备份时,必须保证系统处于归档模式,否则联机备份不能进行。
完全备份
在
DIsql
工具中使用
BACKUP
语句你可以备份整个数据库。通常情况下,在数据库实例配置归档后输入以下语句即可备份数据库:
SQL>BACKUP DATABASE (FULL) BACKUPSET 'db_bak_01';
语句执行完后会在默认的备份路径下生成名为“
db_bak_01
”的备份集目录,默认的备份路径为 dm.ini
中
BAK_PATH
配置的路径,若未配置,则使用
SYSTEM_PATH
下的
bak目录。这是最简单的数据库备份语句,如果要设置其他的备份选项需了解联机备份数据库的语法。
注意执行数据库备份,数据库必须处于 OPEN 状态, MOUNT 和 SUSPEND 状态下不允许执行数据库备份。
增量备份
增量备份指基于指定的库(或者表空间)的某个备份(完全备份或者增量备份),备份自该备份以来所有发生修改的数据页。执行增量备份的主要目的是快速备份数据库中的修改,减少备份时间和避免重复的备份。
SQL>BACKUP DATABASE INCREMENT WITH BACKUPDIR '/home/dm_bak' BACKUPSET '/home/dm_bak/db_increment_bak_02';
2.脱机备份
使用
DMRMAN
脱机备份数据库需要关闭数据库实例。若是正常退出的数据库,则脱机备份前不需要配置归档;若是故障退出的数据库,则备份前,需先进行归档修复。在 DMRMAN
中输入以下命令即可备份数据库:
RMAN>BACKUP DATABASE '/opt/dmdbms/data/DAMENG/dm.ini';
命令执行完后会在默认的备份路径下生成备份集目录,默认的备份路径为
dm.ini
中BAK_PATH 的配置值,若未配置,则为
SYSTEM_PATH
下的 bak 目录。这是最简单的脱机数据库备份语句,如果要设置其他的备份选项需了解脱机备份数据库的语法及使用说明。
完全备份
RMAN>BACKUP DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' FULL BACKUPSET
'/home/dm_bak/db_full_bak_01';
增量备份
RMAN>BACKUP DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' INCREMENT WITH BACKUPDIR
'/home/dm_bak'BACKUPSET '/home/dm_bak/db_increment_bak_02';
三、物理还原与恢复
1.联机还原
DM
仅支持表的联机还原,数据库、表空间和归档日志的还原必须通过脱机工具
DMRMAN执行。
表还原之后不需要恢复操作。
DIsql
中输入以下简单的
RESTORE
语句就可还原表:
SQL>RESTORE TABLE TAB_01 FROM BACKUPSET 'tab_bak_01';
执行表还原,数据库必须处于
OPEN
状态,
MOUNT
和
SUSPEND
状态下不允许执行表还原。表还原不需要配置归档,因为表还原是联机完全备份还原,所以不需要借助本地归档日志进行恢复。
2.脱机还原与恢复
使用
RESTORE
命令完成脱机还原操作,在还原语句中指定库级备份集,可以是脱机库级备份集,也可以是联机库级备份集。数据库的还原包括数据库配置文件还原和数据文件还原。
RMAN>RESTORE DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' FROM
BACKUPSET '/home/dm_bak/db_full_bak_for_restore';
使用
RECOVER
命令完成数据库恢复工作,可以是基于备份集的恢复工作,也可以是使用本地归档日志的恢复工作。如果还原后,数据已经处于一致性状态了,则可以使用更新DB_MAGIC 方式恢复,前提是不需要重做日志。
RMAN>RECOVER DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' FROM
BACKUPSET '/home/dm_bak/db_full_bak_for_recover_backupset';
数据库更新
数据库更新是指更新数据库的
DB_MAGIC
,并将数据库调整为可正常工作状态,与数据库恢复一样使用 RECOVER
命令完成。数据库更新发生在重做
REDO
日志恢复数据库后,或者目标库不需要执行重做日志已经处于一致状态的情况。
RMAN>RECOVER DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' UPDATE
DB_MAGIC;
四、逻辑备份与还原
1.逻辑备份
dexp
工具可以对本地或者远程数据库进行数据库级、用户级、模式级和表级的逻辑备份。备份的内容非常灵活,可以选择是否备份索引、数据行和权限,是否忽略各种约束(外键约束、非空约束、唯一约束等),在备份前还可以选择生成日志文件,记录备份的过程以供查看。
dexp
工具需要从命令行启动
。在
cmd
命令行工具中找到
dexp
所在安装目录/dmdbms/bin,输入
dexp
和参数后回车。
dexp PARAMETER=<value> { PARAMETER=<value> }
2.逻辑还原
dimp
逻辑导入工具利用
dexp
工具生成的备份文件对本地或远程的数据库进行联机逻辑还原。dimp
导入是
dexp
导出的相反过程。还原的方式可以灵活选择,如是否忽略对象存在而导致的创建错误、是否导入约束、是否导入索引、导入时是否需要编译、是否生成日志等。
dimp
工具需要从命令行启动
。在
cmd
命令行工具中找到
dimp
所在安装目录/dmdbms/bin,输入
dimp
和参数后回车。
dimp PARAMETER=value { PARAMETER=value }
3.示例
环境准备
导出库:环境为
linux
,服务器为
192.168.0.248
,用户名和密码均为
SYSDBA
。导出的是 DM
数据库系统安装时自带的名为
BOOKSHOP
的示例库,端口号
5236
。
导入库:环境为
linux
,服务器为
192.168.0.248
,用户名和密码均为
SYSDBA
。准备一个空数据库作为导入库,端口号为 8888
。
dexp
导出
导出数据库的所有对象(
FULL=Y
),导出文件为
dexp01.dmp
,导出日志为
dexp01.log
,导出文件和日志文件都存放在/emc_2/data/dexp
目录中。
./dexp SYSDBA/SYSDBA@192.168.0.248:5236 FILE=dexp01.dmp LOG=dexp01.log DIRECTORY=/emc_2/data/dexp FULL=Y
dimp
导入
导入
SYSDBA
、
OTHER
、
PERSON
模式中的数据(
SCHEMAS=
SYSDBA,OTHER,PERSON
),导入文件就是上一步导出的文件 dexp01.dmp
,导入日志
dimp02.log
放入
/emc_2/data/dimp目录中。
./dimp SYSDBA/SYSDBA@192.168.0.248:8888 FILE=/emc_2/data/dexp/dexp01.dmp LOG=dimp02.log DIRECTORY=/emc_2/data/dimp SCHEMAS=SYSDBA,OTHER,PERSON
查看
LOG
日志
如果想了解详细的导出、导入内容统计信息,请查看
LOG
日志
dexp01.log
和 dimp02.log。