commit –lgwr
checkpoint –dbwr
实例的恢复 crash recovery
什么时候发生oracle实例恢复
- shutdown abort
- 数据库异常down掉(机器死机,掉电)
###从Redo的什么位置开始恢复?
在某一点,在这一点之前的所有数据,Oracle都已经成功的写入到了磁盘上。
实例恢复是一个自动的过程,不需要人工干预
实例恢复发生在那个阶段?
–sql>startup nomount(读取spfle) ,没有实例恢复。
–sql>alter database mount (读取控制文件),没有实例恢复。
–sql>alter database open (检查控制文件,数据文件头),发生实例恢复。
- 如果直接startup命令,会经过启动装载打开三个步骤。
oracle在打开数据库时(alter database open),会检查每个文件头上的信息(SCN),并同控制文件中相应的信息(SCN)比较,如果不一致就进行实例恢复。
实例恢复的过程
读取状态为current和active状态的日志(redo log),将发生crash时,没有来得及写磁盘的数据块,使用redo信息来恢复。
- 打开数据库alter database open
- 回滚rolling back
将没有提交的事务进行回滚
介质恢复
当发生以下情况时,实例恢复无效,需要进行介质恢复:
- 数据文件丢失,损坏。
- 在线日志文件(onlineredo)丢失,损坏。
- 数据文件太旧(比如从一个备份集中恢复过来的文件。)
- 文件太新(比如,其它所有的文件都是从备份中恢复过来的)
数据损坏时基本都要进行介质恢复
Oracle的备份方式
Rman(物理备份)–Recovery Manager
备份和还原数据库文件、归档日志和控制文件。它也可以用来执行完全或不完全的数据库恢复。
Rman比较慢,相同情况下一般使用Dataguard
Rman是是oracle数据库自带的一个备份工具,用Rman备份的步骤如下:
如果这是备份表空间,可以用一下语句实现
这样就可以备份制定的表空间。
exp,expdp(逻辑备份)
–用户,数据库对象(表,分区…)
只读表空间+传递表空间
OLAP(Online Analytical Process)数据库的一种备份方案
Dataguard–重点
最简单的备份方案
缺点和限制
- 需要数据库归档(OLAP类型的数据库不适宜归档)
- 对于海量数据不合适
Oracle的闪回技术–flashback
数据库的闪回
默认数据库的闪回是关闭的。
可以用以下命令查询看是否是开启的
可以用以下命令开启,建议开启flashback
基于SCN的闪回
一般不太容易知道SCN,不易获得SCN
基于时间的闪回
数据库闪回到具体时间
表的闪回
system用户删除的table不进recyclebin,普通用户删除的table会进入recyclebin。具体如下:
彻底删除表,不进入回收站的办法
关于回收站的资料如下:
http://www.jb51.net/article/34733.htm
DML操作的闪回
事务的闪回
版本的闪回
上面三种闪回后面在进行补充
以下是关于归档模式和非归档模式的知识:
归档模式转换为非归档模式:
查看数据库是否是归档模式:两种方式
非归档模式转换为归档模式:
一般设置数据库为归档日志模式时会出现如下错误:
ORA-00265: 要求实例恢复, 无法设置 ARCHIVELOG 模式
这是我们可以按照如下步骤解决: