Oracle备份恢复(一)

  • 备份恢复的两个重要术语(**MTBF和MTTR**)
    • 一、MTBF(Mean Time Between Failures)即平均故障间隔(时间/次)
    • 二、MTTR(Mean Time To Recover)(小时/次)平均修理时间
  • 备份恢复DBA需要做什么?
  • 备份恢复DBA需要做那些考虑?
    • 技术考虑
    • 技术要求
    • 从灾难恢复考虑
    • Oracle的物理结构
    • oracle的检查点
    • DBA备份
      • 1.基于表空间的热备
      • 2. 基于数据库的热备
      • 3. 控制文件的热备
      • 4. 参数文件的热备
      • 5. 临时表空间的数据文件、日志文件不需要备份
    • 热备脚本

备份恢复的两个重要术语(MTBF和MTTR)

一、MTBF(Mean Time Between Failures)即平均故障间隔(时间/次)

计算公式为:MTBF(时间/次)=总运行时间/总故障次数

MTBF表示的是某设备故障发生期间的时间平均值

例:某设备的使用情形如下,MTBF是多少?

100小时运行-3小时修理-120小时运行-2小时修理-140小时运行-4小时修理

MTBF=(100+120+140)/3=120(时间/次)

实际应用中将此公式稍微变换一下,就可有效地用来评价工装的状态了。

“ 用MTBF=产量/修理次数”,简单理解就是MTBF表示的是修一次工装可做多少个产品,从公式上可以看出MTBF越大则表示工装的状态越好。

有了反映工装状态的指标,就可以为我们的行动提供依据了。我们每周就可以挑出MTBF小于一定标准的工装进行检修,使总体MTBF保持一个缴高的水平。

二、MTTR(Mean Time To Recover)(小时/次)平均修理时间

计算公式为:MTTR(时间/次)=总修复时间/故障次数

例:某设备的使用经过如下,MTTR是多少?

100小时运行-3小时修理-120小时运行-2小时修理-140小时运行-4小时修理

MTTR=(3+2+4)/3=3(小时/次)

备份恢复DBA需要做什么?

为了缩短MTTR、延长MTBFDBA平时可以做的事情:
◎ 在网络层需要做冗余,比如双线路、双交换机、双网卡、双负载均衡器等
◎ 应用服务器做冗余
◎ 硬件物理级做冗余,如RAID1,RAID5等,10G后推出了ASM,自动存储管理
◎ 逻辑级冗余
⊕ 控制文件镜像,将文件存放到不同磁盘控制器下的不同磁盘上当某个镜像控制文件损坏时,对于控制文件读和写都会挂起数据库。
⊕ 日志文件镜像,将文件存放到不同磁盘控制器下的不同磁盘上,日志文件镜像中某一个日志文件成员介质损坏,不影响数据库正常运行,但会报错误信息到告警日志。其实镜像还对读的性能有好处,但是对写的性能会有坏处
⊕ 数据文件
对于数据文件介质故障,读的时候会在告警日志报一个操作系统错误,在写的时候要分如下情况:
◆ 如果是写SYSTEM文件或者包含活动回滚段的数据文件失败,实例将被关闭
◆ 如果写其它文件失败,要分是否归档模式
o 归档模式下:读的时候只是抛错,写的时候发现文件写错误,会自动将该文件设置成OFFLINE
o 非归档模式下:DBWR写失败,实例会DOWN,因为不能直接把文件OFFLINE
⊕ 10G的回收站支持FLASHBACK DROP
⊙ 测试备份
DBA 可以通过制定计划定期测试备份的有效性,来确保他们的策略可以缩短MTTR 并延长MTBF。有效的恢复取决于有效的备份

备份恢复DBA需要做那些考虑?

技术考虑

⊙ 资源:硬件、软件、人力和时间
⊙ 操作系统文件的物理镜像
⊙ 数据库中各对象的逻辑镜像
⊙ 数据库配置
⊙ 事务处理量,这将影响需要备份的频率

技术要求

⊙ 你有多少数据?
⊙ 你的计算机的能力及容量是否足以支持备份?
⊙ 数据是否易于重新创建?比如索引
⊙ 你是否可以将数据从纯数据文件重新加载到数据库?
⊙ 数据库配置是否能支持从不同类型故障中复原?

从灾难恢复考虑

