达梦数据库备份与恢复

达梦数据库备份与恢复

1.物理备份

联机备份与还原

联机备份还原:联机还原指数据库处于运行状态时,并正常提供数据库服务情况下进行的备份还原操作,称为联机备份。

联机备份数据库必须要配置归档,要求数据库必须配置本地归档且归档必须处于开启状态。

配置归档

##修改数据库为 Mount 状态
ALTER DATABASE MOUNT;

##配置本地归档
ALTER DATABASE ADD ARCHIVELOG 'DEST = /dm8/dm_arch/arch, TYPE = local,FILE_SIZE = 1024, SPACE_LIMIT = 2048';

##开启归档模式
ALTER DATABASE ARCHIVELOG;

##修改数据库为 Open 状态
ALTER DATABASE OPEN;

1.库备份

#创建备份文件存放目录
mkdir /dm8/back
#进入到/dm8/bin
cd /dm8/bin
#打开disql工具
./disql
#执行全备命令
BACKUP DATABASE FULL BACKUPSET '/dm8/bak/db_full_bak_01';

fig:

下面是达梦数据库备份设置的一些选项

设置数据库备份选项

  • 设置联机数据库备份集路径。

##指定备份集路径为 /dm8/dm_bak/db_bak_3_01
##BACKUPSET 参数用于指定备份集的输出路径
BACKUP DATABASE BACKUPSET '/dm8/dm_bak/db_bak_3_01';

  • 设置备份名。

##创建备份集,备份名设置为“WEEKLY_FULL_BAK”
BACKUP DATABASE TO WEEKLY_FULL_BAK BACKUPSET '/dm8/dm_bak/db_bak_3_02';

##备份名的设置不可以使用特殊格式,例如%NAME。

  • 添加备份描述。

##创建备份为备份集添加描述信息为“完全备份”。
##描述信息可以更详细地对备份类型、用途等进行说明
BACKUP DATABASE BACKUPSET '/dm8/dm_bak/db_bak_3_04' BACKUPINFO '完全备份';

  • 限制备份片大小。

##MAXPIECESIZE 参数用于控制单个备份片的大小
##MAXPIECESIZE 不能大于磁盘剩余空间大小,否则报错磁盘空间不足。

##创建备份限制备份片大小为300M
BACKUP DATABASE BACKUPSET '/dm8/dm_bak/db_bak_3_05' MAXPIECESIZE 300;

  • 备份压缩。

##执行备份压缩,压缩级别设置为 5。
BACKUP DATABASE BACKUPSET '/dm8/dm_bak/db_bak_3_06' COMPRESSED LEVEL 5;

##压缩选项有不同的压缩级别可以选择,取值范围为 0~9。
##应根据存储空间、数据文件大小等确定合适地压缩级别

  • 设置并行备份。

##可通过关键字 PARALLEL 指定是否执行并行备份,以及执行并行备份的并行数。

##创建并行备份,指定并行数为8
BACKUP DATABASE BACKUPSET '/dm8/dm_bak/db_bak_3_07' PARALLEL 8;

2.表空间备份

执行表空间备份数据库实例也必须运行在归档模式下

BACKUP TABLESPACE MAIN BACKUPSET 'ts_bak_01';

fig:

设置表空间备份选项

  • 增量备份指定基备份路径。

##以增量备份用户 MAIN 表空间为例,指定 BASE ON BACKUPSET 参数执行增量备份

BACKUP TABLESPACE MAIN BACKUPSET 'ts_full_bak_01';

BACKUP TABLESPACE MAIN INCREMENT BACKUPSET 'ts_increment_bak_01';

BACKUP TABLESPACE MAIN INCREMENT BASE ON BACKUPSET'ts_full_bak_01' BACKUPSET 'ts_increment_bak_02';

  • 完全备份。

BACKUP TABLESPACE MAIN FULL BACKUPSET '/home/dm_bak/ts_full_bak_01';

  • 增量备份。

