DM数据库学习之路(八)DM8逻辑&物理备份与恢复测试

  1. 概述
    1. 1 前言

数据库备份是 DBA日常最重要的工作内容。备份的主要目的是数据容灾,保证数据的安全性,在数据库发生故障时,通过还原备份集,将数据恢复到可用状态。

物理备份是找出那些已经分配、使用的数据页,拷贝并保存到备份集中。物理还原是物理备份的逆过程,物理还原一般通过 DMRMAN 工具(或者 SQL 语句),把备份集中的数据内容(数据文件、数据页、归档文件)重新拷贝、写入目标文件。

1.2  备份与还原关系

    1. 术语
  • 联机备份还原:联机备份还原指数据库处于运行状态时,并正常提供数据库服务情况下进行的备份还原操作,称为联机备份还原。
  • 脱机备份还原:脱机还原指数据库处于关闭状态时执行的还原操作。库备份、表空间备份和归档备份,可以执行脱机还原。脱机还原操作的目标库必须处于关闭状态。
  • 备份集:备份集用来存放备份过程中产生的备份数据及备份信息。一个备份集对应了一次完整的备份。一般情况下,一个备份集就是一个目录,备份集包含一个或多个备份片文件,以及一个备份元数据文件。
    1. 3 适用范围

适用于所有技术人员,数据库爱好者,数据库初学者。

2.DM8逻辑备份(dexp/dexpdp)

2.1 DM8备份说明

DM 数据库的备份还原包括两种类型:物理备份还原和逻辑备份还原。物理备份还原是对数据库的操作系统物理文件(如数据文件、控制文件和日志文件等)的备份还原。例如使用 RMAN 工具进行的备份还原。物理备份还原请参考《DM8 备份与还原》。

逻辑备份还原是对数据库逻辑组件(如表、视图和存储过程等数据库对象)的备份还原。例如使用 dexp 和 dimp 进行的备份还原。逻辑备份还原正是本书所要介绍的内容。

逻辑导出(dexp)和逻辑导入(dimp)是 DM 数据库的两个命令行工具,分别用来实现对 DM 数据库的逻辑备份和逻辑还原。逻辑备份和逻辑还原都是在联机方式下完成,联机方式是指数据库服务器正常运行过程中进行的备份和还原 dexp 和 dimp 是 DM 数据库自带的工具,只要安装了 DM 数据库,就可以在安装目录 $DM_HOME/bin 中找到。

逻辑导出和逻辑导入数据库对象分为四种级别:数据库级、用户级、模式级和表级。四种级别独立互斥,不能同时存在。四种级别所提供的功能:

数据库级(FULL):导出或导入整个数据库中的所有对象。

用户级(OWNER):导出或导入一个或多个用户所拥有的所有对象。

模式级(SCHEMAS):导出或导入一个或多个模式下的所有对象。

表级(TABLES):导出或导入一个或多个指定的表或表分区。

2.2 逻辑备份参数说明

参数

含义

备注

USERID

数据库的连接信息

必选

FILE

明确指定导出文件名称

可选。如果缺省该参数,则导出文件名为dexp.dmp

DIRECTORY

导出文件所在目录

可选

FULL

导出整个数据库(N)

可选,四者中选其一。缺省为SCHEMAS

OWNER

用户名列表,导出一个或多个用户所拥有的所有对象

SCHEMAS

模式列表,导出一个或多个模式下的所有对象

TABLES

表名列表,导出一个或多个指定的表或表分区

FUZZY_MATCH

TABLES选项是否支持模糊匹配(N)

可选

QUERY 

用于指定对导出表的数据进行过滤的条件。

可选

PARALLEL

用于指定导出的过程中所使用的线程数目

可选

TABLE_PARALLEL

用于指定导出每张表所使用的线程数,在MPP模式下会转换成单线程

可选

TABLE_POOL

用于设置导出过程中存储表的缓冲区个数

可选

EXCLUDE

批量设置导出内容中忽略的对象。
1. EXCLUDE=[(]<
对象种类名>{,<对象种类名>}[)]
对象种类可为:CONSTRAINTSINDEXESROWSTRIGGERSGRANTSVIEWSPROCEDUREPACKAGESEQUENCETABLES

可选

2. EXCLUDE=TYPE:name1,name2
TYPE
可为:SCHEMAS、TABLES、VIEWS、PROCEDURE、PACKAGE、SEQUENCE。

3. EXCLUDE=TYPE:cond{,TYPE:cond}
TYPE
可取值同上,cond为IN或LIKE过滤条件

INCLUDE

批量设置导出时只导出指定的对象种类或某个具体对象。
1. INCLUDE=[(]<对象种类名>{,<对象种类名>}[)]
对象种类可为:CONSTRAINTS、INDEXES、ROWS、TRIGGERS、GRANTS、VIEWS、PROCEDURE、PACKAGE、SEQUENCE、TABLES。

可选

2. INCLUDE=TYPE:name1,name2
TYPE
可为SCHEMAS、TABLES、VIEWS、PROCEDURE、PACKAGE、SEQUENCE。 

3. INCLUDE=TYPE:cond{,TYPE:cond}
TYPE
可取值同上,cond为IN或LIKE过滤条件

CONSTRAINTS

导出约束 (Y)

可选

TABLESPACE

导出的对象定义是否包含表空间(N)

此处单独设置与和EXCLUDE/INCLUDE中批量设置功能一样。设置一个即可

GRANTS

导出权限 (Y) 

INDEXES

导出索引 (Y)

TRIGGERS

导出触发器(Y)