⊙ 自然灾害
你的数据可能非常重要,以至于你必须确保甚至在系统完全瘫痪的情况下也能够复原
自然灾害和其它问题可能影响你的数据的可用性,因此在创建灾难恢复计划时应考F虑这些问题,在选择备份和恢复策略时,应考虑以下一些问题
⊙ 在发生以下严重灾难时,你的业务会受到什么样的影响
◎ 水灾、火灾、地震或飓风
◎ 存储硬件或软件故障
⊙ 备份是否存储在其它地方?如磁带,磁盘,CDROM,闪存等
⊙ 容灾考虑的是同楼、同区、同城、跨城、跨国
⊙ 容灾考虑网络带宽,或者其它灾备传输途径,比如人工快递

Oracle的物理结构


Oracle 实例
Oracle的 进程结构,内存区域和后台进程合称为一个Oracle实例
◎ SGA
◎ 后台进程(即PMON、SMON、DBWn、LGWR 和CKPT)组成
◎LGWR
⊙ DBA 可以使用ALTER SYSTEM SWITCH LOGFILE 命令强制进行日志切换
⊙ ALTER SYSTEM ARCHIVE LOG ALL 会归档除了CURRENT组外的所有未归档的日志
⊙ ALTER SYSTEM ARCHIVE LOG CURRENT

数据文件
每一个ORACLE数据库有一个或多个物理的数据文件(data file)。一个数据库的数据文件包含全部数据库数据。逻辑数据库结构(如表、索引)的数据物理地存储在数据库的数据文件中。数据文件有下列特征:
一个数据文件仅与一个数据库联系。
一旦建立,数据文件不能改变大小.
一个表空间(数据库存储的逻辑单位)由一个或多个数据文件组成。
数据文件中的数据在需要时可以读取并存储在ORACLE内存储区中。

日志文件
每一个数据库有两个或多个日志文件(redo log file)的组,每一个日志文件组用于收集数据库日志。日志的主要功能是记录对数据所作的修改,所以对数据库作的全部修改是记录在日志中。在出现故障时,如果不能将修改数据永久地写入数据文件,则可利用日志得到该修改,所以从不会丢失已有操作成果。
日志文件主要是保护数据库以防止故障。为了防止日志文件本身的故障,ORACLE允许镜象日志(mirrored redo log),以致可在不同磁盘上维护两个或多个日志副本。
日志文件中的信息仅在系统故障或介质故障恢复数据库时使用,这些故障阻止将数据库数据写入到数据库的数据文件。然而任何丢失的数据在下一次数据库打开时,ORACLE自动地应用日志文件中的信息来恢复数据库数据文件。Oralce两种日志文件类型:
1、联机日志文件 这是Oracle用来循环记录数据库改变的操作系统文件
2、归档日志文件 这是指为避免联机日志文件重写时丢失重复数据而对联机日志文件所做的备份

控制文件
每一ORACLE数据库有一个控制文件(control file),它记录数据库的物理结构,包含下列信息类型:
数据库名;
数据库数据文件和日志文件的名字和位置;
数据库建立日期。
为了安全起见,允许控制文件被镜象。
每一次ORACLE数据库的实例启动时,它的控制文件用于标识数据库和日志文件,当着手数据库操作时它们必须被打开。当数据库的物理组成更改时,ORACLE自动更改该数据库的控制文件。数据恢复时,也要使用控制文件。

参数文件
参数文件记录了Oracle数据库的基本参数信息,主要包括数据库名、控制文件所在路径、进程等。与旧版本的初始化参数文件INITsid.ora不同,在Oracle10g及以上还可以使用二进进制服务器参数文件,并且该服务器参数文件在安装Oracle数据库系统时由系统自动创建,文件的名称为SPFILEsid.ora,sid为所创建的数据库实例名。

oracle的检查点

⊙ 完全检查点
当关闭数据库shutdown normal、immediate 、transactional(异常关闭除外) 或通过ALTER SYSTEM CHECKPOINTA 命令手动启动检查点操作时,将执行称为完全检查点的过程在完全检查点操作中,DBWn 将数据库缓冲区高速缓存中的所有脏缓冲区数据写入数据文件,所以完全检查点,要写的数据最多## 如何改变文本的样式

⊙ 增量检查点
增量检查点(跟快速启动检查点相关)是持续活动的检查点,是一种心跳机制,每3秒检查一次。DBWn 定期从检查点队列写出缓冲区数据,从而不断推进内存中的增量检查点操作

⊙ 部分检查点
ALTER TABLESPACE BEGIN BACKUP 命令仅对缓冲区高速缓存中属于该表空间的脏缓冲区启动部分检查点操作
ALTER TABLESPACE tablespace OFFLINE NORMAL 命令也可用于启动部分检查点操作