BACKUP TABLESPACE MAIN INCREMENT WITH BACKUPDIR '/home/dm_bak'BACKUPSET '/home/dm_bak/ts_increment_bak_02';

注意

1.当备份数据超过限制大小时,会生成新的备份文件,新的备份文件名是初始文件名后加文件编号。
2.系统处于归档模式下时,才允许进行表空间备份。
3.Mount 状态下,不允许进行表空间备份。
4.MPP 集群环境不允许进行表空间备份。
5.更多置备份选项可以查看数据库软件安装路径 doc 目录下《DM8 备份还原》手册。

3.表备份

备份表不需要服务器配置归档

#备份集“tab_bak_01”会生成到默认的备份路径下
BACKUP TABLE text BACKUPSET 'tab_bak_02';

fig:

4.归档备份

##备份集“arch_bak_01”会生成到默认的备份路径下。
BACKUP ARCHIVE LOG ALL BACKUPSET 'arch_bak_01';

fig:

管理备份

1.备份目录管理
  1. 添加备份目录。

--SF_BAKSET_BACKUP_DIR_ADD (device_type,backup_dir)
--函数用于添加备份目录

--使用方法:
SELECT SF_BAKSET_BACKUP_DIR_ADD('DISK','/home/dm_bak');

  1. 删除备份目录。

--SF_BAKSET_BACKUP_DIR_REMOVE (device_type,backup_dir)
--函数用于删除备份目录

--使用方法:
SELECT SF_BAKSET_BACKUP_DIR_REMOVE('DISK','/home/dm_bak');

  1. 清理全部备份目录。

--SF_BAKSET_BACKUP_DIR_REMOVE_ALL ()
--函数用于清理全部备份目录

--使用方法:
SELECT SF_BAKSET_BACKUP_DIR_REMOVE_ALL();

2.备份集校验与删除
  1. 备份集校验。

--SF_BAKSET_CHECK (device_type,backup_dir)
SELECT SF_BAKSET_CHECK ('DISK','/home/dm_bak/db_bak_for_check');

  1. 备份集删除。

SF_BAKSET_REMOVE
--删除指定设备类型和指定备份集目录地备份集

SF_BAKSET_REMOVE_BATCH
--批量删除满足指定条件的所有备份集

SP_DB_BAKSET_REMOVE_BATCH
--批量删除指定时间之前的数据库备份集

SP_TS_BAKSET_REMOVE_BATCH
--批量删除指定表空间对象及指定时间之前的表空间备份集

SP_TAB_BAKSET_REMOVE_BATCH
--批量删除指定表对象及指定时间之前的表备份集。

SP_ARCH_BAKSET_REMOVE_BATCH
--批量删除指定时间之前的归档备份集。

数据还原

达梦数据库仅支持表的联机还原,数据库、表空间和归档日志的还原必须通过脱机工具 DMRMAN 执行。

输入以下 RESTORE 语句即可还原表:
RESTORE TABLE text FROM BACKUPSET 'tab_bak_01';

fig:

此处可以看到还原表数据但是因为表中有索引,但是索引和没有恢复完成,存在索引的冗余。

##不创建索引恢复
restore table text without index with constraint from backupset 'tab_bak_02';

fig:

脱机备份与还原

脱机备份还原:脱机还原指数据库处于关闭状态时执行的还原操作。库备份、表空间备份和归档备份,可以执行脱机还原。脱机还原操作的目标库必须处于关闭状态。

脱机备份数据库可配置归档也可以不配置。正常退出的库的备份不需要考虑本地归档日志的完整性,可以不配置归档;但对于故障退出的库的备份要求因故障未刷盘的日志也必须存在于本地归档中,因此必须配置归档。

备份集:备份集用来存放备份过程中产生的备份数据及备份信息。一个备份集对应了一次完整的备份。一般情况下,一个备份集就是一个目录,备份集包含一个或多个备份片文件,以及一个备份元数据文件。