ROWS

导出数据行 (Y)

LOG

明确指定日志文件名称

可选,如果缺省该参数,则导出文件名为dexp.log

NOLOGFILE

不使用日志文件(N)

可选

NOLOG

屏幕上不显示日志信息(N)

可选

LOG_WRITE

日志信息实时写入文件 (N)

可选

DUMMY

交互信息处理: 打印(P), 所有交互都按YES处理(Y),NO(N)。默认为NO,不打印交互信息。

可选

PARFILE

参数文件名,如果dexp的参数很多,可以存成参数文件

可选

FEEDBACK

每 x 行显示进度 (0)

可选

COMPRESS

是否压缩导出数据文件(N)

可选

COMPRESS_LEVEL

导出数据压缩等级(0-9 默认1)

可选

ENCRYPT

导出数据是否加密 (N)

可选,

ENCRYPT_PASSWORD

导出数据的加密密钥

和ENCRYPT同时使用

ENCRYPT_NAME

导出数据的加密算法

可选。

和ENCRYPT、ENCRYPT_PASSWORD同时使用。缺省为RC4

FILESIZE

用于指定单个导出文件大小的上限。可以按字节[B]、K[B]、M[B]、G[B]的方式指定大小

可选

FILENUM

多文件导出时,一个模板可以生成文件数,范围为[1,99],缺省为99

可选

DROP

导出后删除原表,但不级联删除 (N)

可选

DESCRIBE

导出数据文件的描述信息,记录在数据文件中

可选

FLASHBACK_SCN

用于指定导出表数据的闪回LSN,和FLASHBACK_TIME一起使用时只有一个能生效,参数位置靠后的生效

可选

FLASHBACK_TIME

用于指定导出表数据的闪回时间,和FLASHBACK_SCN一起使用时只有一个能生效,参数位置靠后的生效

可选

COL_DEFAULT_SEPARATE

是否单独导出列,缺省值 (Y)

可选

WITH_UR

导出表数据是否允许脏读(N)

可选

SIMPLE_LOG

导出日志是否使用简要日志(N)

可选

CTRL_INFO

控制信息用来控制一些特殊情况导出,缺省为0

可选

CONFIG_FILE

配置文件路径,配置默认连接串和密码信息

可选

HELP

显示帮助信息

可选

注意

每个参数含义后面的括号内为(N)则表示该参数缺省为否,为(Y)则表示为是,虽然参数大部分为可选参数,但后台这些参数都会传到服务器,此时参数的值就是缺省值。

PARALLEL=4       #线程数。整数类型,取值范围:1~100,缺省为1。

TABLE_POOL=5     #用于设置导出过程中存储表数据的缓冲区个数。整数类型,取值范围:1~20,缺省为 1, 当LTABLE_POOL稍大于LTABLE_PARALLEL时结果为最优。(可选参数)

TABLE_PARALLEL=2  #线程数。整数类型,取值范围:1~50,缺省为 1。用于指定导出每张表所使用的线程数。可选参数,缺省为单线程. CPU核数为N的话,一般设置为N或者N+1

CONSTRAINTS=Y/N   #设置是否导出约束,可选参数。取值范围:Y/N。Y:导出约束,缺省

值;N:不导出约束。

TABLESPACE=N/Y     #设置导出的对象定义中是否包含表空间,可选参数。取值范围:N/Y。N:不包含表空间,缺省值;Y:包含表空间。

GRANTS=Y/N         #设置是否导出权限,可选参数。取值范围:Y/N。Y:导出权限,缺省值;N:不导出权限。

INDEXES=Y/N        #设置是否导出索引,可选参数。取值范围:Y/N。Y:导出索引,缺省值;N:不导出索引。

TRIGGERS=Y/N       #设置是否导出触发器,可选参数。取值范围:Y/N。Y:导出触发器,缺省值;N:不导出触发器。

ROWS=Y/N           #设置是否导出数据,可选参数。取值范围:Y/N。Y:导出数据,缺省值;N:不导出数据。

LOG_WRITE=Y/N       #用于日志信息实时写入日志文件。可选参数. Y:一边将日志内容打印到屏幕上,一边将日志内容写入日志文件, N:日志内容先在屏幕上全部打印完毕再写入日志文件,缺省值

COMPRESS=Y/N   #指定是否压缩导出文件。可选参数。缺省为不压缩. Y:压缩, N:不压缩,缺省值

ENCRYPT=Y#设置导出文件加密。如果设置 ENCRYPT=Y,那么默认 COMPRESS=Y,先压缩后加密。

ENCRYPT_PASSWORD=<加密密钥>:#设置加密密钥。支持最大长度为 255。

ENCRYPT_NAME=<加密算法>:#设置加密算法。缺省为 RC4。

2.3 dexp/dexpdp逻辑导出

dexp 工具可以对本地或者远程数据库进行数据库级、用户级、模式级和表级的逻辑备份。备份的内容非常灵活,可以选择是否备份索引、数据行和权限,是否忽略各种约束(外键约束、非空约束、唯一约束等),在备份前还可以选择生成日志文件,记录备份的过程以供查看。dexp 工具名称有两种写法 dexp 和 dexpdp。两者语法完全相同。唯一的区别在于,dexp 导出的文件必须存放在客户端,dexpdp 导出的文件必须存放在服务器端。

语法如下:

dexp PARAMETER=<value> { PARAMETER=<value> }

dexpdp  PARAMETER=<value> { PARAMETER=<value> }

      1. 数据库级(FULL)全库导出
  1. dexp导出

# mkdir -p /data/expback

