物理备份还原
- 开启归档
Alter database mount;
Alter database add archivelog ‘DEST=/dm8/arch,TYPE=local file_size=1024,space_limit=2048’;
Alter database archivelog;
Alter database open;
联机备份还原
联机方式支持数据库、用户表空间、用户表和归档的备份以及用户表的还原。在进行联机库级备份、归档备份和表空间备份时,必须保证系统处于归档模式,否则联机备份不能进行。
数据备份
在disql工具或图形化管理工具SQL编辑区中使用backup语句可以备份整个数据库,执行以下命令:
Backup database full backupset ‘D:\dmdbms\bak\db_full_bak_01’;
限制备份片大小,创建备份片大小100M
Backup database backupset ‘D:\dmdbms\bak\db_full_bak_04’ maxpiecesize 100;
Maxpiecesize参数用于控制每个备份片的大小
Maxpiecesize不能大于磁盘剩余空间大小,否则报磁盘空间不足。
注意:maxpiecesize备份片大小设置最低要大于130M,否则报错。
备份压缩
#执行备份压缩,压缩级别设置为5级
Backup database backupset 'D:\dmdbms\bak\db_full_bak_04' compressed level 5;
设置并行备份
backup database backupset 'D:\dmdbms\bak\db_full_bak_5' parallel 8;
备份表空间
增量备份
基于全备基础上增量备份
backup tablespace main backupset 'D:\dmdbms\bak\main_bak_06';
backup tablespace main increment base on backupset 'D:\dmdbms\bak\main_bak_06' backupset 'D:\dmdbms\bak\incre_bak_07';
增量备份
backup tablespace main increment with backupdir 'D:\dmdbms\bak\tablespace_bak' backupset 'D:\dmdbms\bak\tablespace_bak\tablespace_incre_01';
表备份
与备份数据库与表空间不同,备份表不需要服务器配置归档,disql 输入以下命令即可备份用户表。
Backup table wzp backupset D:\dmdbms\bak\tabl_wzp_bak01’;
注意:表备份均为联机完全备份,不需要配置归档日志,没有增量备份。
归档备份
在disql工具中可以使用backup语句备份归档日志。
数据库必须配置归档
归档文件的db_magic、permanent_magic值和数据库的db_magic、permanent_magic值必须一样
Select DB_MAGIC from v$RLOG;
Select permanent_magic;
backup archive log all backupset 'D:\dmdbms\bak\arch_bak01';
定时备份
图形化方式创建定时备份
右键管理工具—代理—作业—新建作业
管理备份
备份目录管理
- 添加备份目录
##SF_BAKSET_BACKUP_DIR_ADD(device_type,backup_dir)
##函数用于添加备份目录
使用方法:
Select SF_BAKSET_BACKUP_DIR_ADD('DISK','D:\dmdbms\backup');
- 删除备份目录
select sf_bakset_backup_dir_remove('DISK','D:\dmdbms\bak\db_full_bak_01_%T');
- 清理全部备份目录
SELECT SF_BAKSET_BACKUP_DIR_REMOVE_ALL();
备份集检验与删除
- 备份集校验
select sf_bakset_check('DISK','D:\dmdbms\bak\db_full_bak_02');
- 备份集删除
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执行
管理工具进行联机备份还原
数据备份
点击【备份】,针对相应的备份对象,例如备份数据库,则右键点击【库备份】选择【新建备份】。
根据图形界面选项框填写相关选项
高级选项里面可以对备份集的相关属性进行设置,例如是否进行备份压缩、压缩级别、是否备份日志、加密等
逻辑备份
逻辑导出:使用 dexp 工具可以对本地或者远程数据库进行数据库级、用户级、模式级和表级的逻辑备份
逻辑导入:dimp 逻辑导入工具利用 dexp 工具生成的备份文件对本地或远程的数据库进行联机逻辑还原。dimp 导入是 dexp 导出的相反过程
Dexp逻辑导出
dexp 工具可以对本地或者远程数据库进行数据库级、用户级、模式级和表级的逻辑备份。备份的内容非常灵活,可以选择是否备份索引、数据行和权限,是否忽略各种约束(外键约束、非空约束、唯一约束等),在备份前还可以选择生成日志文件,记录备份的过程以供查看
语法如下:
dexp PARAMETER=<value> { PARAMETER=<value> }
dexp参数含义
参数 | 含义 | 备注 |
USERID | 数据库的连接信息 | 必选 |
FILE | 明确指定导出文件名称。 | 可选。如果缺省该参数,则导出文件名为dexp.dmp |
DIRECTORY | 导出文件所在目录 | 可选 |
FULL | 导出整个数据库(N) | 可选,四者中选其一。缺省为SCHEMAS |
OWNER | 用户名列表,导出一个或多个用户所拥有的所有对象 | |
SCHEMAS | 模式列表,导出一个或多个模式下的所有对象 | |
TABLES | 表名列表,导出一个或多个指定的表或者表分区 | |
FUZZY_MATCH | TABLES 选项是否支持模糊匹配(N) | 可选 |
QUERY | 用于指定对导出表的数据进行过滤的条件 | 可选 |
PARALLEL | 用于指定导出的过程中所使用的线程数目 | 可选 |
TABLE_PARALLEL | 用于指定导出每张表所使用的线程数,在MPP模式下会转换成单线程 | 可选 |
TABLE_POOL | 用于设置导出过程中存储表的缓冲区个数 | 可选 |
FULL 全库导出
##设置 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=USER01,导出用户 USER01 所拥有的对象全部导出。
./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log OWNER=USER01 DIRECTORY=/mnt/data/dexp
Schemas导出
##设置 SCHEMAS=USER01,导出模式 USER01 模式下的所有对象。
./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log SCHEMAS=USER01DIRECTORY=/mnt/data/dexp
Tables导出
Tables方式导出和导入一个或多个指定的表或表分区。导出所有数据行、约束、索引等信息
##设置 TABLES=table1,table2,导出 table1,table2 两张表的所有数据和信息。
和 TABLES 导出有关的参数还有 QUERY、EXCLUDE 和 INCLUDE,都是用来设置过滤条件的
./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log TABLES=table1,table2 DIRECTORY=/mnt/data/dexp
Dimp逻辑导入
dimp 逻辑导入工具利用 dexp 工具生成的备份文件对本地或远程的数据库进行联机逻辑还原。dimp 导入是 dexp 导出的相反过程。还原的方式可以灵活选择,例如是否忽略对象存在而导致的创建错误、是否导入约束、是否导入索引、导入时是否需要编译、是否生成日志等
##语法如下
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@192.168.0.248:8888 FILE=db_str.dmp DIRECTORY=/mnt/data/dexp LOG=db_str.log FULL=Y
注意:导入前数据库内如果已存在相关对象,在导入时会出现已存在报错,可以加参数TABLE_EXISTS_ACTION
Dimp相关参数含义
参数 | 含义 | 备注 |
USERID | 数据库的连接信息 | 必选 |
FILE | 输入文件,即 dexp 导出的文件 | 必选 |
DIRECTORY | 导入文件所在目录 | 可选 |
FULL | 导入整个数据库 (N) | 可选,四者中选其一。缺省为SCHEMAS |
OWNER | 导入指定的用户名下的模式 | |
SCHEMAS | 导入的模式列表 | |
TABLES | 表名列表,指定导入的 tables 名称。不支持对外部表进行导入 | |
PARALLEL | 用于指定导入的过程中所使用的线程数目 | 可选 |
TABLE_PARALLEL | 用于指定导入的过程中每个表所使用的子线程数目 | 可选。在 FAST_LOAD 为 Y 时有效 |
IGNORE | 忽略创建错误 (N)。如果表已经存在则向表中插入数据,否则报错表已经存在 | 可选 |
TABLE_EXISTS_ACTION | 需要的导入表在目标库中存在时采取的操作 [SKIP| APPEND | TRUNCATE | REPLACE] | 可选 |
FAST_LOAD | 是否使用 dmfldr 进行数据导入(N) | 可选 |
FLDR_ORDER | 使用 dmfldr 是否需要严格按顺序来导数据(Y) | 可选 |
COMMIT_ROWS | 批量提交的行数(5000) | 可选 |
四种级别导入功能
FULL导入
##设置 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=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/dim
Schemas导入
Schemas方式导入一个或多个模式下的所有对象
##设置 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方式导入一个或多个表或表分区,导入所有数据行、约束、索引等信息
##设置 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
数据库还原
数据准备
创建一张表,并插入数据
第一次数据库全备
backup database full backupset 'D:\dmdbms\data\DAMENG2\bak\full_bak_01';
往wzp表插入数据后进行增量备份
第二次插入数据并进行第二次增量备份
插入新数据,产生新数据归档
查看备份集
还原到当前最新数据时刻
- 停数据库服务,还原步骤如下:
##检验备份集是否正确
RMAN> check backupset 'D:\dmdbms\data\DAMENG2\bak\incre_bak_03';
##还原
RMAN> restore database 'D:\dmdbms\data\DAMENG2\dm.ini' from backupset 'D:\dmdbms\data\DAMENG2\bak\incre_bak_03';
##恢复
RMAN> recover database 'D:\dmdbms\data\DAMENG2\dm.ini' from backupset 'D:\dmdbms\data\DAMENG2\bak\incre_bak_03';
##更新数据库魔术
recover database 'D:\dmdbms\data\DAMENG2\dm.ini' update db_magic;
还原成功后,启动数据库,并检验数据库里最新记录值
恢复到指定时间点
停止数据库服务
##检验备份集是否正确
check backupset 'D:\dmdbms\data\DAMENG2\bak\incre_bak_03';
##还原
restore database 'D:\dmdbms\data\DAMENG2\dm.ini' from backupset 'D:\dmdbms\data\DAMENG2\bak\incre_bak_03';
##恢复至指定时间点
recover database 'D:\dmdbms\data\DAMENG2\dm.ini' with archivedir 'D:\dmdbms\arch' until time '2023-02-15 9:50:00';
##更新数据库魔数
起数据库服务,验证数据