人工手动冷备不完全恢复介绍(purge表不完全恢复)
不完全恢复
不完全恢复的基本类型:
1)基于时间点 (until time): 使整个数据库恢复到过去的一个时间点前
2)基于scn (until change): 使整个数据库恢复到过去的某个SCN前
3)基于cancel (until cancel): 使整个数据库恢复到归档日志或当前日志的断点前
不完全恢复(Incomplete recover) 适用环境:
1)在过去的某个时间点重要的数据被破坏。
2)在做完全恢复时,丢失了归档日志或当前online redo log
3)当误删除了表空间时(有控制文件备份)
4)丢失了所有的控制文件,使用备份的控制文件恢复时 (条件满足时可以完全恢复)
传统的不完全恢复的操作步骤:
1)先通过logmnr 找到误操作的时间点
2)对现在的database做新全备
3)还原该时间点前所有的datafile
4)在mount状态下,对database做recover,恢复到误操作的时间点
5)将恢复出来的table做逻辑备份(exp)
6)再将全备还原
7)将导出的表导入database(imp)
实验 1:恢复过去某个时间点误操作的table (基于时间点的不完全恢复) 前提:有冷备份,日志,归档齐全
1)准备实验数据
SQL> select * from andy;
ID
----------
4
SQL> insert into andy values(5);
1 row created.
SQL> commit;
Commit complete.
SQL> drop table andy purge;
Table dropped.
2)查看日志,归档环境
SQL> set linesize 400
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARC STATUS FIRST_CHANGE#
---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- -------------
1 1 61 52428800 512 1 NO CURRENT 1991534
2 1 59 52428800 512 1 YES INACTIVE 1959769
3 1 60 52428800 512 1 YES INACTIVE 1966481
SQL> alter system switch logfile;
System altered.
SQL> select name from v$archived_log;
NAME
----------------------------------------------------------------------------------------------------------
/home/oracle/archivelog/ORCL/archivelog/2014_12_01/o1_mf_1_47_b7rwlclg_.arc
/home/oracle/app/flash_recovery_area/ORCL/archivelog/2014_12_01/o1_mf_1_48_b7ryjgng_.arc
/home/oracle/app/flash_recovery_area/ORCL/archivelog/2014_12_01/o1_mf_1_49_b7rykz3l_.arc
/home/oracle/app/flash_recovery_area/ORCL/archivelog/2014_12_01/o1_mf_1_50_b7ryn3fl_.arc
/home/oracle/archivelog/1_51_860522448.dbf
/home/oracle/archivelog/1_52_860522448.dbf
/home/oracle/archivelog/1_53_860522448.dbf
/home/oracle/archivelog/1_54_860522448.dbf
/home/oracle/archivelog/1_55_860522448.dbf
NAME
----------------------------------------------------------------------------------------------------------
/home/oracle/archivelog/1_56_860522448.dbf
/home/oracle/archivelog/1_57_860522448.dbf
/home/oracle/archivelog/1_58_860522448.dbf
/home/oracle/archivelog/1_59_860522448.dbf
/home/oracle/archivelog/1_60_860522448.dbf
/home/oracle/archivelog/1_61_860522448.dbf
28 rows selected.
3)logmnr日志挖掘,找出purge时间点。
--日志挖掘至少要提前开SUPPLEME,如果没开,信息会报错
SQL> select supplemental_log_data_min,supplemental_log_data_pk,supplemental_log_data_ui from v$database;
SUPPLEME SUP SUP
-------- --- ---
YES NO NO
SQL> col member for a50;
SQL> select * from v$logfile;
GROUP# STATUS TYPE MEMBER IS_
---------- ------- ------- -------------------------------------------------- ---
3 ONLINE /home/oracle/app/oradata/orcl/redo03.log NO
2 ONLINE /home/oracle/app/oradata/orcl/redo02.log NO
1 ONLINE /home/oracle/app/oradata/orcl/redo01.log NO
SQL> select group#,status from v$log;
GROUP# STATUS
---------- ----------------
1 ACTIVE
2 CURRENT
3 INACTIVE
SQL> select name from v$archived_log where name is not null order by 1;
NAME
-----------------------------------------------------------------------------------------
/home/oracle/app/flash_recovery_area/ORCL/archivelog/2014_12_01/o1_mf_1_48_b7ryjgng_.arc
/home/oracle/app/flash_recovery_area/ORCL/archivelog/2014_12_01/o1_mf_1_49_b7rykz3l_.arc
/home/oracle/app/flash_recovery_area/ORCL/archivelog/2014_12_01/o1_mf_1_50_b7ryn3fl_.arc
/home/oracle/archivelog/1_51_860522448.dbf
/home/oracle/archivelog/1_52_860522448.dbf
/home/oracle/archivelog/1_53_860522448.dbf
/home/oracle/archivelog/1_54_860522448.dbf
/home/oracle/archivelog/1_55_860522448.dbf
/home/oracle/archivelog/1_56_860522448.dbf
/home/oracle/archivelog/1_57_860522448.dbf
/home/oracle/archivelog/1_58_860522448.dbf
NAME
-----------------------------------------------------------------------------------------
/home/oracle/archivelog/1_59_860522448.dbf
/home/oracle/archivelog/1_60_860522448.dbf
/home/oracle/archivelog/1_61_860522448.dbf
/home/oracle/archivelog/ORCL/archivelog/2014_12_01/o1_mf_1_47_b7rwlclg_.arc
15 rows selected.
-- 利用redolog日志进行挖掘
SQL> EXECUTE DBMS_LOGMNR.ADD_LOGFILE(LogFileName=>'/home/oracle/app/oradata/orcl/redo01.log',Options=>dbms_logmnr.new);
PL/SQL procedure successfully completed.
SQL>EXECUTE DBMS_LOGMNR.ADD_LOGFIL (LogFileName=>'/home/oracle/app/oradata/orcl/redo02.log',Options=>dbms_logmnr.ADDFILE);
PL/SQL procedure successfully completed.
SQL>EXECUTE DBMS_LOGMNR.ADD_LOGFILE(LogFileName=>'/home/oracle/app/oradata/orcl/redo03.log',Options=>dbms_logmnr.ADDFILE);
PL/SQL procedure successfully completed.
SQL> execute DBMS_LOGMNR.START_LOGMNR(options=>dbms_logmnr.dict_from_online_catalog);
PL/SQL procedure successfully completed.
SQL> col username for a10;
SQL> col sql_redo for a45;
SQL> select username,scn,timestamp,sql_redo from v$logmnr_contents where seg_name='ANDY' order by scn;
USERNAME SCN TIMESTAMP SQL_REDO
---------- ---------- ------------------- ---------------------------------------------
ANDY 2000934 2014-12-11 09:47:15 drop table andy purge; //找到purge时间
--利用归档进行日志挖掘
SQL> show parameter utl
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
create_stored_outlines string
utl_file_dir string
SQL> alter system set utl_file_dir='/home/oracle/logmnr' scope=spfile;
System altered.
SQL> startup force;
SQL> show parameter utl;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
create_stored_outlines string
utl_file_dir string /home/oracle/logmnr
SQL> execute dbms_logmnr_d.build('dict.ora','/home/oracle/logmnr',dbms_logmnr_d.store_in_flat_file);
PL/SQL procedure successfully completed.
SQL> execute dbms_logmnr.add_logfile(logfilename=>'/home/oracle/archivelog/1_61_860522448.dbf',options=>dbms_logmnr.new);
PL/SQL procedure successfully completed.
SQL> execute dbms_logmnr.start_logmnr(dictfilename=>'/home/oracle/logmnr/dict.ora',options=>dbms_logmnr.ddl_dict_tracking);
PL/SQL procedure successfully completed.
SQL> select username,scn,to_char(timestamp,'yyyy-mm-dd hh24:mi:ss'),sql_redo from v$logmnr_contents WHERE lower(sql_redo) like 'drop table%';
USERNAME SCN TO_CHAR(TIMESTAMP,' SQL_REDO
------------------------------ ---------- ------------------- --------------------------------------------------
ANDY 2000934 2014-12-11 09:47:15 drop table andy purge;
SQL> execute dbms_logmnr.end_logmnr;
PL/SQL procedure successfully completed.
4)关闭数据库,删除所有dbf,准备做不完全恢复
SQL> shutdown immdiate;
[oracle@11g logmnr]$ cd /home/oracle/app/oradata/orcl/
[oracle@11g orcl]$ rm -rf *.dbf
5)还原所有备份的数据文件
[oracle@11g orcl]$ cp /home/oracle/coldbak/*.dbf /home/oracle/app/oradata/orcl/
6)根据log miner提供的信息,做基于时间点的不完全恢复
SQL> recover database until time '2014-12-11 09:47:15';
ORA-00279: change 1968596 generated at 12/10/2014 06:26:35 needed for thread 1
ORA-00289: suggestion : /home/oracle/archivelog/1_60_860522448.dbf
ORA-00280: change 1968596 for thread 1 is in sequence #60
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
auto
ORA-00279: change 1991534 generated at 12/10/2014 07:25:45 needed for thread 1
ORA-00289: suggestion : /home/oracle/archivelog/1_61_860522448.dbf
ORA-00280: change 1991534 for thread 1 is in sequence #61
Log applied.
Media recovery complete.
说明:如果恢复过程中用到归档日志则输入 auto 。用到当前日志,则输入 filename 。
7)resetlogs方式打开数据库
SQL> alter database open resetlogs;
Database altered.
8)验证
SQL> select * from andy;
ID
----------
5
4
OK,转载请标明出处。
转载于:https://www.cnblogs.com/andy6/p/6274603.html
人工手动冷备不完全恢复介绍(purge表不完全恢复)相关推荐
- 群晖备份多台服务器文件夹,再稳的 NAS 不如多备份,如何给群晖冷备盘进行同步和备份...
大家好,我是晓飞影! 一个数码爱好者,也喜欢在众多平行领域探究摸索,让生活多一点乐趣. 当一台 NAS 搭建起来之后,大家都迫不及待的把所有数据都倒腾到 NAS 中,研究各种 Raid方式,挑选各种硬 ...
- mysql冷备增量备份,MySQL备份与恢复之真实环境使用冷备(2)
这篇文章主要介绍了MySQL备份与恢复之真实环境使用冷备,需要的朋友可以参考下 在上一篇文章(MySQL备份与恢复之冷备)中,我们提到了冷备.但是有个问题,我们存储的数据文件是保存在当前本地磁盘的,如 ...
- MySQL数据备份方式,及热备与冷备的优缺点
一.按照数据库的运行状态分类: (1) 热备:在数据库运行时,直接进行备份,对运行的数据库没有影响 (2) 冷备:在数据库停止运行的时候进行备份,这种备份方式最为简单,只需要拷贝数据库物理文件即可. ...
- shell+html+div+css实现数据库冷备文件检查
目前生产有一台数据库冷备服务器,数据库备份每天通过rsync传到该机上,为了方便检查是否冷备正常,就利用有限的知识弄了个页面显示(可怜大学只学了一下可怜的asp.net 2.0),实现的方式是shel ...
- mysql冷区域热区域_mysql的数据备份方式,及热备与冷备的优缺点对比
一.按照数据库的运行状态分类: (1)热备:在数据库运行时,直接进行备份,对运行的数据库没有影响 (2)冷备:在数据库停止运行的时候进行备份,这种备份方式最为简单,只需要拷贝数据库物理文件即可. (3 ...
- oracle冷备修改数据文件位置,Oracle冷备迁移脚本(文件系统)
Oracle冷备迁移脚本(文件系统) 两个脚本: 网络拷贝到目标服务器的脚本cpdb16.sh 1. 配置文件生成脚本 #!/bin/bash #Usage: create db.config fil ...
- 从冷备到多活,阿里毕玄谈数据中心的异地容灾
大数据时代,数据中心的异地容灾变得非常重要.在去年双十一之前,阿里巴巴上线了数据中心异地双活项目.InfoQ就该项目采访了阿里巴巴的林昊(花名毕玄). 毕玄是阿里巴巴技术保障部的研究员,负责性能容量架 ...
- 数据库备份之热备,冷备,温备
备份和恢复 备份类型: 完全备份,部分备份 完全备份:整个数据集 1 部分备份:只备份数据子集,如部分库或表 完全备份.增量备份.差异备份 2增量备份:仅备份最近一次完全备份或增量备份(如果存在增量) ...
- 容灾中的热备、冷备、双活、两地三中心
1. 热备:只有主数据中心承担业务,备份数据中心对主数据中心进行实时同步,当主数据中心挂掉,可以自动切换到备数据中心,用户业务不受影响:(双机热备:主机工作,从机会一直发心跳包给主机,当一段时间收不到 ...
最新文章
- reactor线程模型_简单了解Java Netty Reactor三种线程模型
- 干货 | BBR及其在实时音视频领域的应用
- 方舟服务器制作修改,ARK方舟:生存进化服务器禁止物品制造的修改方法
- 【Java】浅析equals()和hashCode()
- 微课|玩转Python轻松过二级(1.6节):导入和使用标准库、扩展库对象
- mybaitis动态sql利用bind标签代替%拼接完成模糊查询
- Openstack api 使用方法
- Ubuntu Server 16.04.x进入中文安装界面无法安装busybox-initramfs
- UITableView实现加载更多数据
- Acer EC-471G BIOS升级注意事项
- 快手短视频的流量及视频推荐算法解析,助你轻松上热门
- 留在一线城市还是回老家?一个8年北漂的4点思考
- 错误跳转html页面模板,404错误页面模板代码大全 - 搜外SEO问答
- mysql备份和优化_MySql Innodb存储引擎--备份和优化
- 体验服服务器更新维护,体验服专区 - 艾兰岛官方网站 - 腾讯游戏
- UEFI启动流程浅析
- 最强特殊字符、表情符号、Unicdeo字符串处理
- @zxing/library插件在H5页面上调用摄像头进行扫码识别解决方法,以及对华为手机的兼容
- js 点击a标签 获取a的自定义属性
- c语言常量2l是什么,2017年计算机二级c语言题库
热门文章
- 获取DataRow某列的值的封装
- 经典算法书籍推荐以及算法书排行【算法四库全书】
- 鸡肋的PHP单例模式
- CUDA Samples: Image Process: BGR to Gray
- Windows7上配置Python Protobuf 操作步骤
- 设计模式之外观模式(Facade)摘录
- 【GStreamer】gstreamer工具详解之:gst-inspect-1.0
- iphone adb android,通过ADB获取Android手机信息
- python中id地址什么意思_id()在python中返回的对象地址是什么?
- 服务器计费系统安卓,GitHub - NWAFU/dms_client: 服务器计费系统(客户机端):用于统计租户的服务器使用情况...