# chown -R dmdba:dinstall /data/expback

# chmod -R 775 /data/expback

$ dexp USERID=SYSDBA/SYSDBA2023@127.0.0.1:5236 FILE=omp_%U.dmp LOG=omp_`date +%Y%m%d%H%M`.log  DIRECTORY=/data/expback PARALLEL=4 TABLE_POOL=5 TABLE_PARALLEL=2 FULL=Y

  1. dexpdp导出(开并行)

# mkdir -p /data/expdpback

# chown -R dmdba:dinstall /data/expdpback

# chmod -R 775 /data/expdpback

$ dexpdp USERID=SYSDBA/SYSDBA2023@127.0.0.1:5236 FILE=ompexpdp_%U.dmp LOG=ompexpdp_`date +%Y%m%d%H%M`.log  DIRECTORY=/data/expdpback  PARALLEL=4 TABLE_POOL=5 TABLE_PARALLEL=2 FULL=Y

  1. dexpdp导出(加密导出)

$ dexpdp USERID=SYSDBA/SYSDBA2023@127.0.0.1:5236 FILE=ompexpdp_%U.dmp LOG=ompexpdp_`date +%Y%m%d%H%M`.log  DIRECTORY=/data/expdpback  PARALLEL=4 TABLE_POOL=5 TABLE_PARALLEL=2 ENCRYPT=Y ENCRYPT_PASSWORD=abcdefg ENCRYPT_NAME=DES_CBC FULL=Y

加密算法:

DES_ECB、DES_CBC、DES_CFB、DES_OFB、DESEDE_ECB、DESEDE_CBC、DESEDE_CFB、DESEDE_OFB、AES128_ECB、AES128_CBC、AES128_CFB、AES128_OFB、AES192_ECB、AES192_CBC、AES192_CFB、AES192_OFB、AES256_ECB、AES256_CBC、AES256_CFB、AES256_OFB

      1. 用户级(OWNER)用户导出
  1. 单用户

$dexp USERID=SYSDBA/SYSDBA2023 FILE=omp_user_%U.dmp LOG=omp_`date +%Y%m%d%H%M`.log  DIRECTORY=/data/expbackup OWNER=OMP PARALLEL=4 TABLE_POOL=5 TABLE_PARALLEL=2

  1. 多用户

$./dexp USERID=SYSDBA/SYSDBA2023 FILE=omp_fms_%U.dmp LOG=omp_fms_`date +%Y%m%d%H%M`.log  DIRECTORY=/data/expbackup OWNER=OMP,FMS PARALLEL=4 TABLE_POOL=5 TABLE_PARALLEL=2

$./dexpdp USERID=SYSDBA/SYSDBA2023 FILE=omp_fms_%U.dmp LOG=omp_fms_`date +%Y%m%d%H%M`.log  DIRECTORY=/data/expbackup OWNER=OMP,FMS PARALLEL=4 TABLE_POOL=5 TABLE_PARALLEL=2

      1. 模式级(SCHEMAS)

说明

一般情况下,OWNER与SCHEMAS导入导出是相同的。 但是用户可以包含多个模式,在这种情况下SCHEMAS的导入导出是OWNER导入导出的一个子集。

schema(模式)是数据库的组织和结构。模式中包含了schema对象,可以是表(table)、列(column)、数据类型(data type)、视图(view)、存储过程(stored procedures)、关系(relationships)、主键(primary key)、外键(foreign key)等。

模式是一组相互关联的数据库对象,如表,表列,列的数据类型,索引,外键等等

--单用户

$./dexp USERID=SYSDBA/SYSDBA2023 FILE=omp_user_%U.dmp LOG=omp_`date +%Y%m%d%H%M`.log  DIRECTORY=/data/expbackup schemas=OMP PARALLEL=4

$./dexp USERID=SYSDBA/SYSDBA2023 FILE=omp_fms_%U.dmp LOG=omp_fms_`date +%Y%m%d%H%M`.log  DIRECTORY=/data/expbackup schemas=OMP,FMS PARALLEL=4

      1. 表级(TABLES)
        1. 单表多表导出

# mkdir -p /data/exptable

# chown -R dmdba:dinstall /data/exptable

# chmod -R 775 /data/exptable

$ dexp USERID=SYSDBA/SYSDBA2023 FILE=omp_table_%U.dmp LOG=omp_table_`date +%Y%m%d%H%M`.log  DIRECTORY=/data/exptable TABLES=omp.year_2001,fms.year_2001 PARALLEL=4

# mkdir -p /data/expdptable

# chown -R dmdba:dinstall /data/expdptable

# chmod -R 775 /data/expdptable

$ dexpdp USERID=SYSDBA/SYSDBA2023@127.0.0.1:5236 FILE=omp_table_%U.dmp LOG=omp_table_`date +%Y%m%d%H%M`.log  DIRECTORY=/data/expdptable TABLES=omp.year_2001,fms.year_2001 PARALLEL=4

        1. 表模糊导出

FUZZY_MATCH 用于指定 TABLES 选项是否支持模糊匹配。可选参数,缺省为 N

N:TABLES 选项不支持模糊匹配,指定的表名与数据库中的表名必须精确匹配,缺省值;

Y:TABLES 选项支持模糊匹配,指定的表名与数据库中的表名采用 LIKE 模糊查询匹配。

$ dexpdp USERID=SYSDBA/SYSDBA2023@127.0.0.1:5236 FILE=omp_table_%U.dmp LOG=omp_table_`date +%Y%m%d%H%M`.log  DIRECTORY=/data/expdptable TABLES=OMP.year% FUZZY_MATCH=Y PARALLEL=4

        1. 表不导出表数据(只导表结构)

