九、数据库的备份还原

九、数据库的备份还原

1、归档管理

使用DM Manager:

  1. 点击注册的实例连接->右键->管理服务器在这里插入图片描述

  2. 点击系统管理->点击配置->点击转换在这里插入图片描述

  3. 点击归档配置->归档在这里插入图片描述

使用DISQL:

#创建文件夹存放日志文件
mkdir /dm/dmarch

#登录disql
disql
SYSDBA
SYSDBA

#切换为配置
alter database mount;

#添加文件
alter database add archivelog 'DEST=/dm/dmarch,TYPE=local,FILE_SIZE=128,space_limit=0';

#修改为归档模式,会自动将日志写入上述文件
alter database archivelog;

#修改为open状态
alter database open;

#查看归档信息
select arch_mode from v$database;
select * from v$dm_arch_ini;

#退出disql
exit;

#查看是否以生成文件
cd /dm/dmarch/
ls

#查看日志的配置文件
cd /dm/dmdbma/data/DAMENG/dmarch.ini

在这里插入图片描述


在这里插入图片描述


2、逻辑备份与还原

逻辑备份与还原就是导出文件和导入文件:

下面演示创建一个用户,再使用此用户在此用户模式下建表,然后导出,再将此用户下的表删除,再导入,看看是否成功

逻辑备份分为:数据库级别、用户级别、模式级别、表级别

#全局导入与导出
#操作1
#登录disql
disql
SYSDBA
SYSDBA

#创建用户dexp 密码为dexp123dexp123
create user dexp identified by dexp123dexp123;
#授予权限
grant resource,dba to dexp;
#退出disql / 切换用户
exit
conn dexp/dexp123dexp123

#使用dexp用户登录disql
disql
dexp
dexp123dexp123

#创建一张表
create table dexp as select * from sysobjects;
#查看表数据
select count(1) from dexp;

#操作2
#开始备份 导出文件到/dm/dmbak
dexp SYSDBA/SYSDBA file=full01.dmp log=full01.log directory=/dm/dmbak full=y;
#用户的导入与导出
dexp SYSDBA/SYSDBA file=user01.dmp log=user01.log directory=/dm/dmbak owner=dexp;
#数据库级别、用户级别、模式级别、表级别,多个用逗号(,)间隔
full=y
owner=用户名(这里是dexp)
schemas=模式名(这里是dexp)
tables=表名(这里是dexp)

#删除dexp用户下的dexp表
drop table dexp;

#操作3恢复刚才备份的文件(replace可加可不加,是具体情况而定)
#全局级别的恢复
dimp SYSDBA/SYSDBA file=full01.dmp log=full02.log directory=/dm/dmbak full=y table_exists_action=replace 
#用户级别的恢复
dimp SYSDBA/SYSDBA file=user01.dmp log=user02.log directory=/dm/dmbak owner=dexp table_exists_action=replace
#恢复到指定用户
dimp SYSDBA/SYSDBA file=user01.dmp log=user02.log directory=/dm/dmbak owner=dexp remap_schema=DEXP:DIMP;


#查看表数据
select count(1) from dexp;
  1. 操作1在这里插入图片描述

  2. 操作2在这里插入图片描述
    —————————————————————————————————————————————————————————–在这里插入图片描述

  3. 在这里插入图片描述
    ——————————————————————————————————————————————————————————在这里插入图片描述

3、联机备份与还原

联机备份在数据库级别只支持备份操作,不支持还原,数据库级别的还原必须在脱机进行。

默认的备份路径为dm.ini中BAK_PATH参数配置的路径,若未配置,则使用SYSTEM_PATH下的bak目录。

全备:full参数可以省略,不指定备份类型默认为完全备份

backup database backupset '/dm/dmbak/full01';  

在这里插入图片描述


在这里插入图片描述

增量备份:

backup database increment with backupdir 'dm/dmbak/full01' backupset '/dm/dmbak/full01/inc_back';

在这里插入图片描述


在这里插入图片描述

表的备份和还原:

#创建测试表
create table dmbak as select * from sysobjects;

#查看数据
select count(1) from dmbak;

#备份表
backup table dmbak backupset '/dm/dmbak/dmbak';

#删除表数据
delete from dmbak;
commint;

#查看数据
select count(1) from dmbak;

#还原表(这里还原表是表必须存在,不支持drop的恢复)
restore table dmbak from backupset '/dm/dmbak/dmbak';

#查看数据
select count(1) from dmbak;


#如果表示有索引和约束则是另一种写法
#创建测试表
create table dmbak2 as select * from sysobjects;
#创建索引
create index idx_dmbak2_id on dmbak2(id);

#查看数据
select count(1) from dmbak2;

#备份表
backup table dmbak2 backupset '/dm/dmbak/dmbak2';

#删除表数据
delete from dmbak2;
commint;

#查看数据
select count(1) from dmbak2;

#还原表(这里还原表是表必须存在,不支持drop的恢复)
#还原表结构
restore table dmbak2 struct from backupset '/dm/dmbak/dmbak2';
#还原表数据
restore table dmbak2 from backupset '/dm/dmbak/dmbak2';

#查看数据
select count(1) from dmbak2;

在这里插入图片描述


在这里插入图片描述

表空间的备份和还原(DM8不支持):

#备份表空间
backup tablespace main backupset '/dm/dmbak/ts_full_bak_01';

#校验表空间备份
select sf_bakset_check('disk','/dm/dmbak/ts_full_bak_01');

#修改表空间状态为脱机
alter tablespace main offline;

#还原表空间
restore table main from backupset '/dm/dmbak/ts_full_bak_01';

#修改表空间状态为联机
alter tablespace main online;

在这里插入图片描述

4、脱机备份与还原

**数据库的备份与还原:**使用dmrman完成脱机备份不同于disql,disql知道是哪个用户登录的,但是dmrman完成脱机备份的,要求数据库处于脱机状态,dmrman并不知道所要备份的是那个数据库实例,所以需要指定数据库实例对应的配置文件,从而确定是要哪个数据库实例完成脱机备份

#1.停止服务
systemctl stop DmServiceDave.service

#2.执行环境,必须进入dmrman所在的bin目录执行,否则无法备份
cd /dm/dmdbms/bin/
./dmrman 

#3.备份
backup database '/dm/dmdbms/data/cndba/dm.ini' full backupset '/dm/dm_bak/db_full_bak_01';
#增量备份
backup database '/dm/dmdbms/data/cndba/dm.ini' increment with backupdir '/dm/dm_bak' backupset '/dm/dm_bak/db_full_bak_02';

在这里插入图片描述
后面的不会了

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

redvelet

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值