⊙ 数据缓冲区
o redo buffer
o logfile
o undofile
o undo的脏缓存
一定要先写日志BUFFER,再修改脏数据块
先写LOGFILE,再写DATAFILE。
先LGWR,再DBWR,这个顺序不能错

DBA备份

1.基于表空间的热备

–查询表空间的名字和状态

SQL> select file_id,tablespace_name,status from dba_data_files;

FILE_ID TABLESPACE_NAME STATUS


 4 USERS              AVAILABLE3 UNDOTBS1              AVAILABLE2 SYSAUX              AVAILABLE1 SYSTEM              AVAILABLE5 COSTCTL_TBS              AVAILABLE6 DEV_DATA              AVAILABLE7 PDMS_DATA              AVAILABLE

已选择7行。

–开始备份,将会

SQL> alter tablespace PDMS_DATA begin backup;

表空间已更改。
  --拷贝数据文件到指定的备份磁盘上

SQL> host cp /opt/oracle/app/oradata/pdms/PDMS_DATA.dbf /u03/backup/hotbak
  --查看所有数据文件的备份状态

SQL> select * from v$backup;

 FILE# STATUS         CHANGE# TIME

 1 NOT ACTIVE               02 NOT ACTIVE               03 NOT ACTIVE               04 NOT ACTIVE               05 NOT ACTIVE               06 NOT ACTIVE               07 ACTIVE               12657642 15-12月-16

–将表空间重新设置为非备份状态

SQL> alter tablespace PDMS_DATA end backup;

表空间已更改。
  --查看备份状态

SQL> select * from v$backup;

 FILE# STATUS         CHANGE# TIME

 1 NOT ACTIVE               02 NOT ACTIVE               03 NOT ACTIVE               04 NOT ACTIVE               05 NOT ACTIVE               06 NOT ACTIVE               07 NOT ACTIVE           12657642 15-12月-16

已选择7行。

2. 基于数据库的热备

alter database begin backup;

  拷贝所有的datafile到备份目录alter database end backup;

3. 控制文件的热备

alter database backup controlfile to '<dir>' [reuse];          --控制文件的完整备份
alter database backup controlfile to trace as '<dir>'  --用于创建控制文件的语句,丢失了部分信息,可以直接查看

SQL> alter database backup controlfile to ‘/u03/backup/hotbak/control01.ctl’;

数据库已更改。

SQL> alter database backup controlfile to trace as ‘/u03/backup/hotbak/control02.ctl’;

数据库已更改。

4. 参数文件的热备

create pfile from spfile ;

  create pfile = '<dir>' from spfile;

SQL> create pfile = ‘/u03/backup/hotbak/initdbsrv1.ora’ from spfile;

文件已创建。

5. 临时表空间的数据文件、日志文件不需要备份

热备脚本

基于表空间的热备(推荐使用这种方式)
vim hotbak.sql