$ dexpdp USERID=SYSDBA/SYSDBA2023@127.0.0.1:5236 FILE=omp_table_%U.dmp LOG=omp_table_`date +%Y%m%d%H%M`.log  DIRECTORY=/data/expdptable TABLES=omp.year_2001 PARALLEL=4  ROWS=N

$ dexpdp USERID=SYSDBA/SYSDBA2023@127.0.0.1:5236 FILE=omp_table_%U.dmp LOG=omp_table_`date +%Y%m%d%H%M`.log  DIRECTORY=/data/expdptable PARALLEL=4  FULL=Y ROWS=N

  1. DM8逻辑恢复(dimp/dimpdp)
    1. 逻辑恢复参数说明

参数

含义

备注

USERID

数据库的连接信息

必选

FILE

输入文件,即 dexp 导出的文件 

必选

DIRECTORY

导入文件所在目录 

可选

FULL

导入整个数据库

可选,四者中选其一。
缺省为 SCHEMAS

OWNER

导入指定的用户名下的模式

SCHEMAS

导入的模式列表

TABLES

表名列表,指定导入的 tables 名称。不支持对外部,表进行导入

PARALLEL

用于指定导入的过程中所使用的线程数目

可选

TABLE_PARALLEL

用于指定导入的过程中每个表所使用的子线程数目

可选。在FAST_LOAD 为 Y 时有效

具体参数查看《DM8_dexp和dimp使用手册》

    1. dimp/dimpdp逻辑导入
      1. 数据库级(FULL)全库恢复

$ cd $DM_HOME

$ dimp USERID=SYSDBA/SYSDBA2023@127.0.0.1:5236  FILE=ompexpdp_01.dmp LOG=omp_`date +%Y%m%d%H%M`.log  DIRECTORY=/data/expback PARALLEL=4

$ dimpdp USERID=SYSDBA/SYSDBA2023@127.0.0.1:5236  FILE=ompexpdp_01.dmp LOG=omp_`date +%Y%m%d%H%M`.log  DIRECTORY=/data/expdpback PARALLEL=4

注:如果没有提前建表空间,会默认导入MAIN表空间。

      1. 用户级(OWNER)某个用户恢复

--单用户

$./dimp USERID=SYSDBA/SYSDBA2023 FILE=omp_user_%U.dmp LOG=omp_`date +%Y%m%d%H%M`.log  DIRECTORY=/data/expbackup OWNER=OMP PARALLEL=4

--多用户

$./dimp USERID=SYSDBA/SYSDBA2023 FILE=omp_fms_%U.dmp LOG=omp_fms_`date +%Y%m%d%H%M`.log  DIRECTORY=/data/expbackup OWNER=OMP,FMS PARALLEL=4

$./dimpdp USERID=SYSDBA/SYSDBA2023 FILE=omp_fms_%U.dmp LOG=omp_fms_`date +%Y%m%d%H%M`.log  DIRECTORY=/data/expbackup OWNER=OMP,FMS PARALLEL=4

      1. 模式级(SCHEMAS)恢复

$./dimp USERID=SYSDBA/SYSDBA2023 FILE=omp_fms_01.dmp LOG=omp_fms_`date +%Y%m%d%H%M`.log  DIRECTORY=/data/expbackup schemas=OMP,FMS PARALLEL=4

$./dimpdp USERID=SYSDBA/SYSDBA2023 FILE=omp_fms_01.dmp LOG=omp_fms_`date +%Y%m%d%H%M`.log  DIRECTORY=/data/expbackup schemas=OMP,FMS PARALLEL=4

      1. 表级(TABLES)恢复

$./dimp USERID=SYSDBA/SYSDBA2023 FILE=omp_table_%U.dmp LOG=omp_table_`date +%Y%m%d%H%M`.log  DIRECTORY=/data/expbackup TABLES=omp.year_2001,fms.year_2001 PARALLEL=4

$./dimpdp USERID=SYSDBA/SYSDBA2023 FILE=omp_table_%U.dmp LOG=omp_table_`date +%Y%m%d%H%M`.log  DIRECTORY=/data/expbackup TABLES=omp.year_2001,fms.year_2001 PARALLEL=4

  1. DM8物理备份(联机备份)
    1. 联机备份参数说明

COMPRESSED是否对备份数据进行压缩处理。LEVEL 表示压缩等级,取值范围 0~9:

0 表示不压缩;1 表示 1 级压缩;9 表示 9 级压缩。压缩级别越高,压缩速度越慢,但压缩比越高。若指定COMPRESSED,但未指定LEVEL,则压缩等级默认1;若未指定COMPRESSED,则默认不进行压缩处理。

WITHOUT LOG联机数据库备份是否备份联机日志。如果使用,则表示不备份,否则表示备份。如果使用了 WITHOUT LOG 参数,则使用 DMRMAN 工具还原时,必须指定 WITHARCHIVEDIR 参数。

WITHOUT MIRROR联机数据库备份是否备份镜像文件。如果使用,则表示不备份,否则表示备份。

TRACE FILE指定生成的TRACE文件。启用TRACE,但不指定 TRACE FILE 时,默认在 DM 数据库系统的 log 目录下生成 DM_SBTTRACE_年月.log 文件;若使用相对路径,则生成在执行码同级目录下;若用户指定 TRACE FILE,则指定的文件不能为已经存在的文件,否则报错。TRACE FILE 不可以为 ASM 文件。

