DCA培训技术分享—备份还原、作业管理及DM开发语言接口配置篇

本文详细介绍了达梦数据库的备份与恢复操作,包括物理备份与逻辑备份的种类,如完全备份、增量备份、热备和冷备。重点讲述了备份还原策略,如DMAP辅助进程的作用和提高备份效率的方法。还涉及了数据库的脱机和联机备份、表空间级别的备份与恢复,以及逻辑备份工具dexp和dimp的使用。此外,提到了作业管理和开发语言接口配置,确保数据库的安全和高效管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据库的备份还原

备份还原基本概念
备份包括物理备份和逻辑备份
物理备份又分为完全备份、增量备份;联机备份(热备)和脱机备份(冷备)

完全备份:
是指一个备份包含指定数据库或表空间的所有数据

增量备份:
是指在一次全备份或上次增量备份后,以后每次的备份只需备份与前一次相比增加或者被修改的文件。

增量备份包含差异增量备份和累计增量备份。

差异增量备份的基础备份集可以是全量备份,也可以是增量备份。
累计增量备份的基础备份集只能是全量备份。

热备:指数据库启动状态下的备份。
冷备:指数据库关闭状态下的备份。

备份级别:
全库备份、表空间级备份、表级备份、归档备份

物理还原是备份的逆过程:
恢复是使用归档将数据库恢复至最新状态或指定时间点;

使用备份集中的redo信息将数据库恢复至一致性状态。

备份还原的两个重要参数:
select * from v$parameter where name in(‘BAK_PATH’,‘BAK_USE_AP’);
BAK_PATH:DM默认的备份路径。
注意,生产环境不要和源库数据文件放在同一磁盘上。避免磁盘损坏,数据文件和备份文件同时损坏的情况。
BAK_USE_AP:备份还原策略,默认使用DMAP辅助进程。
备份还原实现策略:

DMAP辅助进程方式,要求必须启动DMAP服务,可支持第三方备份。
DMAP插件执行,改造了备份还原任务子系统,允许指定并行度,大幅提升了备份还原的效率。
特别是加密、压缩的处理效率。
无辅助进程方式,不依赖DMAP,由主进程DMSERVER自身执行备份还原,但不支持第三方备份。

查看AP服务是否启动
$ ps -ef | grep dmap
$./DmAPService status

执行备份任务“backup database;”时,如果AP服务没有启动,则会报出“-7179:bakres连接DMAP失败”错误。

脱机备份与还原数据库
脱机备份
使用dmrman工具进行脱机备份
备份前关闭数据库
$ps -ef | grep dmserver
$DmServiceDMSERVER stop
$./dmrman
RMAN> backup database ‘/dm8/data/DM/dm.ini’;

表空间的还原与恢复
DM8表空间的还原与恢复需要在脱机状态下操作
1–模拟丢失MAIN表空间数据文件
#mv MAIN.DBF MAIN_BK.DBF
2–表空间MAIN的还原与恢复
$dmrman
RMAN> restore database ‘/dm8/data/DAMENG/dm.ini’ tablespace main
from backupset ‘/dm8/backup/full/consolefullbak’;
3–表空间的恢复系统会自动利用归档恢复到最新状态
RMAN> recover database ‘/dm8/data/DAMENG/dm.ini’ tablespace main;
4–打开数据库,验证数据是否有丢失

全库的还原与恢复
模拟system数据文件损坏
使用全量备份集或增量备份集进行还原与恢复步骤相同。
例如
a(全量) -> b1(增量) -> b2(增量)
-> c1(增量)
如果全量备份丢失,基于其增量的备份也将无法正常使用。

1)数据库的还原与恢复
RMAN> restore database ‘/dm8/data/DM/dm.ini’
from backupset ‘/dm8/backup/full/onlineback_02’;

RMAN> recover database ‘/dm8/data/DM/dm.ini’ with archivedir ‘/dm8/arch’;
2)更新数据库魔数
RMAN> recover database ‘/dm8/data/DM/dm.ini’ update db_magic;

不完全恢复的使用场景
表误删除,可以指定归档恢复到删除的前一刻
RMAN> recover database ‘/dm8/data/DM/dm.ini’ with archivedir ‘/dm8/arch’ until lsn xxxxx;
RMAN> recover database ‘/dm8/data/DM/dm.ini’ with archivedir ‘/dm8/arch’ until time xxxxx;

查看备份集
RMAN> show backupset ‘/dm8/backup/full’;
删除备份集
RMAN> remove bakcupset ‘/dm8/backup/full’;
检查备份集
RMAN> check bakcupset ‘/dm8/backup/full’;

使用console控制台工具脱机备份、还原、恢复
打开console控制台工具,
备份
点击“备份还原”→选择“新建备份”→常规中填写“备份名”,“备份集目录”→确定
还原
点击“备份还原”→选择“还原”→选择“备份集目录”→确定
恢复
点击“备份还原”→选择“恢复”→选择恢复类型“指定归档恢复”→添加归档日志目录→确定
更新数据库魔数
点击“备份还原”→选择“更新Magic”→选择恢复类型“更新DM_MAGIC”→确定

表空间还原时会校验数据库魔数
select permanent_magic; —查询数据库永久魔数
select db_magic from v$rlog; ----查询数据库当前魔数

还原时如果报“数据文件读写出错”,
原因是使用root用户打开console控制台操作,导致更改了数据文件的读写权限。

联机备份与还原数据库
联机备份
数据库启动状态,联机备份要求数据库打开归档。
备份时AP服务需要为启动状态。