DMRMAN 工具

DMRMAN(DM RECOVERY MANAGER)是脱机备份还原命令行工具,无需额外安装,由它来统一负责库级脱机备份、脱机还原、脱机恢复等相关操作,该工具支持命令行指定参数方式和控制台交互方式执行,降低用户的操作难度。

##进入安装目录下
cd /dm8/bin
##运行服务
./dmrman

fig:

因表空间备份和表备份都只能在联机状态下进行,因此脱机状态下的数据备份只包括数据库备份归档备份

#注意在执行操作前必须关闭数据库
BACKUP DATABASE '/dm/data/DAMENG/dm.ini'FULL BACKUPSET'/dm8/dm_bak/db_full_bak_01';

如果显示连接dmap失败需要手动打开dmap。

fig:

[dmdba@dm01 /dm8/data]$ cd /dm8/bin
[dmdba@dm01 /dm8/bin]$ ./dmap
dmap V8
dmap is ready

创建增量备份

增量备份指基于指定的库的某个备份(完全备份或者增量备份),备份自该备份以来所有发生修改了的数据页。脱机增量备份要求两次备份之间数据库必须有操作,否则备份会报错。

BACKUP DATABASE '/dm/data/DAMENG/dm.ini' INCREMENT WITH BACKUPDIR '/dm8/dm_bak'BACKUPSET '/dm8/dm_bak/db_increment_bak_02';

归档备份

使用 DMRMAN 备份归档需要设置归档,否则会报错。同时,归档备份得是归档日志,防止归档日志的丢失导致重要数据缺失。

BACKUP ARCHIVE LOG ALL DATABASE '/dm/data/DAMENG/dm.ini' BACKUPSET '/dm8/dm_bak/arch_all_bak_01';

备份管理

管理备份一个重要的目的是删除不再需要的备份。DMRMAN 工具提供 SHOW、CHECK、REMOVE、LOAD 等命令分别用来查看、校验、删除和导出备份集。

备份信息查看

DMRMAN 中使用 SHOW 命令可以查看备份集的信息,若指定具体备份集目录,则会生成相应的备份集链表信息。使用方法如下:

##查看单个备份集信息
RMAN> show backupset '/home/test/yy/dm_bak/db_full_bak_01'

##批量显示备份集信息
##SHOW BACKUPSETS...命令用于批量显示指定搜索目录下的备份集信息。
##可通过WITH BACKUPDIR 参数指定多个备份集搜索目录,同时查看所有的备份集。
RMAN>BACKUP DATABASE '/opt/dmdbms/data/DAMENG/dm.ini'
BACKUPSET'/home/dm_bak1/db_bak_for_show_01';
RMAN>BACKUP DATABASE '/opt/dmdbms/data/DAMENG/dm.ini'
BACKUPSET'/home/dm_bak2/db_bak_for_show_01';
RMAN>SHOW BACKUPSETS WITH BACKUPDIR '/home/dm_bak1','/home/dm_bak2';

备份集校验

DMRMAN 中使用 CHECK 命令对备份集进行校验,校验备份集是否存在及合法。

##语法:CHECK BACKUPSET '<备份集目录>' ;
##CHECK BACKUPSET...命令用于校验特定备份集,每次只能检验一个备份集。
RMAN>CHECK BACKUPSET '/home/dmbak/dbbakforcheck01';

备份集删除

DMRMAN 中使用 REMOVE 命令删除备份集,可删除单个备份集,也可批量删除备份集。单个备份集删除时并行备份中的子备份集不允许单独删除;在指定备份集搜集目录中,发现存在引用待删除备份集作为基备份的需要执行级联删除,默认报错。批量删除备份集时,跳过收集到的单独的子备份集。

RMAN>BACKUP DATABASE '/opt/dmdbms/data/DAMENG/dm.ini'
BACKUPSET'/home/dm_bak/db_bak_for_remove_01';
RMAN>REMOVE BACKUPSET '/home/dm_bak/db_bak_for_remove_01'

