RAC环境中。每个实例对应相应的redolog集(至少2个)和相应的undo表空间。
实例恢复:
单实例数据库的实例恢复:
redo:所有已经提交和未提交的操作做前滚
undo:所有未提交的操作做回滚
RAC环境的实例恢复:
当节点A实例崩溃后,则节点B自动根据redolog前滚在undo回滚(立即进行),无需等待节点A的实例正常恢复。(实例恢复由剩余节点进行,如果实例都崩溃了,则有第一个启动的实例节点进行恢复
)
eg:在alarmlog中可以看到
Post SMON to Start 1st pass IR
-------------------------------
Instance recovery:look for dead threads
———————————————
Beginning instance recovery of 1 threads
———————————————
Start first pass scan
———————————————
Completed first pass scan
3941 redo blocks read,165 data blocks need recovery
-----------------------------
开始实例恢复。。。
介质恢复:
介质恢复指数据库文件或数据文件(集)损坏,需要手动操作。
分类:
RAC某一个实例的数据文件的介质恢复
整个数据库的介质恢复:关闭所有其他实例,将数据库安装到选择进行恢复的节点上。
不影响数据库的文件:需要该文件脱机。
重做线程:
Alter database add logfile thread 2 group 5 '/ocfs/oradata/.../redo02_05.log' size 300M
实例线程号:在spfile参数为<sid>.THREAD = n
不同存储设备的归档方式
1.使用RAW设备作为文件系统进行归档
RAW:每个文件必须对应一个raw磁盘片,因为归档日志较多,所以不适合存放在RAW上。所以,一般归档日志存放于各节点的驱动器上。且因为RAC环境,介质恢复需要所有实例的所有归档日志,一般双实例(仅双实例rac)采用 节点A的驱动器上有本地归档目录,节点B通过nfs目标目录把B的归档日志指向A,同理作用于B。所以当任何一个节点崩溃或归档日志损坏时,可以保证另一个节点有所有节点的所有归档日志来进行介质恢复。
2.使用OCFS(集群文件系统)下的归档
所有节点把各自的归档日志存放在OCFS上的同一归档目录下。
但是!因为在共享的归档目录下,则当一个新的归档日志创建时,其他实例会有一定的延时。所以常见方法是不同实例在OCFS上有单独的归档目录,需要介质恢复时候,把所有的归档日志放进同一归档目录中。
3.ASM环境中的归档
ASM可创建归档日志闪回区(默认保存7天所有实例的归档日志),其他同OCFS
注,即使某一点的实例已经关闭,但没有禁用重做线程,redolog还是会做日志切换,生成归档日志(避免实例SCN与日志间隙过大)
禁用线程号 alter database disable/enable public thread 3;
RAC中的undo:每个实例的单独undo_tablespace 位于共享磁盘上。
参数:<instance_name>.UNDO_TABLESPACE
eg:Alter system set undo_tablespace = <undo_tablespace> scope = both sid = 'test3';