• 九、数据库的备份还原


    九、数据库的备份还原

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

    在这里插入图片描述


    在这里插入图片描述


    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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    1. 操作1在这里插入图片描述

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

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

    3、联机备份与还原

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

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

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

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

    在这里插入图片描述


    在这里插入图片描述

    增量备份:

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

    在这里插入图片描述


    在这里插入图片描述

    表的备份和还原:

    #创建测试表
    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;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50

    在这里插入图片描述


    在这里插入图片描述

    表空间的备份和还原(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;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    在这里插入图片描述

    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';
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

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

  • 相关阅读:
    【牛客面试必刷TOP101】Day16.BM7 链表中环的入口结点和BM9 删除链表的倒数第n个节点
    Netty之数据解码
    007-第一代软件需求整理
    【从零开始学习深度学习】6.使用torchvision下载与查看图像分类数据集Fashion-MNIST
    【达梦数据库】学习笔记
    SpringBoot SpringBoot 原理篇 2 自定义starter 2.6 拦截器开发
    16:00面试,16:06就出来了,问的问题有点变态。。。
    Find和FirstOrDefault()的区别
    CycloneDDS配置详细说明中文版(三)
    网络安全(黑客)技术——自学2024
  • 原文地址:https://blog.csdn.net/qq_45659753/article/details/127954843