备份集导出

DMRMAN 中使用 LOAD 命令导出备份集。

##导出磁带/dev/nst0 上所有备份集的 meta 文件到目录/mnt/hgfs/dmsrc/bak_ dir中。直接输##入导出语句将报错,如下所示:
RMAN>LOAD BACKUPSETS FROM DEVICE TYPE TAPE TO BACKUPDIR '/mnt/hgfs/dmsrc/bak_dir';
LOAD BACKUPSETS FROM DEVICE TYPE TAPE TO BACKUPDIR '/mnt/hgfs/dmsrc/bak_dir';
##load backupsets failed.error code:-10000 [-10000]:[错误码:-20022]磁带打开失败

##退出 dmrman,设置环境变量 TAPE,值为/dev/nst0:
[root@192 debug]#export TAPE=/dev/nst0
[root@192 debug]#echo $TAPE /dev/nst0

##启动 dmrman,再次执行
[root@192 debug]# ./dmrman
RMAN>LOAD BACKUPSETS FROM DEVICE TYPE TAPE TO BACKUPDIR '/mnt/hgfs/dmsrc/bak_dir';
LOAD BACKUPSETS FROM DEVICE TYPE TAPE TO BACKUPDIR '/mnt/hgfs/dmsrc/bak_dir';
load meta file [SBT_TEST_T-20140909192629000000-4966] to path
[/mnt/hgfs/dmsrc/bak_dir/0/0.meta]...
load meta file [SBT_TEST_T-20140909192629000000-4966] to path
[/mnt/hgfs/dmsrc/bak_dir/0/0.meta]...success
load meta file [SBT_TEST_T2-20140909192746000000-9983] to path
[/mnt/hgfs/dmsrc/bak_dir/1/1.meta]...
load meta file [SBT_TEST_T2-20140909192746000000-9983] to path
[/mnt/hgfs/dmsrc/bak_dir/1/1.meta]...success
load backupsets successfully.

##退出 dmrman,查看本地磁盘目录/mnt/hgfs/dmsrc/bak_dir:
[root@192 debug]# ls -1 /mnt/hgfs/dmsrc/bak_dir total 0
drwxrwxrwx 1 root root 0 Sep 11 00:23 0
drwxrwxrwx 1 root root 0 Sep 11 00:23 1
[root@192 debug]# ls -1 /mnt/hgfs/dmsrc/bak_dir/0 total 12
-rwxrwxrwx 1 root root 24576 Sep 11 00:23 0.meta
[root@192 debug]# ls -1 /mnt/hgfs/dmsrc/bak_dir/1
total 12
-rwxrwxrwx 1 root root 24576 Sep 11 00:23 1.meta

备份集映射文件导出

备份集映射文件,又称为 mapped file。备份集映射文件导出,是将备份集中各数据文件的原始路径或者调整后的路径生成到一个本地文件中,可通过关键字 MAPPED FILE 应用于表空间和库的还原操作中。

DMRMAN 中使用 DUMP 命令导出映射文件。不支持导出到 DMASM 文件系统中。

##导出备份集中数据文件的原始路径
RMAN>DUMP BACKUPSET'/mnt/dmsrc/db_bak'DEVICE TYPE DISK MAPPED FILE '/mnt/dmsrc/db_bak_mapped.txt';

##指定 ini_path,导出调整后的数据文件路径到映射文件:
RMAN>DUMP BACKUPSET'/mnt/dmsrc/db_bak'DEVICE TYPE DISK DATABASE '/opt/dmdbms/data/DAMENG/dm.ini'
MAPPED FILE '/mnt/dmsrc/db_bak_mapped.txt';

数据还原恢复

以联机数据库备份说明使用 DMRMAN 如何执行数据库还原操作:

##联机备份数据库,保证数据库运行在归档模式及 OPEN 状态;
SQL>BACKUP DATABASE BACKUPSET '/dm8/dm_bak/db_full_bak_for_restore';

