Oracle教程学习之面试题05_阿里巴巴Oracle面试题03-备份恢复
一、Oracle备份如何分类
逻辑备份:exp/imp
物理备份:
RMAN备份
full backup/incremental backup(累积/差异)
热备份:alter tablespace begin/end backup;
冷备份:脱机备份(database shutdown)
二、Oracle归档是什么含义
关于归档日志:Oracle要将填满的在线日志文件组归档时,则要建立归档日志(archived redo log)。
其对数据库备份和恢复有下列用处:
数据库后备以及在线和归档日志文件,在操作系统和磁盘故障中可保证全部提交的事物可被恢复。
在数据库打开和正常系统使用下,如果归档日志是永久保存,在线后备可以进行和使用。
数据库可运行在两种不同方式下:
NOARCHIVELOG方式或ARCHIVELOG 方式数据库在NOARCHIVELOG方式下使用时,不能进行在线日志的归档,如果数据库在ARCHIVELOG方式下运行,可实施在线日志的归档。
三、如果一个表在2018-08-04 10:30:00 被drop,在有完善的归档和备份的情况下,如何恢复?
手工拷贝回所有备份的数据文件
startup mount;
sql alter database recover automatic until time '2018-08-04:10:30:00';
alter database open resetlogs;
四、rman是什么,有何特点?
风哥Oracle教程提示:RMAN(Recovery Manager)是DBA的一个重要工具,用于备份、还原和恢复oracle数据库, RMAN 可以用来备份和恢复数据库文件、归档日志、控制文件、系统参数文件,也可以用来执行完全或不完全的数据库恢复。
RMAN有三种不同的用户接口:
COMMAND LINE方式、GUI 方式(集成在OEM 中的备份管理器)、API 方式(用于集成到第三方的备份软件中)。
具有如下特点:
1)功能类似物理备份,但比物理备份强大N倍;
2)可以压缩空块;
3)可以在块水平上实现增量;
4)可以把备份的输出打包成备份集,也可以按固定大小分割备份集;
5)备份与恢复的过程可以自动管理;
6)可以使用脚本(存在Recovery catalog 中)
7)可以做坏块监测
五、对于一个要求恢复时间比较短的系统(数据库500G,每天归档5G),你如何设计备份策略
rman+expdp
rman每天全备+归档
expdp每周全备
六、你现在公司oracle db 是用什么备份?假如db down掉了,怎样恢复?
通过RMAN物理备份+归档日志
exp/expdp命令进行备份
通过rman恢复,通过imp/impdp恢复
七、dataguard的特点,dg与adg的区别。
风哥Oracle教程提示:dataguard在mount情况下恢复数据,如果open则不能恢复数据;而active dataguard则可以在open下面恢复数据,同时可以对外提供数据区。
备用数据库(dataguard database):ORACLE推出的一种高可用性(HIGH AVAILABLE)数据库方案,
在主节点与备用节点间通过日志同步来保证数据的同步,备用节点作为主节点的备份
可以实现快速切换与灾难性恢复,还支持物理与逻辑备用服务器。
Oracle的三种数据保护模式分别是:
1)、MAXIMIZE PROTECTION :最大数据保护与无数据分歧,LGWR将同时传送到备用节点,
在主节点事务确认之前,备用节点也必须完全收到日志数据。如果网络不好,引起LGWR不能传送数据,将引起严重的性能问题,导致主节点DOWN机。
2)、MAXIMIZE AVAILABILITY :无数据丢失模式,允许数据分歧,允许异步传送。
正常情况下运行在最大保护模式,在主节点与备用节点的网络断开或连接不正常时,自动切换到最大性能模式,
主节点的操作还是可以继续的。在网络不好的情况下有较大的性能影响。
3)、MAXIMIZE PERFORMANCE:这种模式应当可以说是从8i继承过来的备用服务器模式,异步传送,
无数据同步检查,可能丢失数据,但是能获得主节点的最大性能。9i之后在配置DATA GUARD的时候默认就是MAXIMIZE PERFORMANCE
八、闪回查询有哪些技术,如何利用闪回查询恢复数据?
闪回技术有闪回表、闪回删除、闪回查询、闪回事务查询、闪回事务、闪回数据库、闪回数据归档。
ORACLE 的特点还有能够更快速的恢复之前误操作的数据,这是通过闪回日志完成的
例如:查询10 分钟之前的emp 表
select * from emp as of timestamp sysdate - interval '10' minute;
再如:恢复10 分钟之前的5555 号员工姓名
update emp e set ename =
(select ename from emp
as of timestamp systimestamp - interval '10' minute where empno=e.empno )
where empno=5555;
甚至可以查询及恢复被删除的表
select * from user_recyclebin;
flashback table 表 to before drop;