oracle备份恢复

oracle备份恢复概念:

1、备份定义
备份就是把数据库复制到转储设备的过程。其中,转储设备是指用于放置数据库副本的磁带或磁盘。通常也将存放于转储设备中的数据库的副本称为原数据库的备份或转储。备份是一份数据副本

2、备份分类
从物理与逻辑的角度来分类:
从物理与逻辑的,备份可以分为物理备份和逻辑备份。
物理备份:对数据库操作系统的物理文件(数据文件,控制文件和日志文件)的备份。物理备份又可以分为脱机备份(冷备份)和联机备份(热备份),前者是在关闭数据库的时候进行的,后者是以归档日志的方式对运行的数据库进行备份。可以使用oracle的恢复管理器(RMAN)或操作系统命令进行数据库的物理备份。
逻辑备份:对数据库逻辑组件(如表和存储过程等数据库对象)的备份。逻辑备份的手段很多,如传统的EXP,数据泵(EXPDP),数据库闪回技术等第三方工具,都可以进行数据库的逻辑备份。

从数据库的备份角度分类:
从数据库的备份角度,备份可以分为完全备份和增量备份和差异备份
完全备份:每次对数据库进行完整备份,当发生数据丢失的灾难时,完全备份无需依赖其他信息即可实现100%的数据恢复,其恢复时间最短且操作最方便。
增量备份:只有那些在上次完全备份或增量备份后被修改的文件才会被备份。优点是备份数据量小,需要的时间短,缺点是恢复的时候需要依赖以前备份记录,出问题的风险较大。
差异备份:备份那些自从上次完全备份之后被修改过的文件。从差异备份中恢复数据的时间较短,因此只需要两份数据—最后一次完整备份和最后一次差异备份,缺点是每次备份需要的时间较长。

3、恢复定义
恢复就是发生故障后,利用已备份的数据文件或控制文件,重新建立一个完整的数据库

4、恢复分类
实例恢复:当oracle实例出现失败后,oracle自动进行的恢复
介质恢复:当存放数据库的介质出现故障时所作的恢复。介质恢复又分为完全恢复和不完全恢复
完全恢复:将数据库恢复到数据库失败时的状态。这种恢复是通过装载数据库备份并应用全部的重做日志做到的。
不完全恢复:将数据库恢复到数据库失败前的某一时刻的状态。这种恢复是通过装载数据库备份并应用部分的重做日志做到的。进行不完全恢复后,必须在启动数据库时用resetlogs选项重设联机重做日志。

5、备份前
select sum(bytes)/1024/1024/1024 GB from dba_segments; 查看数据库中的索引,表等信息占用多少空间
select sum(bytes)/1024/1024/1024 GB from dba_data_files; 查看数据文件大小

数据泵备份操作:

1、创建用户:
select name from v$datafile; 查看数据目录位置
create tablespace back datafile ‘/u01/oracle/oradata/orcl/back.dbf’ size 100m autoextend on;
create temporary tablespace backtemp tempfile ‘/u01/oracle/oradata/orcl/backtemp.dbf’ size 10m; 创建用户表空间

create user back identified by “back” default tablespace back temporary tablespace backtemp; 创建备份用户
SELECT directory_name, directory_path FROM dba_directories;查询现有的所有目录
create directory backdir as ‘/u02’; 创建备份目录
grant read,write on directory backdir to back; 将目录授权给用户
grant exp_full_database,imp_full_database to back ;
grant sysbackup to back;
expdp system/oracle_4U dumpfile=expd1.dmp directory=backdir full=y logfile=exdp.log 导出备份
impdp user/passwd directory=backdir dumpfile=expdp.dmp full=y 导入备份
dba_datapump_jobs 查看正在执行的导入导出

rman恢复备份:

rman target / 以dba的角色登录
rman target “‘/ as sysbackup’” 以备份角色登录
show all 查看所有的设置
select * from v$rman_configuration;查看现有的所有配置
select *from v $recovery_file_dest;查看恢复区使用情况
select * from v $recovery_area_usage;按百分比查看使用

