10-备份与还原
概念
备份的主要目的就是数据容灾
还原备份集–>数据库可用
数据文件:页、簇和段 数据页是最小的数据存储单元
备份的本质就是从数据库文件中拷贝有效的数据页保存到备份集中
- 数据文件的描述页
- 被分配使用的数据页
日志的形式写到归档日志中
需要将备份过程中产生的归档日志也保存到备份集中
还原和恢复是备份的逆过程
- 还原:将备份集中的有效数据页重新写入目标数据文件的过程restore
- 恢复:通过重做归档日志,将数据库的状态恢复到备份结束时的状态recover
- 指定时间点
- 指定LSN
环境:需要在归档模式下备份
创建测试用户
SQL> create user dexp identified by dameng123; //创建用户
操作已执行
已用时间: 6.686(毫秒). 执行号:768.
SQL> grant resource,dba to dexp; //给权限
操作已执行
已用时间: 2.335(毫秒). 执行号:3201.
SQL> conn dexp/dameng123; //登录用户
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 2.862(ms)
SQL> create table dexp as select * from sysobjects; // 创建表
操作已执行
已用时间: 11.632(毫秒). 执行号:3301.
SQL> select count(1) from dexp; //查看表的信息
行号 COUNT(1)
---------- --------------------
1 1255
已用时间: 1.224(毫秒). 执行号:3302.
SQL> host
[dmdba@study ~]$ mkdir /dm/dmbak // 创建备份目录
10.1 逻辑备份
冷备
数据库停止运行时的备份
热备
数据库启动状态下的备份
10.1.1 全库导出/导入
导出
[dmdba@study ~]$ dexp SYSDBA/SYSDBA file=full01.dmp log=full01.log directory=/dm/dmbak full=y;
导入
SQL>drop table dexp; //删除表
[dmdba@study ~]$ dimp SYSDBA/SYSDBA file=full01.dmp log=full02.log directory=/dm/dmbak full=y;
SQL> select count(1) from dexp;
行号 COUNT(1)
---------- --------------------
1 1255
已用时间: 1.811(毫秒). 执行号:46002.
10.1.2 按用户导出/导入
导出
[dmdba@study ~]$ dexp SYSDBA/SYSDBA file=user01.dmp log=user01.log directory=/dm/dmbak owner=dexp;
导入
SQL>drop table dexp; //删除表
[dmdba@study ~]$ dimp SYSDBA/SYSDBA file=user01.dmp log=user02.log directory=/dm/dmbak owner=dexp;
SQL> select count(1) from dexp;
行号 COUNT(1)
---------- --------------------
1 1255
已用时间: 1.163(毫秒). 执行号:51102.
10.1.3 按模式
导出
[dmdba@study ~]$ dexp SYSDBA/SYSDBA file=schema01.dmp log=schema01.log directory=/dm/dmbak schemas=dexp
导入
SQL> drop table dexp;
[dmdba@study ~]$ dimp SYSDBA/SYSDBA file=schema01.dmp log=schema02.log directory=/dm/dmbak schemas=dexp
SQL> select count(1) from dexp;
行号 COUNT(1)
---------- --------------------
1 1255
已用时间: 0.986(毫秒). 执行号:53201.
10.2 物理备份
完全备份
包含指定数据库和表空间所有数据
增量备份
基于一次完全备份或上一次增量备份后,往后每次备份只备份与前一次相比有差异的的数据文件
逻辑备份
脱机备份是关闭数据库状态下的备份
dmrman 命令行方式
console DM控制台工具 图形化界面的方式
10.2.1 联机备份
全备
全库备份到默认路径下
SQL> backup database
全库备份到指定路径下(备份目录不带文件名)
SQL> backup database full backupset ‘备份目录’;
配置归档之后备份
SQL> backup database full backupset '/dm/dmbak/full01';
操作已执行
已用时间: 00:00:03.190. 执行号:53401.
还原:
[dmdba@study DM01]$ /dm8/bin/DmServiceDMSERVER01 stop
[dmdba@study DM01]$ /dm8/bin/dmrman
RMAN> restore database '/dm/dmdbms/data/DAMENG/dm.ini' from backupset '/dm/dmbak/full01';
RMAN>recover database '/dm/dmdbms/data/DAMENG/dm.ini' from backupset '/dm/dmbak/full01';
RMAN> recover database ''/dm/dmdbms/data/DAMENG/dm.ini' update DB_magic;
[dmdba@study DM01]$ /dm8/bin/DmServiceDMSERVER01 restart
增备
基于基础备份集的增量备份,并备份到指定目录
SQL> backup database increment to 名称 backupset ‘目录’;
基于指定备份集的增量备份,并备份到指定目录
SQL> backup database increment with backupdir ‘基于目录’ backupset ‘增加的目录’;
SQL> backup database increment to inc_1 backupset '/dm/dmbak/inc_1';
操作已执行
已用时间: 00:00:07.242. 执行号:53402.
SQL> backup database increment with backupdir '/dm/dmbak' backupset '/dm/dmbak/inc_2';
操作已执行
已用时间: 00:00:02.964. 执行号:53403.
图形化界面
如果是指定的备份目录 需要添加工作目录才可以显示
10.2.2 脱机备份
dmrman 命令行模式
备份
[dmdba@study ~]$ dmrman
dmrman V8
RMAN> backup database '/dm8/data/DM01/dm.ini' to DMfull01 backupset '/dm8/backup/full/DMfull01';
备份集常用操作:
查看
RMAN>show backupset '/dm8/backup/full/DMfull01';
检查
RMAN>check backupset '/dm8/backup/full/DMfull01';
删除
RMAN>remove backupset '/dm8/backup/full/DMfull01';
./console 打开控制台
关闭服务
10.3 物理导出的还原