TRACE LEVEL是否启用 TRACE。有效值 1、2,默认为 1 表示不启用 TRACE,此时若

指定了 TRACE FILE,会生成 TRACE 文件,但不写入 TRACE 信息;为 2 启用 TRACE 并在

TRACE 文件中写入 TRACE 相关内容。

TASK THREAD备份过程中数据处理过程线程的个数,取值范围 0~64,默认为 4。若指定为 0,则调整为 1;若指定超过当前系统主机核数,则调整为主机核数。线程数(TASKTHREAD)*并行数(PARALLEL)不得超过 512。

PARALLEL指定并行备份的并行数和拆分块大小。并行数取值范围 0~128。若不指定并行数,则默认为 4,若指定为 0 或者 1 均认为非并行备份。若未指定关键字 PARALLEL,则认为非并行备份。并行备份不支持存在介质为 TAPE 的备份。线程数(TASK THREAD)*并行数(PARALLEL)不得超过 512。READ SIZE 指定并行备份大数据量的数据文件时的拆分块大小,默认为 1GB,最小为 512MB,当指定的拆分块大小小于 512MB 时,系统会自动调整为 512MB。若指定并行备份,但未指定拆分块大小,则直接使用默认拆分块大小进行拆分。当数据文件的大小小于拆分块大小时,不执行拆分;当数据文件的大小大于拆分块大小时,执行拆分。并行数不能大于拆分之后的总块数。

FROM LSN用于增量备份中,指定备份的起始 LSN。起始 LSN 必须小于等于检查点 LSN,

用户可以手动刷新检查点 LSN。仅支持库级增量备份。

CUMULATIVE用于增量备份中,指明为累积增量备份类型,若不指定则缺省为差异增量备份类型。

WITH BACKUPDIR:用于增量备份中,指定基备份的搜索目录,最大长度为 256 个字节。若缺省,自动在以下路径中搜索:默认备份目录(即 BAK_PATH 配置的路径,如果BAK_PATH 没有配置,则使用 SYSTEM_PATH 配置的路径)、当前备份集目录(即BACKUPSET 指定的路径,例如 BACKUPSET'D:\ bakrman\db_bak'的路径)、当前备份集目录的上一级目录(例如'D:\bakrman')搜索基备份。如果基备份不在上述路径下,增量备份必须指定该参数。BASE ON BACKUPSET:用于增量备份中,指定基备份集路径。

READ SPEED备份时读速度上限,取值范围 0~2147483647,单位为 MB/S,0 表示无限制。

WRITE SPEED:备份时写速度上限,取值范围 0~2147483647,单位为 MB/S,0 表示无限制。

使用说明:

1. 备份成功后会在<备份集路径>或者默认备份目录下生成备份集。备份集中包括一

个备份元数据文件,后缀.meta,以及一个或多个备份片文件,后缀.bak。

2. 当备份数据超过限制大小时,会生成新的备份文件,新的备份文件名是初始文件名

后加文件编号。

3. 系统处于归档模式下时,才允许进行数据库联机备份。若备份库为 DSC 集群实例,

且未指定 WITHOUT LOG,则需要配置远程归档。

4. MOUNT 状态下,不允许进行数据库备份。

5. DDL_CLONE 库备份集不能作为增量备份的基备份,仅能用于库级还原。

6. 通过指定 FROM LSN 生成的库备份集不能作为增量备份的基备份,仅能用于库级

还原。

7. 在执行联机数据库备份过程中,如果报错归档不完整,则需要首先刷新检查点,才

能正常备份。例如:select checkpoint(50);。

    1. 联机备份(在线备份)

环境要求:数据库处于运行状态+归档模式,使用disql工具进行在线备份。

建目录

$ mkdir -p /data/backup/(后面的目录系统自己建)

      1. 全库全量备份

$ disql SYSDBA/SYSDBA2023@127.0.0.1:5236

SQL> BACKUP DATABASE FULL BACKUPSET '/data/backup/db_full_backup_01';

或者

SQL> BACKUP DATABASE BACKUPSET '/data/backup/db_full_backup_01';

注:备份类型:分为完全备份 FULL 和增量备份 INCREMENT 两种。缺省为 FULL

全库加参数备份(压缩备份)

SQL> BACKUP DATABASE FULL BACKUPSET '/data/backup/db_full_backup_01' maxpiecesize 300 compressed level 3 parallel 4;

或者

SQL> backup database to ompdb_full_back backupset '/data/backup/full_backup_20240107' backupinfo '完全备份' maxpiecesize 300 compressed level 5 parallel 4;

  1. to ompdb_full_back:指定备份名
  2. backupinfo '完全备份':指定备份描述信息
  3. maxpiecesize 300:用于控制单个备份片大小,当备份片超过限制时会生成新的备份片,单位为 MB,最小为 128MB,32 位系统最大可设置为2GB,64位系统最大可设置为128GB。如果不设置该参数则默认为2GB
  4. compressed level 5:设置压缩级别(0~9)
  5. parallel 4:指定备份并行线程数为4

      1. 全库增量备份

全库增量备份,基于上一次全库备份做增量备份

SQL> backup database increment backupset '/data/backup/db_increment_01';

全库增量备份,指定基于上一次表空间基础备份或增量备份

SQL> backup database increment base on backupset  '/data/backup/db_full_backup_01' backupset '/data/backup/db_increment_03';

SQL> backup database increment WITH BACKUPDIR '/data/backup' backupset '/data/backup/db_increment_02';

      1. 表空间全量备份

$ mkdir -p /data/backup/tablespace