如果不使用catalog而使用默认的controlfile来记录备份信息则需要设置CONTROL_FILE_RECORD_KEEP_TIME,不然到期会删除相关信息默认7天
alter system set control_file_record_keep_time=14 scope=both;

rman配置:
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS; 七天有效期或者CONFIGURE RETENTION POLICY TO REDUNDANCY 5; 保持最新的五个备份
configure controlfile autobackup format for device type disk to ‘/cfs01/backup/conf/conf_%F’; 配置备份的的路径和文件名格式
DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1;数据文件备份的副本数。
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1;归档日志的备份的副本数
select * from v$rman_configuration; 查看更改过的设置
CONFIGURE xxxx clear; 清除该自定义设置

备份方式
select * from v$pdbs; 查看当前连接的数据库
backup as copy archivelog like ‘/arch%’;或者BACKUP AS COPY DATABASE FORMAT ‘/u02/rman/backup_%U’ TAG ‘BackupCopy’; ; 已拷贝的方式备份相当于cp命令
backup database plus archivelog delete input ; 备份数据库后还备份归档日志并删除当前dest的已备份
backup as compressed backupset database/tablespace xx format /backup/df_%d_%s_%p.bus; 备份集并压缩

Level 0增量备份等价于标记为0的full backup rman>backup incremental level 0 database;
level1的累计增量备份 包含上次0级别增量备份以来修改的部分 rman>backup incremental level 1 cumulative database;
level1的差异增量备份 包含上次增量备份以来修改的的部分 rman>backup incremental level 1 database;

常见操作
report schema; 列出tablespace
list copy;查看所有的copy

RMAN> report obsolete; 查看废弃的备份
RMAN> delete expired backupset;
RMAN> delete noprompt obsolete; 非交互式的直接删除

RMAN>list backup; (list backup sammary) #列出备份
RMAN>list backupset; (list backupset sammary) #列出备份集
RMAN>list archivelog all; #列出所有归档
RMAN>delete backup; #删除备份
RMAN>delete backupset; #删除备份集
RMAN>delete archivelog all; #删除所有归档
RMAN>delete archivelog all completed before ‘sysdate-7’; #删除系统时间7天以前的归档日志,不会删除闪回区有效的归档日志
RMAN>crosscheck archivelog all; #校验日志的可用性
RMAN>list expired archivelog all; #列出所有失效的归档日志

rman的备份脚本
#!/bin/bash
export DBNAME=orclcdb
export ORACLE_SID=orclcdb 
export ORACLE_BASE=/u01/app/oracle 
export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$HOME/bin:$PATH 
export BACPATH=/u01/app/oracle/oradata/backup
export BACTIME=`date "+%Y-%m-%d"`
export LGNAME=rman_backup_`date "+%Y-%m-%d"`.log
mkdir ${BACPATH}/$BACTIME
rman target /  > ${BACPATH}/${BACTIME}/${LGNAME} << EOF 
run{
CONFIGURE RETENTION POLICY TO REDUNDANCY 1;
CONFIGURE CONTROLFILE AUTOBACKUP ON; 
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '${BACPATH}/${BACTIME}/${DBNAME}_ful_%U';  
ALLOCATE CHANNEL c1 DEVICE TYPE DISK; 
BACKUP FUll DATABASE format '${BACPATH}/${BACTIME}/${DBNAME}_ful_data_file_%d_%T_%s_%p_%u_%I';
sql 'alter system archive log current';
backup archivelog all format '${BACPATH}/${BACTIME}/${DBNAME}_arc_%U_%I';
backup current controlfile format '${BACPATH}/${BACTIME}/${DBNAME}_ctl_%U_%I';
backup spfile format '${BACPATH}/${BACTIME}/${DBNAME}_spf_%U';
release channel c1;
}
quit
EOF

