一、Oracle备份

1.故障类型

2.备份分类

全量备份:对数据库完整的备份

  • 优点:可实现数据100%恢复,恢复时间短,操作方便
  • 缺点:备份数据量大,存储空间需求大

增量备份:从最后一次备份后改变的文件

  • 优点:备份数据量小,备份时间短;
  • 缺点:恢复时依赖之前的备份记录,出现问题的风险比较大

差异备份:在最后一次完整后被修改的文件

  • 优点:恢复数据时间短--因此只需要两份数据,最后一次完全备份和最后一次差异备份
  • 缺点:每次备份需要的时间长

建议:一月一次全量,一周一次增量

二、RMAN(恢复管理器)

  • RMAN是 DBA 的一个重要工具,用于备份、恢复 Oracle 数据库
  • 完成对目标数据库的控制文件、数据文件及归档日志文件以及SPFILE的联机备份
  • 能够实现对数据库的完全或不完全的恢复操作
  • 支持在线热备份、多级增量备份、并行备份,恢复
  • 减少所需要备份量
  • 备份、恢复使用简单

1.恢复目录数据库

  • 恢复目录用于存放RMAN元数据,它是存放RMAN元数据的一个可选设置

恢复目录数据库创建步骤

  • 创建恢复目录
a创建恢复目录数据库
b.在恢复目录数据库中创建RMAN 用户并授权
c.在恢复目录数据库中创建恢复目录
  • 注册目标数据库到恢复目录
a.进入RMAN环境
b.连接目标数据库
c.连接恢复目录数据库
d.注册

2.RMAN通道

  • 当使用RMAN在存储设备(磁盘或磁带)上执行备份、转储等操作时,RMAN需要在存储设备和目标数据库之建立连接,该连接被称为通道。
  • 如果不配置通道则使用默认通道

(1)自动通道配置

--指定自动通道并行个数。

CONFIGURE  DEVICE TYPE  sbt/disk PARALLELISM  n;

--指定自动通道的默认设备

CONFIGURE  DEFAULT DEVICE TYPE TOsbt/disk;

(2)手动通道配置

RUN{

ALLOCATE CHANNEL 通道名称 DEVICE TYPE 设备类型;

……}

(3)显示通道配置参数

RMAN>SHOW ALL;

3.RMAN-备份集与备份片

(1)备份集

  • 是一次备份的集合,它包含本次备份的所有备份片,以Oracle专有的格式保存;是一个逻辑数据的集合

(2)备份片

  • 用于存储备份集信息的二进制文件
  • 一个或多个备份片组成一个备份集
  • 一个备份片对应一个OS文件
  • 通常每个备份集只包含一个备份片

(3)RMAN-Format字符串替代变量说明:

%c:备份片的拷贝数(从1开始编号);

%d:数据库名称;

%D:位于该月中的天数 (DD);

%M:位于该年中的月份 (MM);

%F:一个基于DBID 唯一的名称,这个格式的形式为c-IIIIIIIIII-YYYYMMDD-QQ,其中IIIIIIIIII 为该数据库的DBID,YYYYMMDD 为日期,QQ 是一个1-256的序列;

%n:数据库名称,并且会在右侧用x字符进行填充,使其保持长度为8;

%u:是一个由备份集编号和建立时间压缩后组成的8字符名称。利用%u可以为每个备份集生成一个唯一的名称;

%p:该备份集中备份片的编号,从1 开始编号;

%U:是%u_%p_%c的简写形式,利用它可以为每一个备份片生成一个唯一名称,这是最常用的命名方式;

%s:备份集的号;

%t:备份集时间戳;

%T:年月日格式(YYYYMMDD);

注:如果在BACKUP命令中没有指定FORMAT选项,则RMAN默认使用%U为备份片段命名

4.RMAN-备份命令

  • 用于备份数据库文件,可以将多个文件、表空间、整个数据库以备份集形式备份到磁盘或磁带上

在归档方式下备份数据库步骤
  • 在SQLPlus环境下

①以SYSDBA身份登录

②查看数据库归档方式

③如果处于非归档方式,则将数据库处于归档方式下

④打开数据库

  • 在RMAN环境下

①连接目标数据库和恢复目录数据库

②备份数据库和归档日志

5.RMAN恢复命令

使用RMAN备份的数据库页只能使用RMAN提供的恢复命令进行恢复