SQL> backup tablespace OMP_TS BACKUPSET '/data/backup/omp_ts_tablespace';

      1. 表空间第一次增量备份

表空间增量备份,基于上一次备份

SQL> backup tablespace OMP_TS increment backupset '/data/backup/omp_ts_tablespace_increment01';

      1. 表空间第二次增量备份

#表空间增量备份,基于上一次表空间全备份

SQL> backup tablespace OMP_TS increment base on backupset '/data/backup/omp_ts_tablespace' backupset '/data/backup/omp_ts_tablespace_increment02';

#表空间增量备份,基于上一次表空间增量备份

SQL> backup tablespace OMP_TS increment base on backupset '/data/backup/omp_ts_tablespace_increment01' backupset '/data/backup/omp_ts_tablespace_increment03';

      1. 表备份

环境要求:数据库处于运行状态,开没开归档都可以。

备份表

SQL> backup table OMP.year_2001 backupset '/data/backup/omp_table_year2001';
使用说明:
1. 仅支持对用户的非分区的行存储表和堆表进行备份,不支持对分区表的备份。在非
分区表中,也不支持对临时表、物化视图表、物化视图附属表、日志表和特定模式
(DBG_PKG/INFORMATION_SCHEMA/INFO_SCHEM/SYSREP/SYSGEO/SYSJOB/SYS
CPT/SYS)下的表进行表备份。
2. 表的列类型为对象类型的表不支持表备份。
3. 表备份不备份表上的注释以及 default 表达式中的函数定义,因此还原时需用户自
行确认。
4. 当备份数据超过限制大小时,会生成新的备份文件,新的备份文件名是初始文件名
后加文件编号。
5. 表备份时,其所属表空间必须处于联机状态。
6. 目前表备份不支持备份到 TAPE 介质上。
      1. 归档备份

在 disql 工具中使用 BACKUP 语句可以备份归档日志。归档备份的前提:

* 数据库必须配置归档;

* 归档文件的 db_magic、permanent_magic 值和数据库的 db_magic、permanent_magic 值必须一样;

 * 归档日志必须连续,如果出现不连续的情况,前面的连续部分会忽略,仅备份最新的连续部分。 

SQL> backup archive log all BACKUPSET  '/data/backup/arch_log_backup';

说明:

ALL:备份所有的归档。若不指定,则默认为 ALL。

FROM LSN:指定备份的起始 LSN。

UNTIL LSN:指定备份的截止 LSN

归档日志的有效  LSN  范围(起始  LSN ,截止  LSN )可以通过v$ARCH_FILE  查看

FROM TIME:指定备份的开始的时间点。

UNTIL TIME:指定备份的截止的时间点。

BETWEEN ... AND ...:指定备份的区间。指定区间后,只会备份指定区间内的归档文件。

BACKUPSET:指定当前备份集生成路径,若指定为相对路径,则在数据库的默认备份目录中生成备份集。若不指定具体备份集路径,则在数据库的默认备份目录下,以约定归档

备份集命名规则生成默认的归档备份集目录。

DEVICE TYPE:指存储备份集的介质类型,支持 DISK 和 TAPE,默认 DISK

COMPRESSED:是否对备份数据进行压缩处理。LEVEL 表示压缩等级,取值范围 0~9:

0 表示不压缩;1 表示 1 级压缩;9 表示 9 级压缩。

      1. LSN范围归档备份

确定 LSN 范围

SQL> select ARCH_LSN,CLSN,PATH from V$ARCH_FILE;

//通过查询结果选出备份的起始LSN和截至LSN。比如 140507 191529

SQL> BACKUP ARCHIVELOG LSN BETWEEN 140507 AND 191529 BACKUPSET '/data/backup/arch_bak_140507-191529';

  1. 拷贝备份文件到备库所在机器