SQL备份数据库
RMAN> backup database; ----全量备份
RMAN> backup database increment; —增量备份
RMAN> backup database full to onlinebak_01 backupset ‘/dm2/bakcup/full/online_bak’;
RMAN> backup database increment base on backupset ‘/dm8/bakcup/full/online_bak’
to onlinebak_incr01 backupset ‘/dm8/bakcup/incr/onlineback_incr01’;
RMAN> backup database increment with backupdir ‘/dm8/bakcup/full/’
to onlinebak_incre02 backupset ‘/dm8/bakcup/incr/onlineback_incr02’;

备份集管理
校验备份集
select SF_BAKSET_CHECK(‘DISK’,‘/dm8/bakcup/incr/onlineback_incr02’);
select * from v$backupset; —查看备份集

select * from v$ifun where name like ‘SF_BAKSET%’;
SF_BAKSET_BACKUP_DIR_ADD(‘DISK’,‘/dm8/bakcup/full/’);
SF_BAKSET_BACKUP_DIR_ADD(‘DISK’,‘/dm8/bakcup/incr/’);

表空间备份
RMAN> backup tablespace dmtbs;
RMAN> backup tablespace dmtbs increment with backupdir ‘/dm8/bakcup/full/’
to dmtbs_incr01 backupset ‘/dm8/bakcup/incr/dmtbs_incr01’;

表和归档的备份
RMAN> backup table dmhr.employee; —表备份
RMAN> backup archivelog all; —归档备份

库级、表空间的还原和恢复不支持联机恢复,只支持脱机还原恢复。

DM管理工具图形化界面备份
DmManager登录数据库,选择“备份”→“新建备份”

逻辑备份
dexp/dimp逻辑导出、导入
dexp/dimp分四个级别
全库(full=y)
按用户(owner=xxx)
按模式(schemas=xxx)
按表(tables=xxx)
$./dexp help ----查看dexp帮助信息

全库导出
$dexp userid=sysdba/SYSDBA:5236 directory=/dm8/backup/dexp file=full.dmp log=full.log full=y
按用户导出
$dexp userid=sysdba/SYSDBA:5236 directory=/dm8/backup/dexp file=hrtest.dmp owner=hrtest log=hrtest.log
按模式导出
$dexp userid=sysdba/SYSDBA:5236 directory=/dm8/backup/dexp file=dmhr.dmp schemas=dmhr log=dmhr.log
按表导出
$dexp userid=sysdba/SYSDBA:5236 directory=/dm8/backup/dexp file=employee.dmp tables=dmhr.employee log=employee.log

全库导入
$dimp userid=sysdba/SYSDBA:5236 directory=/dm8/backup/dexp file=full.dmp full=y log=full.log
按模式导入(将A模式导入到B模式,使用remap_schema参数)
$dimp userid=sysdba/SYSDBA:5236 directory=/dm8/backup/dexp file=dmhr.dmp remap_schema=dmhr:dmtest log=impdmhr.log
表导入
$dimp userid=sysdba/SYSDBA:5236 directory=/dm8/backup/dexp file=employee.dmp table=dmhr.employee remap_schema=dmhr:hrtest log=employee.log

DM管理工具导出导入
DmManager登录数据库,右击“LOCALHOST(SYSDBA)”→选择“导出”
同样方式进行导入

作业管理

创建代理环境
执行存储过程代理环境
SQL> sp_init_job_sys(1);

使用manager管理工具,界面上右击“代理”,选择“创建代理环境”。
创建代理环境后会创建sysjob模式

DM兼容Oracle的DBMS_JOB和DBMS_SCHEDULER系统包
select * from v$ifun where name like ‘%INIT%’;
call sp_init_dbms_scheduler_sys(1); ----创建DBMS_SCHEDULER

创建作业
DM管理工具创建JOB
代理→右击“新建作业”→作业名称:job01,添加“作业步骤”,步骤名称:fullbak,步骤类型:备份数据库,备份路径:/dmdbms/fullbak,
新建“作业调度”,名称:fullbak,调度类型:反复执行,发生频率,类别:周,每周日

JOB增量备份
代理→右击“新建作业”→作业名称:job02,添加“作业步骤”,步骤名称:incrbak,步骤类型:备份数据库,
备份路径:/dmdbms/incrbak,基备份目录:/dmdbms/fullbak
新建“作业调度”,名称:incrbak,调度类型:反复执行,发生频率,类别:周,每周二、四、六

JOB运行和日志查看
select * from sysjob.sysjobs; —查看job
dbms_job.run(1640162093); ----运行job,1640162093为执行ID
select * from sysjob.sysjobhistories2; ----查看job运行日志
checkpoint(100); —执行完全检查点,解决刚开归档备份,报错归档日志不连续的问题

DM开发语言接口配置

DM8 JDBC编程注意事项
//定义DM JDBC驱动串
String jdbcString=“dm.jdbc.driver.DmDriver”;
//定义DM URL连接串
String urlString=“jdbc:dm://localhost:5236”;

ODBC连接DM数据库
ODBC的安装和配置:
解压
#tar -zxvf unixODBC-2.3.0.tar.gz
源码安装三部曲:配置、编译、安装
#cd unixODBC-2.3.0
#./configure ------可以使用–prefix参数指定安装路径
#make
#make install
配置odbc.ini数据源信息和odbcinst.ini驱动信息
#cd /usr/local/etc/
#vim odbc.ini
[DM8]
Description=DM ODBC DSN
Driver=DM8 ODBC DRIVER
SERVER=LOCALHOST
UID=SYSDBA
PWD=Dameng123
TCP_PORT=5236

#vim odbcinst.ini
[DM8 ODBC DRIVER]
Description=ODBC DRIVER FOR DM8
Driver=/dm8/bin/libdodbc.so

测试连接
使用dmdba用户执行isql测试连接是否正常
$isql dm8 -v
SQL> select count(*) from dmhr.department;

注意:
root用户执行会报错,因为root没有配置LD_LIBRARY_PATH环境变量。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值