##准备目标库。还原目标库可以是已经存在的数据库,也可使用 dminit 工具初始化一个新库。如下所示:
./dminit path=/dm/data db_name=DAMENG_FOR_RESTORE

##校验备份,校验待还原备份集的合法性。校验备份有两种方式,联机和脱机,此处使用脱机校验;
RMAN>CHECK BACKUPSET '/dm8/dm_bak/db_full_bak_for_restore';

##还原数据库。启动 DMRMAN,输入以下命令:
RMAN>RESTORE DATABASE '/dm/data/DAMENG_FOR_RESTORE/dm.ini' FROM
BACKUPSET '/home/dm_bak/db_full_bak_for_restore';

2. 数据库恢复

使用 RECOVER 命令完成数据库恢复工作,可以是基于备份集的恢复工作,也可以是使用本地归档日志的恢复工作。数据库恢复是指重做 REDO 日志,有两种方式:从备份集恢复,即重做备份集中的 REDO 日志;或从归档恢复,即重做归档中的 REDO 日志。

方式一:从备份集恢复

##执行还原数据库的命令之后,可以直接执行恢复数据库的命令,如下:
RMAN>RECOVER DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' FROM BACKUPSET '/home/dm_bak/db_full_bak_for_recover_backupset';

方式二:从归档恢复

##通过使用 WITH ARCHIVEDIR 关键字进行归档恢复,如下:
RMAN>RECOVER DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' WITH ARCHIVEDIR'/home/dm_arch/arch'

3. 数据库更新

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

RMAN>RECOVER DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' UPDATE DB_MAGIC;

表空间还原和恢复

1. 表空间还原

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

表空间还原后,表空间状态被置为 RESOFFLINE,并设置数据标记 FILTSRECVSTATE_RESTORED,表示经过还原但数据不完整。表空间还原命令如下:

CopyRMAN>RESTORE DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' TABLESPACE MAIN FROM BACKUPSET '/home/dm_bak/ts_full_bak_for_restore';

注意

表空间还原的目标库只能是备份集产生的源库,否则将报错。

2. 表空间恢复

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

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

CopyRMAN>RECOVER DATABASE '/opt/dmdbms/data/DAMENG_FOR_RECOVER/dm.ini' TABLESPACE MAIN;

归档还原与修复

1. 归档还原

使用 RESTORE 命令完成脱机还原归档操作,在还原语句中指定归档备份集。备份集可以是脱机归档备份集,也可以是联机归档备份集。归档还原的命令如下:

Copy##还原归档。启动 DMRMAN,设置 OVERWRITE 为 2,如果归档文件已存在,会报错。
##1、指定还原的目标归档日志目录:
RMAN>RESTORE ARCHIVE LOG FROM BACKUPSET '/home/dm_bak/arch_all_for_restore' TO ARCHIVEDIR'/opt/dmdbms/data/DAMENG_FOR_RESTORE/arch_dest' OVERWRITE 2;

##2、指定还原目标库的 dm.ini 文件路径:
RMAN>RESTORE ARCHIVE LOG FROM BACKUPSET '/home/dm_bak/arch_all_for_restore' TO DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' OVERWRITE 2;

2. 归档修复

使用 REPAIR 命令完成指定数据库的归档修复,归档修复会对目标库 dmarch.ini 中配置的所有本地归档日志目录执行修复。若目标库没有配置本地归档,则不执行修复。执行修复时,目标库一定不能处于运行状态。一般建议在数据库故障后,应立即执行归档修复,否则后续还原恢复将会导致联机日志中未刷入本地归档的 REDO 日志中而丢失,届时再利用本地归档恢复将无法恢复到故障前的最新状态。归档恢复的命令如下:

Copy##单机环境下,确保目标库已经停止工作后,执行归档修复;
RMAN> REPAIR ARCHIVELOG DATABASE '/opt/dmdbms/data/dm.ini';