RMAN恢复数据库用到了两个命令:

  • RESTORE 命令:从备份中还原数据库文件
  • RECOVER 命令:通过应用归档日志文件中记录的更改来恢复已还原文件

(1)恢复数据库步骤

①保证数据库在MOUNT模式下启动

②在RMAN环境下

  • 连接目标数据库
  • 执行RESTORE命令
  • 执行RECOVE命令
  • 再打开数据库

6.RMAN案例

(1)开启archivelog

su -oracle

sqlplus-s sys/pwd123 as sysdba

SQL>shutdown immediate;

SQL> startupmount;

SQL> alterdatabase archivelog;

SQL> alterdatabase open;

SQL> archivelog list;

(2)创建用户并授权

SQL> createtablespace rmants datafile '/opt/oracle/oradata/rmants.ora' size 20M;

SQL> createuser rman identified by rman default tablespace rmants temporary tablespacetemp;

SQL> grantconnect,resource to rman;

SQL> grantrecovery_catalog_owner to rman;

SQL> quit;

(3)注册到目录数据库,并创建通道

rmancatalog rman/rman

RMAN> createcatalog tablespace rmants;

rmantarget sys/pwd123

RMAN> connectcatalog rman/rman

RMAN> registerdatabase;

run {

allocate channel ch1 device type disk;

allocate channel ch2 device type disk;

allocate channel ch3 device type disk;

};

RMAN> quit;

(4)备份

mkdir -p/opt/oracle/rmanbak

rman catalog rman/rman

RMAN> connecttarget sys/pwd123;

RMAN> backupdatabase format '/opt/oracle/rmanbak/%d_%T.%U';

RMAN> backup database plus archivelog delete input;

(5)恢复

rman catalog rman/rman

RMAN> connecttarget sys/pwd123;

RMAN> shutdown immediate;

RMAN> startupmount;

RMAN> restoredatabase;

RMAN> recoverdatabase;

RMAN> alterdatabase open;

三、数据泵导入与导出

1.基于命令行的数据泵导出步骤

  • 连接Oracle数据库
  • 创建一个操作目录
  • 授予用户操作dump_dir目录的权限
  • 使用命令expdp导出数据, 使用命令impdp导入数据

2.案例

创建工作目录

mkdir -p/opt/oracle/backup

sqlplussys as sysdba;

SQL>create directory dump_dir as '/opt/oracle/backup';

SQL> grantread,write on directory dump_dir to scott;

SQL>quit;

expdpscott/pwd123 directory=dump_dir dumpfile=scotttab-$(date +%F).dmptables=emp,dept;

sqlplussys as sysdba;

SQL> connscott/pwd123;

SQL> droptable emp;

SQL> quit;

impdp scott/pwd123 directory=dump_dirdumpfile=scotttab-2017-12-18.dmp tables=scott.emp

sqlplus sys as sysdba;

SQL> connscott/pwd123;

SQL> select* from emp;

四、闪回技术

注意

  • 闪回数据库是基于闪回恢复区(FlashRecovery Area)特性实现的,如果要使用闪回数据库技术,还需要启用闪回恢复区
  • 闪回删除是基于回收站(RecycleBin)特性实现的,如果要使用闪回删除技术,还需要启用回收站
  • 闪回查询、闪回版本查询、闪回事务查询以及闪回表主要是基于撤销表空间中的回滚信息实现的

1.闪回恢复区

  • 闪回恢复区为控制文件备份、归档重做日志、闪回日志和数据库备份提供了一个统一存储位置

操作步骤

①启用归档模式,闪回数据库只能处于归档模式

②建立闪回恢复区

  • 指定闪回恢复区的大小
  • 指定闪回恢复区的位置
  • 指定闪回恢复区中数据的保留时间

③启用闪回日志

④查询是否成功启用闪回恢复区

⑤查询是否成功启用归档

⑥查询是否成功启用闪回数据库

2.闪回数据库

闪回数据库基本语法

FLASHBACK  DATABASE [database] TO    [SCN|TIMESTAMP expression]|

[SCN|TIMESTAMP expression]|

[BEFORE SCN|TIMESTAMPexpression]

参数说明:

  • TO SCN:将数据库恢复到指定SCN的状态
  • TO TIMESTAMP:将数据库恢复到指定的时间点
  • TO BEFORE SCN:将数据库恢复到指定SCN的前一个SCN状态
  • TO BEFORE TIMESTAMP:将数据库恢复到指定时间点前的状态

案例

a.设置闪回恢复区

sqlplussys as sysdba

SQL> shutdownimmediate;

SQL>startup mount;

SQL> alter database archivelog;    //启用归档模式,闪回数据库只能处于归档模式

SQL> altersystem set db_recovery_file_dest='/opt/oracle/flash_recovery_area' scope=both;    //设置闪回恢复区位置

SQL> altersystem set db_recovery_file_dest_size=3G scope=both;    //设置闪回恢复区大小

SQL> altersystem set db_flashback_retention_target=1440;    //设置闪回恢复区数据保留时间为一天,单位为min

SQL> shutdownimmediate;

SQL>startup mount;

SQL>alter database flashback on;    //启用闪回日志

SQL> alterdatabase open;

SQL> showparameter db_recovery_file;    //查询是否成功请闪回恢复区

SQL> archivelog list;

SQL> selectflashback_on from v$database;    //查询是否成功启用闪回数据库

b.闪回数据库操作

闪回数据库操作的限制

  • 数据文件损坏或丢失等介质故障不能使用闪回数据库进行恢复
  • 闪回数据库只能基于当前正常运行的数据文件闪回数据库功能启动后,如果发生数据库控制文件重建或利用备份恢复控制文件,则不能使用闪回数据库
  • 不能使用闪回数据库进行数据文件收缩操作
  • 不能使用闪回数据库将数据库恢复到在闪回日志中可获得最早的SCN之前的SCN,因为闪回日志文件在一定条件下被删除,而不是始终保存在闪回恢复区中
方式一:

SQL> SELECTCURRENT_SCN FROM V$DATABASE;    //查看当前的SCN

SQL>create table test1 (id number,name char(20));    //创建测试表

SQL>insert into test1 values(1,'database');    //插入数据

SQL> commit;

SQL> shutdownimmediate;

SQL> startupmount;

SQL>flashback database to scn 1032024;    //闪回到SCN

SQL> alterdatabase open resetlogs;    //开数据库

SQL> select* from test1;    //查询报错

方式二:

SQL>alter session set NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS';    //设置显示时间

SQL> selectoldest_flashback_scn, oldest_flashback_time from  v$flashback_database_log;    //查询数据库中当前的闪回SCN和时间

SQL> selectsysdate from dual;    //查询当前系统时间

SQL> settime on    //改变数据库当前时间状态

17:04:58 SQL> create table test2(id number,name char(20));    //创建测试表

17:05:22 SQL> insert into test2 values(1,'database');    //插入测试数据

17:05:44 SQL> commit;

17:05:48 SQL> shutdown immediate;

17:06:05 SQL> startup mount;

17:06:20 SQL> flashback database totimestamp(to_timestamp('2015-09-27 22:22:06','YYYY-MM-DD HH24:MI:SS'));

//闪回到指定时间

17:07:16 SQL> alter database open resetlogs;    //开启数据库

17:07:31 SQL> select * from test2;    //查询测试

3.闪回表

  • 闪回表可将表恢复到特定的时间点或者指定的SCN
  • 闪回表实际上是对表进行DML操作的过程
  • 数据库保持联机

必须满足下列条件

  • 用户具有FLASHBACKANY TABLE系统权限,或者具有所操作表的FLASHBACK对象权限
  • 用户具有所操作表的SELECT,INSERT,DELETE,ALTER对象权限
  • 启动被操作表的ROWMOVEMENT特性,可以采用下列方式进行

ALTER TABLE table ENABLE ROWMOVEMENT;

闪回表操作的基本语法为

FLASHBACK TABLE [schema.]table TO

SCN|TIMESTAMP expression

[ENABLE|DISABLE TRIGGERS]

参数说明:

SCN:将表恢复到指定的SCN时状态

TIMESTAMP:将表恢复到指定的时间点

ENABLE|DISABLE TRIGGER:在恢复表中数据的过程中,表上的触发器是激活还是禁用(默认为禁用)

注意:SYS或以AS SYSDBA身份登录的用户不能执行闪回表操作

案例

SQL> grantselect any dictionary to scott;

SQL> quit;

sqlplusscott;

SQL> settime on

17:28:28 SQL> alter session set NLS_DATE_FORMAT='YYYY-MM-DDHH24:MI:SS';    //更新日期显示格式

17:28:44 SQL> select sysdate from dual;

17:28:55 SQL> create table test3(id number primary key, name char(30));    //插入测试数据

17:29:42 SQL> insert into test3 values(1,'zhang');

17:30:07 SQL> insert into test3 values(2,'zhao');

17:30:15 SQL> insert into test3 values(3,'wang');

17:30:23 SQL> commit;

17:54:55 SQL> select current_scn fromv$database;    //查询当前scn号

17:55:14 SQL> update test3 set name='liu'where id=1;   ##更新数据

17:55:33 SQL> commit ;

17:55:36 SQL> select * from test3;

17:31:51 SQL> alter table test3 enablerow movement;    //启动test3表的ROW MOVEMENT特性

17:55:42 SQL> flashback table test3 totimestamp to_timestamp('2017-12-18 23:17:49','YYYY-MM-DD HH24:MI:SS');

//恢复表到指定时间

17:56:02 SQL> select * from test3;

4.闪回删除

  • 闪回删除可恢复使用DROP TABLE语句删除的表,是一种对意外删除的表的恢复机
  • 闪回删除功能的实现主要是通过数据库中的“回收站”(Recycle Bin)技术实现的
  • 为了使用闪回删除技术,必须开启数据库的“回收站”

闪回删除的基本语法

FLASHBACK TABLE [schema.]table TO BEFOREDROP [RENAME TO table]

注意:不支持SYS用户,SYSTEM表空间下的对象也不能从回收站里拿到。故使用SYS或者SYSTEM用户登录时,查询为空

案例

sqlplus sys as sysdba

SQL> alter system set recyclebin=on deferred;    //启动回收站

SQL> showparameter recyclebin;    //查看回收站是否启用

sqlplusas scott

SQL> create table exampe(id numberprimary key, name char(20));

SQL> insert into exampe values(1,'beforedrop');

SQL> commit;

SQL> drop table exampe;

SQL> flashback table exampe to beforedrop rename to new_example;

SQL> select *from new_example;

SQL> purge recyclebin;    //清空回收站

SQL> selectobject_name,original_name,type from user_recyclebin;    //查询是否为空

5.闪回查询

闪回查询:使用闪回查询功能,可以执行截止到特定时间的查询

语法

select column_name[,...]

from table_name

[as of scn | timestamp expression]

[where condition]

案例

sqlplus scott;

SQL> alter session setnls_date_format='YYYY-MM-DD HH24:MI:SS';

SQL> set time on;

18:01:38 SQL> select empno,sal fromscott.emp where empno=7844;    //查询目前表记录值

18:01:50 SQL> update scott.emp setsal=2000 where empno=7844;    //第一次更新数据

18:02:05 SQL> commit;

18:02:17 SQL> select empno,sal fromscott.emp where empno=7844;    //查询第一次更改值

18:02:29 SQL> update scott.emp setsal=3000 where empno=7844;    //第二次更新数据

18:02:36 SQL> commit;

18:02:43 SQL> select empno,sal fromscott.emp where empno=7844;    //查询第二次更改值

18:02:47 SQL> select empno,sal fromscott.emp as of timestamp to_timestamp('2017-12-18 12:24:14','YYYY-MM-DDHH24:MI:SS') where empno=7844;

//删除查询未更改数据之前的数据值

18:03:31 SQL> select empno,sal fromscott.emp as of timestamp to_timestamp('2017-12-18 12:24:47','YYYY-MM-DDHH24:MI:SS') where empno=7844;

//删除查询第一次数据更改的数据值

18:04:32 SQL> select empno,sal fromscott.emp where empno=7844;    //查询当前数据值