复制代码
set feedback off
set heading off
set verify off
set trimspool off
set pagesize 0
set linesize 200
define dir = ‘/u03/backup/hotbak’
define script = ‘/tmp/hotbak_tb.sql’
ho rm &script
ho rm &dir/*
spool &script
select ‘alter tablespace ‘|| tablespace_name ||’ begin backup ;’ ||
chr(10)||'ho cp ’ || file_name || ’ &dir ’ ||
chr(10)||'alter tablespace ‘|| tablespace_name || ’ end backup;’
from dba_data_files order by tablespace_name;
spool off
start &script
alter database backup controlfile to ‘&dir/controlbak.ctl’;
create pfile = ‘&dir/initdbsrv1.ora’ from spfile;
复制代码
其中char(10)表示换行,红色部分需要自行修改

SQL> start hotbak.sql; --执行该脚本即可对数据库基于表空间进行热备

基于数据库(数据文件)的热备
vim hotbak.sql

复制代码
set feedback off
set heading off
set verify off
set trimspool off
set pagesize 0
set linesize 200
define dir = ‘/u03/backup/hotbak’
define script = ‘/tmp/hotbak_tb.sql’
ho rm &script
ho rm &dir/*
spool &script
select ‘alter tablespace ‘|| tablespace_name ||’ begin backup ;’ ||
chr(10)||'ho cp ’ || file_name || ’ &dir ’ ||
chr(10)||'alter tablespace ‘|| tablespace_name || ’ end backup;’
from dba_data_files order by tablespace_name;
spool off
start &script
alter database backup controlfile to ‘&dir/controlbak.ctl’;
create pfile = ‘&dir/initdbsrv1.ora’ from spfile;

Oracle备份恢复(一)相关推荐

  1. bat循环导oracle,Oracle备份恢复与批处理文件实操

    以下的文章主要是对简单的Oracle备份恢复批处理文件的实际操作步骤的介绍,以及对简单的Oracle备份恢复批处理文件的两个建议的详细介绍,以下就是文章的相关内容的介绍,望你会有所了解. 简单的Ora ...

  2. oracle备份恢复(dmp文件)

    oracle备份恢复(dmp文件) jidmp文件恢复方式:只能通过代码恢复 注意: Oracle expdp/impdp导出导入命令及数据库备份  2者之间的区别 使用EXPDP和IMPDP时应该注 ...

  3. Oracle 备份恢复概念

    --====================== -- Oracle 备份恢复概念 --====================== 数据库维护中,备份或恢复是重中之重的问题.尽管很多时候数据库系统运 ...

  4. 收集Oracle备份恢复信息

    收集Oracle备份恢复信息 rman target / spool log to rman_report.log set echo on show all; report schema; list ...

  5. Script:收集Oracle备份恢复信息

    我们在诊断Oracle backup restore问题时总是希望能获得足够的诊断信息,一般来说RDA会是一个最好的诊断信息收集工具,但是有时候客户会很反感使用RDA(不信任感),这里我们提供一段专门 ...

  6. oracle的故障包括用户或应用程序故障_数据库实例错误,oracle 备份恢复基础

    一,与基础 1.,备份简介 备份是数据的一个副本,一般包括控制文件和数据文件等 物理备份与逻辑备份 物理备份指物理文件的副本,逻辑备份是指使用工具抽取逻辑数据(例如,表或存储过程)并保存在二进制文件中 ...

  7. Oracle备份恢复概要

    一.备份和恢复概要 1.高可用性 (1)HA(High Availability,HA) (2)RAC(Real Application Clusters) (3)DG(Data Guard) (4) ...

  8. Oracle 备份恢复 31个实验 7-12

    备份恢复实验之七 基于时间的不完全恢复(举个例子,你10:00删除了一张表,可事后你发现误删了,那你就要将数据库的时间回退到9:59,也就是回退到这张表还在的时刻,这里当然不是说表被误删就一定要采用传 ...

  9. ORACLE 备份恢复命令imp/exp

    几天闲来无事,就整理了下imp/exp imp/exp是Oracle导入导出命令,可以用作数据的迁移,expdp/imdp也是Oracle数据导入导出的命令,效率比imp/exp效率要高,这个后面再讨 ...

最新文章

  1. 自己动手写C语言编译器(2)
  2. python变量存储 堆与栈内存内存_浅析JS中的堆内存与栈内存
  3. 40. Combination Sum II **
  4. jenkins测试c语言接口,Jenkins集成接口测试实践(一)
  5. 完美解决Mac电脑睡眠之后苹果电脑没有声音的方法
  6. IPV4与IPV6的区别(史上最详细)
  7. [转自周星星的blog] 解决为什么wcout不能输出中文问题
  8. logout退出功能是怎么实现的?login登陆功能室怎么实现的
  9. 分享:绘图不可不知的CAD经典技巧
  10. MATLAB——tiff文件数据读取,modis
  11. 计算机资源管理菜单包括哪些,资源管理器文件菜单有哪些命令,资源管理器命令...
  12. 高速公路5G智能网联技术、方案和应用
  13. 《高等统计物理学》5:非平衡态统计物理初步
  14. 如何快速查询学术会议
  15. 熵值法的Python实现
  16. Uipath Excel-读取操作(Read Row)
  17. 4000GB、数百亿条个人信息泄露!大数据行业知名企业数据堂被查
  18. [强化学习实战]出租车调度-Q learning SARSA
  19. 电子MES生产管理系统,车间条码生产管理系统解决方案
  20. 如何分析一篇论文或者是期刊?

热门文章

  1. Confluence 6 使用 LDAP 授权连接一个内部目录 - 用户 Schema 设置
  2. 【STL学习指南】STL的入门学习指南
  3. Gartner2021新兴技术和趋势影响力雷达图:四项颇具影响力的技术
  4. 闲鱼已售商品信息查询系统。手搓市场定价/行情查询利器
  5. JSON pretty化
  6. 2017qq红包雨最强攻略
  7. python程序怎样在windows运行
  8. 水听器matlab,睿睿
  9. 74ls48电子集成块
  10. 2022年中国高校计算机大赛-团队程序设计天梯赛(GPLT)上海理工大学校内选拔赛 题解