##DSC 环境下,需要每个节点停止工作后,每个节点独立执行修复操作;
##对于两节点 DSC01、DSC02 执行修复如下:
RMAN> REPAIR ARCHIVELOG DATABASE '/opt/dmdbms/dsc/dm01.ini';
RMAN> REPAIR ARCHIVELOG DATABASE '/opt/dmdbms/dsc/dm02.ini'

2.逻辑备份

逻辑备份还原是对数据库逻辑组件(如表、视图和存储过程等数据库对象)的备份还原。逻辑导出(dexp)和逻辑导入(dimp)是 DM 数据库的两个命令行工具,分别用来实现对 DM 数据库的逻辑备份和逻辑还原。逻辑备份和逻辑还原都是在联机方式下完成,即在数据库服务器正常运行过程中进行的备份和还原。

dexp 逻辑导出

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

dexp 工具需要从命令行启动。以数据库软件安装目录为 /dm8/bin 为例,在 /dm8/bin 路径下输入 dexp 和参数后回车,参数在数据库安装目录的doc下,名字为DM8_dexp和dimp使用手册。

##语法如下
dexp PARAMETER=<value> { PARAMETER=<value> }

四种级别导出功能

FULL

FULL 方式导出数据库的所有对象。

Copy##设置 FULL=Y,导出数据库的所有对象,导出数据库文件和日志文件放在路径 /mnt/data/dexp下。
./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log FULL=Y DIRECTORY=/mnt/data/dexp

OWNER

OWNER 方式导出一个或多个用户拥有的所有对象。

Copy##设置 OWNER=USER01,导出用户 USER01 所拥有的对象全部导出。
./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log OWNER=USER01 DIRECTORY=/mnt/data/dexp

SCHEMAS

SCHEMAS 方式的导出一个或多个模式下的所有对象。

Copy##设置 SCHEMAS=USER01,导出模式 USER01 模式下的所有对象。
./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log SCHEMAS=USER01 DIRECTORY=/mnt/data/dexp

TABLES

TABLES 方式导出和导入一个或多个指定的表或表分区。导出所有数据行、约束、索引等信息。

Copy##设置 TABLES=table1,table2,导出 table1,table2 两张表的所有数据和信息。
./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log TABLES=table1,table2 DIRECTORY=/mnt/data/dexp

和 TABLES 导出有关的参数还有 QUERY、EXCLUDE 和 INCLUDE,都是用来设置过滤条件的。

例子1dexp 逻辑导出

导出库:环境为 Linux,服务器为 10.0.0.88,用户名和密码均为 SYSDBA。导出的是 DM 数据库系统安装时自带的名为 BOOKSHOP 的示例库,端口号 5236。

导出数据库的所有对象 (FULL=Y),导出文件为 dexp01.dmp ,导出日志为 dexp01.log,导出文件和日志文件都存放在 /dm/data/dexp 目录中。

./dexp SYSDBA/SYSDBA@10.0.0.88:5236 FILE=dexp01.dmp LOG=dexp01.log DIRECTORY=/dm/data/dexp FULL=Y

##若使用加密参数对备份进行加密,可使用加密参数 ENCRYPT、ENCRYPT_PASSWORD、ENCRYPT_NAME 。
##具体使用方法如下:
./dexp SYSDBA/SYSDBA@10.0.0.88:5236 FILE=dexp03.dmp LOG=dexp03.log DIRECTORY=/dm/data/dexp FULL=Y ENCRYPT=Y ENCRYPT_PASSWORD=damengren ENCRYPT_NAME= DES_CBC
##导出数据库的所有对象 (FULL=Y),导出文件为 dexp03.dmp,导出日志为 dexp03.log,导出文件和日志文件都存放在 /dm/data/dexp 目录中。

dimp 逻辑导入