Oracle备份与恢复相关推荐

  1. 也谈ORACLE备份与恢复

    经常听到有人说,某数据库备份方法好,某备份方法不好,或者说现在都流行用rman来备份了,逻辑备份已经过时了,冷备份就更不值一提了,其实数据库的备份从来没有什么好坏之分.没有过时之说,合适才是最重要的, ...

  2. Oracle备份与恢复 关于expdp导出远程数据到本地的使用

    Oracle备份与恢复 关于expdp导出远程数据到本地的使用 对于数据的导出,导入.对于exp/imp可以实现把远程数据导入到客户端,但是功能没有expdp/impdp强大 对于expdp/impd ...

  3. Oracle备份与恢复 expdp/impdp数据泵远程导入导出

    Oracle备份与恢复 expdp/impdp数据泵远程导入导出 Oracle在10g的时候有一个很好用的导出工具expdp(数据泵) 但是这个工具好用的同时,有一个局限,就是必须用本地的用户才可以导 ...

  4. oracle备份与恢复概述,Oracle 备份与恢复

    在进行生产服务器升级.或更换数据库服务器.搭建测试环境时,需要对生产数据库进行备份以及将来可能的还原. 1.expdp导出 expdp DMS/123456 version=10.2.0.1.0 di ...

  5. 爱数之Oracle备份与恢复

    从数据集中管理上来看,当今企业中存在各种各样的数据,这些数据可分为非结构化的数据,如各种文档,视频文件等数据:结构化数据,如数据库等.数据库自身的备份和其他的简单的文件复制.拷贝动作无法对这些数据做集 ...

  6. oracle物理备份与恢复,Oracle 备份与恢复概念原理学习

    梳理下oracle中备份与恢复的概念原理--[@more@] 一.备份与恢复分逻辑和物理备份与恢复. 二.逻辑类:命令有EXP和IMP. 三.物理类:Noarchivelog和archivelog模式 ...

  7. oracle 备份与恢复学习总结

    Oracle数据库的备份与恢复 http://jingyan.baidu.com/article/b2c186c8eb7713c46ef6ff22.html Oracle数据库有三种标准的备份方法,它 ...

  8. 对 Oracle 备份与恢复 的补充说明

    之前曾整理过一片文章,来说明Oracle 的备份与恢复的. Oracle 备份 与 恢复 概述 http://blog.csdn.net/tianlesoftware/archive/2010/04/ ...

  9. oracle备份与恢复实例,Oracle备份与恢复案例(三)

    6.拷贝备份回到原地点(restore),开始恢复数据库(recover) restore过程: C:\>copy D:\DATABAK\SYSTEM01.DBF D:\Oracle\ORADA ...

  10. 备份与恢复oracle,oracle 备份与恢复

    ORACLE备份和恢复 <1>逻辑备份 不用去拷贝数据库的物理文件 备份逻辑上的结构 外部的工具:导出和导入的工具 DOS下的命令 cmd下执行 导出exp  export缩写形式 查看帮 ...

最新文章

  1. WebSocket 协议
  2. matlab对手写数字聚类的方法_scikitlearn — 聚类
  3. SlidingMenu实现侧滑
  4. Middle of the Contest
  5. JavaWeb黑马旅游网-学习笔记06【旅游线路分页展示分页展示】
  6. app中 html5 search 事件,事件 - Cordova中文网
  7. Linux获取执行文件路径,如何 获取linux进程的执行文件路径
  8. 怎么得到hid设备名_上海海关旧设备进口清关公司这个不错
  9. Jmter安装和配置
  10. 正确安装adb工具,且常用的adb命令
  11. 深度学习语音降噪方法对比_一种融合骨振动传感器和麦克风信号的深度学习语音提取和降噪方法与流程...
  12. 拉普拉斯变换解微分方程
  13. iOS App上架遇到的错误(ERRORITMS-90096: )
  14. Encountered a duplicated sql alias [ID] during auto-discovery of a native-sql query; nested exceptio
  15. 优化DNS,加快DNS的解析速度
  16. Java语言程序设计D实验——类与对象实验
  17. Neural Approaches to Conversational AI
  18. freemarker模板注入
  19. 小白如何入门单片机?几个建议助你提高学习效率,把握学习方向
  20. 喜马拉雅修改资料提示服务器升级,喜马拉雅怎么修改个人资料 喜马拉雅个人资料在哪里修改...

热门文章

  1. 苹果或将为iPhone 13全系配备LiDAR
  2. [cesium] 卫星雷达传感器,雷达探测效果
  3. Golang【sgg】
  4. 《数字图像处理》自学笔记(一)
  5. 一个程序猿眼中的国内主流地图api
  6. 高德地图——地图渲染及关键字搜索POI功能vue2/web端
  7. ECCV 2022|通往数据高效的Transformer目标检测器
  8. RTC实时时钟(学习笔记)
  9. 广告轮播图的前后台实现
  10. 国外Windows主机的特点