完全备份恢复
backup as backupset pluggable database pdb1;
restore pluggable database PDB1;(恢复要在mount下)
recover pluggable database PDB1;
select checkpoint_change# from vKaTeX parse error: Expected 'EOF', got '#' at position 35: …eckpoint_change#̲ from vdatafile_header; 先查看控制文件和数据文件头记录的scn是否一致
alter database open resetlogs; 打开数据库 (–RESETLOGS会初始化logs,重置log sequence号,创建一个新的incarnation-----NORESETLOGS 会继续使用已经存在,且有效的log files。)
不完全恢复 (point-in-time恢复必须是归档模式)
restore pluggable database PDB1;
alter session set nls_date_format=‘yyyy-mm-dd hh24:mi:ss’;
recover pluggable database pdb1 until time ‘2013-12-27:10:51:34’; ‘SYSDATE - 1’; 或者使用’2023/5/12 14:41:10’,‘yyyy-mm-dd hh24:mi:ss’;表示要恢复到那个时间比如3点有误操作可以恢复到2:59
alter database open read only; 先检查看恢复是否正常

SELECT SEQUENCE#, FIRST_TIME FROM V$ARCHIVED_LOG WHERE FIRST_TIME BETWEEN TO_DATE(‘2022-05-01 00:00:00’, ‘YYYY-MM-DD HH24:MI:SS’) AND TO_DATE(‘2022-05-05 23:59:59’, ‘YYYY-MM-DD HH24:MI:SS’); 可用于查询出该时间段中可用的归档日志
如果是没有开启归档可使用如下步骤恢复:
在这里插入图片描述
恢复控制文件:
在这里插入图片描述

恢复参数文件:
如果数据库不能启动使用,借助dummy实例来恢复
export ORACLE_SID=dummy
rman target /
startup nomount
restore spfile to ‘/u01/app/oracle/product/19.0.0/dbhome_1/dbs/spfileorclcdb.ora’ from ‘/u01/app/oracle/fast_recovery_area/ORCLCDB/autobackup/2023_07_06/o1_mf_s_1141483495_lbdrq82p_.bkp’;

恢复目录
create tablespace rmans datafile ‘/u01/oracle/oradata/orclcdb/rman.dbf’ size 20m autoextend on next 5m ;
创建catalog表空间
create user rmans identified by “rmans” default tablespace rmans quota unlimited on rmans; 创建用户
grant connect,resource,recovery_catalog_owner to rmans ,授权
[oracle@EBOM01 bin]$ rman catalog rmans/rmans@orcit2 连接catalog数据库(catalog使用的是哪个库)
RMAN> create catalog

rman target XXX/XXX@orcit catalog rman/rman@orcit2 登录那你的数据库并制定catalog库
register database; 注册数据库

select view_name from user_views; 登录catalog数据库查看相关视图即可查询相关注册数据库等等信息

备份追踪
SELECT sid, serial#, opname, target_desc, context,
to_number(substr(sofar, 1, instr(sofar, ‘/’) - 1)) * 100 / totalwork,
start_time, time_remaining, elapsed_seconds, message
FROM v$session_longops
WHERE opname LIKE ‘RMAN: %’

备份名字的一些格式:
%c 备份片的拷贝数
%d 数据库名称
%D 位于该月中的第几天 (DD)
%M 位于该年中的第几月 (MM)
%F 一个基于DBID唯一的名称,这个格式的形式为c-IIIIIIIIII-YYYYMMDD-QQ,其中IIIIIIIIII为该数据库的DBID,YYYYMMDD为日期,QQ是一个1-256的序列
%n 数据库名称,向右填补到最大八个字符
%u 一个八个字符的名称代表备份集与创建时间
%p 该备份集中的备份片号,从1开始到创建的文件数
%U 一个唯一的文件名,代表%u_%p_%c
%s 备份集的号
%t 备份集时间戳
%T 年月日格式(YYYYMMDD)
%I:DBID

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值