linux下,达梦数据库8 备份还原
一 数据库备份相关概念
备份就是数据库在某一个时间点的副本
数据库备份目的:防止数据丢失,防止天灾人祸(地震、火灾、人为操作、硬件故障)
备份主要有物理备份和逻辑备份
物理备份主要是备份使用过的有效的数据页,逻辑备份主要是备份数据库对象(表,索引,视图,存储过程等)
物理备份:分为联机备份和脱机备份;完全备份和增量备份
完全备份:备份的是整个数据库或者表空间的全部数据
增量备份:备份的是上一次全备或增备后,以后每次备份只需要备份修改过的数据页
还原就是将某个时间点的数据库副本拷贝到对应的目录下。
恢复就是在完成数据库还原之后,应用部分或者是全部归档日志
二 物理备份
冷备:
冷备不需要开启归档,需要开启DmAP服务,需要关闭数据库实例,针对整库做备份
1、console工具备份
[dmdba@localhost bin]$./DmServiceDMSERVER stop
2、用dmrman工具备份,只支持冷备
[dmdba@localhost backup]$cd /dm8/bin
[dmdba@localhost bin]$./dmrman
dmrman V8
RMAN>backup database '/dm8/data/DAMENG/dm.ini' backupset '/dm8/backup';
出现以上错误,说明'/dm8/backup'目录已存在。
可以删掉目录下文件或者更换目录
2.1配置本地归档
热备:需要开启归档,数据库需要打开(open)
可以备份数据库、表空间、表、归档日志
查看数据库归档模式:
SQL>select name,arch_mode from v$database;
2.1.1在管理工具中开启归档模式
打开管理工具后,右键数据库实例,选择管理服务器,然后点击“系统管理”,选择“配置”后点击“转换”,成功后点击“确定”
选择“归档配置”,选择“归档目标”后,点击“归档”,然后“确定”。
2.1.2在DIsql里联机开启归档模式
#打开DIsql
#修改数据库状态为MOUNT
SQL> alter database mount;
#配置本地归档
SQL> alter database add archivelog 'type=local,dest=/home/dmdba/dmdbms/arch,file_size=64,space_limit=0';
#开启归档模式
SQL> alter database archivelog;
#修改数据库为OPEN状态
SQL> alter database open;
2.1.3手动启归档模式
vi dmarch.ini
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /home/dmdba/dmdbms/data/DAMENG/arch #本地归档文件存放路径
ARCH_FILE_SIZE = 128 #单位 Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0 #单位 Mb,0 表示无限制,范围 1024~4294967294M
vi dm.ini
再查看数据库归档模式:
3、备份(脱机)
3.1 用manager工具做热备整库备份
3.1.1 查看备份
3.1.2 命令行做全备:disql工具
SQL>backup database full to "DB_DAMENG_FULL";--备份到参数文件中的备份路径。默认是‘/dm8/data/DAMENG/bak’
SQL>backup database full to "DB_DAMENG_FULL2" BACKUPSET '/dm8/backup';
3.2 做增量备份
3.2.1 manager工具做增量备份
3.2.2 指令做增量备份
SQL>backup database increment to "DB_DAMENG_INCRE_2020_11_30_14_24_14"
backupset'DB_DAMENG_INCRE_2020_11_30_14_24_14';
3.3 表空间备份
表空间备份只能联机,还原只能脱机
3.3.1 用manager工具
3.3.2 用disql
SQL>backup tablespace "DMHR" full to "TS_DMHR_FULL_2020_11_30_14_31_44"
backupset 'TS_DMHR_FULL_2020_11_30_14_31_44';
3.4 表备份
3.4.1 用manager工具
3.4.2 用disql
SQL>backup table "DMHR"."DEPARTMENT" to "TAB_DMHR_DEPARTMENT_2020_11_30_14_34_57"
backupset 'TAB_DMHR_DEPARTMENT_2020_11_30_14_34_57';
3.5 归档备份:
SQL>backup archivelog all to "ARCH_2020_11_30_14_36_55" backupset 'ARCH_2020_11_30_14_36_55';
三 物理还原与还原(脱机)
1、检查备份集是否有效
#校验备份
2、Console工具还原
3、Console工具恢复
dmrman工具还原
#还原数据库
RMAN>restore database '/dm8/data/DAMENG/dm.ini' from backupset '/dm8/backup'
#恢复数据库
RMAN> recover database '/dm8/data/DAMENG/dm.ini' with archivedir '/dm8/data/arch';
#更新magic
RMAN> recover database '/dm8/data/DAMENG/dm.ini' update db_magic;
表空间还原
RMAN>restore database '/dm8/data/DAMENG/dm.in i 'tablespace MAIN from
backupse t'/dm8/backup';
RMAN>recover database '/dm8/data/DAMENG/dm.ini 'tablespace MAIN;
四 逻辑备份
备份的是数据库对象
逻辑备份可以用来迁移和重组数据库,是数据库辅助型备份
dexp/dimp
四个级别导入导出:库级别 ,用户, 模式 ,表
全库导出:[dmdba@localhost bin]$./dexp SYSDBA/SYSDBA file=full.dmp log=full.log directory=/dm8/backup full=y
用户导出:[dmdba@localhost bin]$./dexp SYSDBA/SYSDBA file=dmhr.dmp log=dmhr.log directory=/dm8/backup owner=dmhr
导出表:[dmdba@localhost bin]$./dexp SYSDBA/SYSDBA file=emp.dmp log=emp.log directory=/dm8/backup tables=emp
全库导入:[dmdba@localhost bin]$./dimp SYSDBA/SYSDBA file=full.dmp log=imp_full.log directory=/dm8/backup full=y
注意事项:执行用户导入时,如果用户不存在,要先创建用户。