dimp 逻辑导入工具利用 dexp 工具生成的备份文件对本地或远程的数据库进行联机逻辑还原。dimp 导入是 dexp 导出的相反过程。还原的方式可以灵活选择,例如是否忽略对象存在而导致的创建错误、是否导入约束、是否导入索引、导入时是否需要编译、是否生成日志等。

dimp 工具需要从命令行启动。以数据库软件安装目录为 /dm8/bin 为例,在 /dm8/bin 路径下输入 dimp 和参数后回车

##语法如下
dimp PARAMETER=value { PARAMETER=value }

##将逻辑备份采用 FULL 方式完全导入到用户名和密码为 SYSDBA,IP 地址为 192.168.0.248,端口号为 8888 的数据库。导入文件名为 db_str.dmp,导入的日志文件名为 db_str.log,路径为/mnt/data/dexp
./dimp USERID=SYSDBA/SYSDBA@10.0.0.88:8888 FILE=db_str.dmp DIRECTORY=/mnt/data/dexp LOG=db_str.log FULL=Y

四种级别导入功能

FULL

FULL 方式导入整个数据库。

Copy##设置 FULL=Y,导入数据库,导入的数据库文件在 /mnt/data/dexp,即将生成的日志文件放在 /mnt/data/dimp。
./dimp USERID=SYSDBA/SYSDBA FILE=/mnt/data/dexp/db_str.dmp LOG=db_str.log FULL=Y DIRECTORY=/mnt/data/dimp

OWNER

OWNER 方式导入一个或多个用户拥有的所有对象。

Copy##设置 OWNER=USER01,导入用户 USER01 所拥有的对象全部导出。导入的数据库文件在 /mnt/data/dexp,即将生成的日志文件放在 /mnt/data/dimp。
./dimp USERID=SYSDBA/SYSDBA FILE=/mnt/data/dexp/db_str.dmp LOG=db_str.log OWNER=USER01 DIRECTORY=/mnt/data/dimp

SCHEMAS

SCHEMAS 方式的导入一个或多个模式下的所有对象。

Copy##设置 SCHEMAS=USER01,导入模式 USER01 模式下的所有对象。导入的数据库文件在/mnt/data/dexp,即将生成的日志文件放在 /mnt/data/dimp。
./dimp USERID=SYSDBA/SYSDBA FILE=/mnt/data/dexp/db_str.dmp LOG=db_str.log SCHEMAS=USER01 DIRECTORY=/mnt/data/dimp

TABLES

TABLES 方式导出和导入一个或多个指定的表或表分区。导入所有数据行、约束、索引等信息。

Copy##设置 TABLES=table1,table2,导入 table1,table2 两张表的所有数据和信息。导入的数据库文件在 /mnt/data/dexp,即将生成的日志文件放在 /mnt/data/dimp。
./dimp USERID=SYSDBA/SYSDBA FILE=/mnt/data/dexp/db_str.dmp LOG=db_str.log TABLES=table1,table2 DIRECTORY=/mnt/data/dimp

和 TABLES 导入有关的参数还有 EXCLUDE,用来指定导入时过滤某类对象的。

例子2dimp 逻辑导入

环境为 Linux,服务器为 10.0.0.89,用户名和密码均为 SYSDBA。准备一个空数据库作为导入库,端口号为 5236。

导入 SYSDBA、OTHER、PERSON 模式中的数据 (SCHEMAS = SYSDBA,OTHER,PERSON),导入文件就是上一步导出的文件 dexp01.dmp ,导入日志 dimp02.log 放入 /emc_2/data/dimp 目录中

./dimp SYSDBA/SYSDBA@10.0.0.88:5236 FILE=/emc_2/data/dexp/dexp01.dmp LOG=dimp02.log DIRECTORY=/emc_2/data/dimp SCHEMAS=SYSDBA,OTHER,PERSON

达梦社区 https://eco.dameng.com

posted @ 2023-07-18 09:33  李导7323  阅读(3865)  评论(0)    收藏  举报