oracle数据库热备中的备份和恢复及例子
手工热备(开库状态)
备份控制文件:
alter database backup controlfile to '/u01/oradata/prod/con.bak1';
备份数据文件(这里用到pl/sql进行批处理,将查询结果粘贴运行即可)
begin
for i in (select tablespace_name from dba_tablespaces) loop
dbms_output.put_line('alter tablespace '||i.tablespace_name||' begin backup;');
for j in (select file_name from dba_data_files where tablespace_name=i.tablespace_name) loop
dbms_output.put_line('host cp '||j.file_name||' /home/oracle/hot_backup');
end loop;
dbms_output.put_line('alter tablespace '||i.tablespace_name||' end backup;');
end loop;
end;
模拟现场,举例
1.删除emp1表 drop table emp1 purge;(不完全恢复)
模拟:
drop table emp1 purge;
select * from v$log;
alter system switch logfile;
/
解决:
select name from v$archived_log;(可以看到删除的日志条目切换到此归档日志里了)
/u01/flash_recovery_area/PROD/archivelog/2017_08_13/o1_mf_1_6_drzyyodl_.arc
/u01/flash_recovery_area/PROD/archivelog/2017_08_27/o1_mf_1_7_dt4yy16z_.arc
/u01/flash_recovery_area/PROD/archivelog/2017_08_27/o1_mf_1_8_dt4zlzff_.arc
/u01/flash_recovery_area/PROD/archivelog/2017_08_27/o1_mf_1_9_dt4zow6g_.arc
/u01/flash_recovery_area/PROD/archivelog/2017_08_27/o1_mf_1_1_dt5fpkxt_.arc
/u01/flash_recovery_area/PROD/archivelog/2017_11_12/o1_mf_1_2_f0jh6xf2_.arc
/u01/flash_recovery_area/PROD/archivelog/2017_11_12/o1_mf_1_3_f0jk4n4p_.arc
/u01/flash_recovery_area/PROD/archivelog/2017_11_13/o1_mf_1_1_f0lkgyt6_.arc
/u01/flash_recovery_area/PROD/archivelog/2017_11_13/o1_mf_1_2_f0lo0fom_.arc
因为今天13号所以选这两条日志,也可以多切换几次日志多生成几个日志条目
接下来进行时间的挖掘(基于时间点来恢复)
mkdir -p /home/oracle/logmnr
show parameter utl_file_dir
alter system set utl_file_dir='/home/oracle/logmnr' scope=spfile;
startup force;
show parameter utl_file_dir;
alter database add supplemental log data;
execute dbms_logmnr_d.build('dict.ora','/home/oracle/logmnr',dbms_logmnr_d.store_in_flat_file);
execute dbms_logmnr.add_logfile(logfilename=>'/u01/flash_recovery_area/PROD/archivelog/2017_11_13/o1_mf_1_1_f0lkgyt6_.arc',options=>dbms_logmnr.new);
execute dbms_logmnr.add_logfile(logfilename=>'/u01/flash_recovery_area/PROD/archivelog/2017_11_13/o1_mf_1_2_f0lo0fom_.arc',options=>dbms_logmnr.addfile);
execute dbms_logmnr.start_logmnr(dictfilename=>'/home/oracle/logmnr/dict.ora',options=>dbms_logmnr.ddl_dict_tracking);
select username,scn,to_char(timestamp,'yyyy-mm-dd hh24:mi:ss') time,sql_redo from v$logmnr_contents WHERE lower(sql_redo) like 'drop table%';
execute dbms_logmnr.end_logmnr;
USERNAME SCN TIME
------------------------------ ---------- -------------------
SQL_REDO
------------------------------------------------------------
UNKNOWN 954522 2017-11-13 16:03:53
drop table emp1 purge;
(记录此时间2017-11-13 16:03:53)
shutdown abort;
时间挖掘完成。
cd /home/oradata/prod
rm *.dbf
cp /home/oracle/hot_backup/*.dbf ./
startup;
recover database until time '2017-11-13 16:03:53';auto
alter database open resetlogs;
验证查看
select * from emp1;
成功找回此表,同样可以通过scn号寻找恢复,但是不能用闪回表因为我是purge彻底删除,只能不完全恢复。
2.模拟user01.dbf 介质损坏
rm -rf /u01/oradata/prod/users01.dbf
例如shutdown immediate
SYS@prod>shutdown immediate
ORA-01116: 打开数据库文件 4 时出错
ORA-01110: 数据文件 4: '/u01/oradata/prod/users01.dbf'
ORA-27041: 无法打开文件
解决:
alter system flush buffer_cache;
alter tablespace users offline immediate;
cp /home/oracle/hot_backup/users01.dbf /u01/oradata/prod/
recover tablespace users;auto
alter tablespace users online;
3.模拟undotbs1 介质损坏(恢复的方法多种我只演示根据文件号恢复)
select name from v$datafile;
rm -rf /u01/oradata/prod/undotbs01.dbf
shutdown abort
解决:
SYS@prod>select FILE#,ERROR from v$recover_file;
FILE# ERROR
---------- -----------------------------------------------------------------
1 UNKNOWN ERROR
2 UNKNOWN ERROR
3 FILE NOT FOUND
SYS@prod>select FILE#,NAME from v$datafile;
FILE# NAME
--------------------------------------------------
1 /u01/oradata/prod/system01.dbf
2 /u01/oradata/prod/sysaux01.dbf
3 /u01/oradata/prod/undotbs01.dbf
4 /u01/oradata/prod/users01.dbf
5 /u01/oradata/prod/example01.dbf
SYS@prod>select file#,checkpoint_change# from v$datafile_header;
FILE# CHECKPOINT_CHANGE#
---------- ------------------
1 975649
2 975649
3 0
4 975649
5 975649
确定3号文件损坏
cp /home/oracle/hot_backup/undotbs01.dbf /u01/oradata/prod/
recovere datafile 3;auto
alter database open;
4.当前日志,介质损坏
create table t2(id int);
insert into t2 values(100);
commit;
alter system archive log current;
insert into t2 values(200);
commit;
select * from scott.t2;
select group#,sequence#,status from v$log;
select GROUP#,MEMBER from v$logfile;
查出当前的日志是组号是1对应的redo01.log
模拟 rm -rf /u01/oradata/prod/redo01.log
shutdown abort
startup
数据库装载完毕。
ORA-00313: 无法打开日志组 1 (用于线程 1) 的成员 ORA-00312:
联机日志 1 线程 1: '/u01/oradata/prod/redo01.log'
ORA-27037: 无法获得文件状态 Linux
Error: 2: No such file or directory
Additional information: 3
解决:
cd /u01/oradata/prod/
rm *.dbf
cp /home/oracle/hot_backup/*.dbf ./
startup
recover database until cancel;auto
recover database until cancel;cancel
alter database open resetlogs;
select * from scott.t1;
ID
----------
100
5.控制文件损坏
rm -rf /u01/oradata/prod/control01.ctl
rm -rf /u01/flash_recovery_area/prod/control02.ctl
shutdown abort
startup
ORA-00205: ?????????, ??????, ???????
select status from v$instance;
解决:
cp /home/oracle/control01.ctl /u01/oradata/prod/
cp /home/oracle/control02.ctl /u01/flash_recovery_area/prod/
recover database using backup controlfile;auto
recover database using backup controlfile;当前的日志
alter database open resetlogs;
oracle数据库热备中的备份和恢复及例子的更多相关文章
- oracle数据库冷备中的手工备份和恢复
我的操作系统是red hat5.5 32位系统oracle11g 以我的系统为例: 冷备状态下,数据库必须是关闭的,但是我们现在要做一个实验,在开库的状态下分别查询出: 1.show paramete ...
- mysql5.6数据库双机热备、主从备份
主题:mysql5.6数据库双机热备.主从备份 缘由: 在Web应用系统中,数据库性能是导致系统性能瓶颈最主要的原因之一.尤其是在大规模系统中,数据库集群已经成为必备的配置之一.集群的好处主要有:查询 ...
- MySQL数据库双机热备------主-主备份配置
MySQL数据库双机热备------主-主备份配置 实验环境: 主1数据库 192.168.1.1 centos6.5 x86_64 +MySQL5.5.35 主2数据库192.168.1.2 Wi ...
- oracle双机热备概念
1. 双机热备概述 双机热备有两种实现模式,一种是基于共享的存储设备的方式,另一种是没有共享的存储设备的方式,一般称为纯软件方式. 基于存储共享的双机热备是双机热备的最标准方案. ...
- Oracle:热备测试
我们知道Oracle数据库热备有3步: 1. alter tablespace tbname begin backup: 2. cp /××× to /×× 3. alter ta ...
- 部署web01,web02,nfs,db01,backup,搭建wordpress,WeCenter,实现共享,热备,实时备份
小结 部署web01,web02,nfs,db01,backup,搭建wordpress,WeCenter,实现共享,热备,实时备份 1)在web01和web02上安装nginx和php 2)创建ww ...
- Oracle数据库误删文件导致rman备份报错RMAN-06169解决办法
Oracle数据库误删文件导致rman备份报错RMAN-06169解决办法 可能是误删文件导致在使用rman备份时候出现以下提示 RMAN-06169: could not read file hea ...
- oracle 双机热备,oracle dataguard 和oracle rac的区别和联系(转)
Data Guard 是Oracle的远程复制技术,它有物理和逻辑之分,但是总的来说,它需要在异地有一套独立的系统,这是两套硬件配置可以不同的系统,但是这两套系统的软件结构保持一致,包括软件的版本,目 ...
- Oracle数据库三种标准的备份方法
Oracle数据库的三种标准的备份方法: 1.导出/导入(EXP/IMP). 2.热备份. 3.冷备份. 注释:导出备件是一种逻辑备份,冷备份和热备份是物理备份. 一.导出/导入(Export/Imp ...
随机推荐
- zoj3321 circle floyd 最小生成树
Circle 断一个图是否是一个环. 思路:必有m==n,那么我们用n-1条边能够生成一棵树(即是所有点联通,则用floyd即可),然后看最后一条边的两个点是否是单边(度为一)即可 . #includ ...
- SqlServer和Oracle中一些常用的sql语句3 行列转换
--217, SQL SERVER SELECT Cust_Name , MAX(CASE WHEN Order_Date ='2009-08-01' THEN AR END) "2009- ...
- 编写 WPF DataGrid 列模板,实现更好的用户体验
Julie Lerman 下载代码示例 最近我在为一个客户做一些 Windows Presentation Foundation (WPF) 方面的工作. 虽然我提倡使用第三方工具,但有时也会避免使用 ...
- KMP算法的细节问题
preface: 想必,很多人都知道D.E.Knuth与V.R.Pratt和J.H.Morris同时提出所谓的狂拽酷炫屌炸天的KMP算法,在对字符串的匹配(或是字符串的查找)方面表现出比较好的效率,该 ...
- Echarts数据可视化series-scatter散点图,开发全解+完美注释
全栈工程师开发手册 (作者:栾鹏) Echarts数据可视化开发代码注释全解 Echarts数据可视化开发参数配置全解 6大公共组件详解(点击进入): title详解. tooltip详解.toolb ...
- Django安装Xadmin步骤
在Django中安装Xadmin替换原始的admin,下面介绍两种方法安装 第一种方法:pip安装 第一步: 直接pip安装xadmin pip install xadmin pip会同时安装上面三个 ...
- 当谈到 GitLab CI 的时候,我们都该聊些什么(下篇)
上篇主要介绍了 GitLab WorkFlow 以及 CI/CD 做的事情,并且详细分析 GitLab CI 跟 Runner 信息交互是如何进行的.接下来将为大家讲解 Executor 的实现,再通 ...
- 使用phpExcel导出excel时,报500错
在自己本地导出excel没有问题,但是放到服务器出现500的错误! 解决方法:查看控制器引用的header文件,是否包含空格,如下: header('Pragma:public'); ...
- 自学ConcuurentHashMap源码
自学ConcuurentHashMap源码 参考:https://my.oschina.net/hosee/blog/675884 http://www.cnblogs.com/ITtangtang/ ...
- javascript 之作用域-06
作用域 作用域是指变量和函数可访问范围,他规定了如何查找变量,也就是确定当前执行代码对变量的访问权限. 作用域有两种工作模式: 静态作用域 :又称为词法作用域,在编译阶就可以决定变量的引用,由程序定义 ...