$ scp -rp /dm8/back/* 84.0.191.6:/dm8/back

    1. 联机还原(在线还原)
      1. 数据库脱机还原

数据库还原只能通过脱机还原

  1. 对主库进行联机备份操作

$ disql SYSDBA/SYSDBA2023@127.0.0.1:5236

SQL> BACKUP DATABASE BACKUPSET '/dm8/back';

  1. 拷贝备份文件到备库所在机器

$ scp -rp /dm8/back/* 84.0.191.6:/dm8/back

  1. 数据库脱机还原

$/dm8/dmdbms/bin/DmServiceCUGDB stop

$/dm8/dmdbms/bin/dmrman CTLSTMT="RESTORE DATABASE '/dm8/data/CUGDB/dm.ini' FROM BACKUPSET '/dm8/back'"

$/dm8/dmdbms/bin/dmrman CTLSTMT="RECOVER DATABASE '/dm8/data/CUGDB/dm.ini' FROM BACKUPSET '/dm8/back'"

$/dm8/dmdbms/bin/dmrman CTLSTMT="RECOVER DATABASE '/dm8/data/CUGDB/dm.ini' UPDATE DB_MAGIC"

  1. DM8物理备份(脱机备份)
    1. 数据库备份(离线备份)

环境要求:数据库处于关闭状态,使用dmrman工具进行脱机备份。

确认dmap是否启动

$ ps -ef|grep dmap

若未启动,则先启动 DMAP 服务

$ /dm8/dmdbms/bin/DmAPService start

正常关闭主机数据库

$ /dm8/dmdbms/bin/DmServiceCUGDB stop

      1. 全库备份

#命令行

$ /dm8/dmdbms/bin/dmrman CTLSTMT="BACKUP DATABASE '/dm8/data/CUGDB/dm.ini' FULL BACKUPSET '/data/backup/rman_bak'"

#DMRMAN工具

$ /dm8/dmdbms/bin/dmrman

RMAN> backup database '/dm8/data/CUGDB/dm.ini' FULL BACKUPSET  '/data/backup/rman_bak';

      1. 增量备份(基于上一次备份)

增量备份(基于上一次备份)

$ /dm8/dmdbms/bin/dmrman CTLSTMT="backup database '/dm8/data/CUGDB/dm.ini' increment backupset '/data/backup/rman_increment_01'"

RMAN> backup database '/dm8/data/CUGDB/dm.ini' increment backupset  '/data/backup/rman_increment_01';

      1. 增量备份(基于前面全备或增量备份)

$ /dm8/dmdbms/bin/dmrman CTLSTMT="backup database '/dm8/data/CUGDB/dm.ini' increment with backupdir '/data/backup/rman_bak' backupset '/data/backup/rman_increment_02'"

--基于前面全备做增量1备份

RMAN> backup database '/dm8/data/CUGDB/dm.ini' increment with backupdir '/data/backup/rman_bak' backupset '/data/backup/rman_increment_02';

--基于前面增量1做增量2备份

RMAN> backup database '/dm8/data/CUGDB/dm.ini' increment with backupdir  '/data/backup/rman_increment_02' backupset '/data/backup/rman_increment_03';

      1. 导出备份集信息

导出备份集中数据文件路径信息到mapped.txt

RMAN> dump backupset '/data/backup/rman_bak' device type disk mapped file '/data/backup/mapped.txt';

$ cat mapped.txt

fil_id         = 0

ts_id          = 5

ts_name        = "OMP_TS"

data_path      = "/dm8/data/CUGDB/OMPTS01.DBF"

mirror_path    =

data_mirror    = 1

data_striping  = 0

      1. 导出dm.ini信息

指定dm.ini,导出调整后的数据文件路径信息到mapped1.txt

RMAN> dump backupset '/data/backup/rman_bak' device type disk database '/dm8/data/CUGDB/dm.ini' mapped file  '/data/backup/mapped1.txt';

    1. 归档备份(离线备份)

RMAN> backup archive log all database '/data/dmdbms/data/DAMENG/dm.ini' backupset '/backup/archlog_backup_20230214';

或者

直接将归档目录拷贝到其它位置,物理拷贝备份。

SQL> select sf_bakset_check('disk','/data/backup/rman_bak');

  • disql删除备份集

SQL> select sf_bakset_remove('disk','/backup/dm_bak/backup_01');

  • dmrman查看备份集有效性

RMAN> check backupset '/backup/dm_bak/backup_01'; 

  • dmrman查看备份集信息,包含:DB信息、备份信息、数据文件等信息

RMAN> show backupset '/backup/backup_01';

  • dmrman使用with backupdir参数查看多个备份集信息

RMAN> show backupset with backupdir '/backup/backup_01','/backup/backup_02';

  • 删除备份集

RMAN> remove backupset '/backup/backup_01';

  1. DM8物理恢复(脱机恢复)
    1. 检查备份集有效性

RMAN> check backupset '/data/backup/rman_bak';

    1. 数据库还原与恢复(脱机还原)
      1. 数据库还原

#命令行

$ /dm8/dmdbms/bin/dmrman CTLSTMT=" restore database '/dm8/data/CUGDB/dm.ini' from backupset  '/data/backup/rman_bak'"

#DMRMAN工具

RMAN> restore database '/dm8/data/CUGDB/dm.ini' from backupset  '/data/backup/rman_bak';

      1. 数据库恢复(重做备份集中的REDO日志)

使用 RECOVER 命令完成数据库恢复工作,可以是基于备份集的恢复工作,也可以是使用本地归档日志的恢复工作。数据库恢复是指重做 REDO 日志。

方式一:从备份集恢复,即重做备份集中的 REDO 日志

#命令行

$ /dm8/dmdbms/bin/dmrman CTLSTMT="recover database '/dm8/data/CUGDB/dm.ini' from backupset '/data/backup/rman_bak'"

#DMRMAN工具

RMAN> recover database '/dm8/data/CUGDB/dm.ini' from backupset '/data/backup/rman_bak';

      1. 数据库恢复(利用归档日志进行前滚)

方式二:从归档恢复,即重做归档中的 REDO 日志。

指定归档目录进行恢复,默认不指定路径会使用dmarch.ini配置的路径进行前滚

#命令行

$ /dm8/dmdbms/bin/dmrman CTLSTMT="recover database '/dm8/data/CUGDB/dm.ini' with archivedir '/dm8/data/arch'"

#DMRMAN工具

RMAN> recover database '/dm8/data/CUGDB/dm.ini' with archivedir '/dm8/data/arch';

      1. 数据库更新DB_MAGIC

数据库更新是指更新数据库的DB_MAGIC,并将数据库调整为可正常工作状态,与数据库恢复一样使用 RECOVER 命令完成。数据库更新发生在重做 REDO 日志恢复数据库后。

#命令行

$ /dm8/dmdbms/bin/dmrman CTLSTMT="recover database '/dm8/data/CUGDB/dm.ini' update DB_MAGIC"

#DMRMAN工具

RMAN> recover database '/dm8/data/CUGDB/dm.ini' update DB_MAGIC;

    1. 表空间还原和恢复
      1. 表空间还原

使用 RESTORE 命令完成表空间的脱机还原,还原的备份集可以是联机或脱机生成的库备份集,也可以是联机生成的表空间备份集。脱机表空间还原仅涉及表空间数据文件的重建与数据页的拷贝。不需要事先设置目标表空间为 OFFLINE 状态。

表空间还原后,表空间状态被置为 RES_OFFLINE,并设置数据标记 FIL_TS_RECV_STATE_RESTORED,表示经过还原但数据不完整。

表空间还原命令如下:

RMAN> restore database '/data/dmdbms/data/DAMENG/dm.ini' tablespace GAOYU from backupset '/backup/tablespace_gaoyu_backup';

      1. 表空间恢复

表空间恢复通过重做 REDO 日志,以将数据更新到一致状态。由于日志重做过程中,修改好的数据页首先存入缓冲区,缓冲区分批次将修改好的数据页写入磁盘,如果在此过程中发生异常中断,可能导致缓冲区中的数据页无法写入磁盘,造成数据的不一致,数据库启动时校验失败,所以表空间恢复过程中不允许异常中断。

恢复完成后,表空间状态置为 ONLINE,并设置数据标记为 FIL_TS_RECV_STAT_RECOVERED,表示数据已恢复到一致状态。恢复表空间命令如下:

RMAN> recover database '/data/dmdbms/data/DAMENG/dm.ini' tablespace GAOYU;

表空间恢复后不需要更新DB_MAGIC。 

    1. 归档备份还原和修复
      1. 归档离线备份

恢复归档到指定目录

RMAN> restore archive log from backupset '/backup/archlog_backup_20230214' to archivedir '/backup/archlog_restore';

      1. 修复归档日志

当DM数据库异常宕机后,需要在DMRMAN交互模式下执行repair archivelog修复动作确保buffer中的联机日志刷新到本地的REDO日志中,否则后面使用备份恢复的时可能因为归档日志不完整导致恢复失败或者修复后缺少部分数据。

RMAN> repair archive log database '/data/dmdbms/data/DAMENG/dm.ini';

    1. 数据库联机备份与脱机还原
      1. 数据库还原

#命令行

$/dm8/dmdbms/bin/DmServiceCUGDB stop

$/dm8/dmdbms/bin/dmrman CTLSTMT="recover database '/dm8/data/CUGDB/dm.ini' from backupset '/data/backup/rman_bak'"

#DMRMAN工具

RMAN> recover database '/dm8/data/CUGDB/dm.ini' from backupset '/data/backup/rman_bak';

      1. 数据库恢复

#命令行

$/dm8/dmdbms/bin/dmrman CTLSTMT="RECOVER DATABASE '/dm8/data/CUGDB/dm.ini' FROM BACKUPSET '/data/backup/rman_bak'"

#DMRMAN工具

RMAN> RECOVER DATABASE '/dm8/data/CUGDB/dm.ini' FROM BACKUPSET '/data/backup/rman_bak'

      1. 数据库更新

#命令行

$/dm8/dmdbms/bin/dmrman CTLSTMT="RECOVER DATABASE '/dm8/data/CUGDB/dm.ini' UPDATE DB_MAGIC"

#DMRMAN工具

RMAN> "RECOVER DATABASE '/dm8/data/CUGDB/dm.ini' UPDATE DB_MAGIC

  1. 数据库备份还原小结
    1. 确认主库 dmap 是否启动

$ ps -ef|grep dmap

若未启动,则先启动 DMAP 服务

$ /dm8/dmdbms/bin/DmAPService start

Starting DmAPService:                                      [ OK ]

    1. 脱机备份与脱机还原方式
  1. 正常关闭主机数据库

$ /dm8/dmdbms/bin/DmServiceCUGDB stop

  1. 进行脱机备份

$ /dm8/dmdbms/bin/dmrman CTLSTMT="BACKUP DATABASE '/dm8/data/CUGDB/dm.ini' FULL BACKUPSET '/dm8/data/backup'"

  1. 拷贝备份文件到备库所在机器

$ scp -rp /dm8/data/backup/* 84.0.191.6:/dm8/data/backup

  1. 执行脱机数据库还原与恢复

$/dm8/dmdbms/bin/DmServiceCUGDB stop

$/dm8/dmdbms/bin/dmrman CTLSTMT="RESTORE DATABASE '/dm8/data/CUGDB/dm.ini' FROM BACKUPSET  '/dm8/data/backup'"

$/dm8/dmdbms/bin/dmrman CTLSTMT="RECOVER DATABASE '/dm8/data/CUGDB/dm.ini' UPDATE DB_MAGIC"

    1. 联机备份与脱机还原方式
  1. 对主库进行联机备份操作

$ disql SYSDBA/SYSDBA2023@127.0.0.1:5236

SQL> BACKUP DATABASE BACKUPSET '/dm8/back';

  1. 拷贝备份文件到备库所在机器

$ scp -rp /dm8/back/* 84.0.191.6:/dm8/back

  1. 执行脱机数据库还原与恢复

$/dm8/dmdbms/bin/DmServiceCUGDB stop

$/dm8/dmdbms/bin/dmrman CTLSTMT="RESTORE DATABASE '/dm8/data/CUGDB/dm.ini' FROM BACKUPSET '/dm8/back'"

$/dm8/dmdbms/bin/dmrman CTLSTMT="RECOVER DATABASE '/dm8/data/CUGDB/dm.ini' FROM BACKUPSET '/dm8/back'"

$/dm8/dmdbms/bin/dmrman CTLSTMT="RECOVER DATABASE '/dm8/data/CUGDB/dm.ini' UPDATE DB_MAGIC"

  • 19
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值