暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片
(1条消息)理解redo(6)日志却的流程和直接路径加载的REDO分析_数据库_记录创业路上的一些想法-CSDN博客.pdf
160
7页
0次
2023-09-25
免费下载
(1条消息)理解redo(6)日志却的流程和直接路径加载的REDO
分析_数据库_记录创业路上的一些想法-CSDN博客
当server process得到redo allocation latch进行redo log buffer分配之前,需要先嗅一下redo log file是否
有足够的空间。倘若空间不足,则sp会发送switch log file的请求,然后坐等log file switch completion事件
的完成了。
日志却请求发出后,CKPT会进行一次增量检查点事件,而LGWR开始进行日志却换工作。
具体流程如下:
1)LGWR进程会通过控制文件中的双向链表,查找到一个可用的REDO LOG文件,作为新的CURRENT
REDO LOG。
算法如下:
日志文件是inactive,并且已经归档了
优先使用unused日志文件组
2)将redo log buffer中还未写入的redo entries flush到current online redo log file,并且将最后一条
redo entries的SCN作为本日志文件的high SCN记录在redo log header里面,然后关闭current online redo
log file
3)进行第二次控制文件事务,将刚刚关闭的REDO LOG标识为ACTIVE(这是个增量检查点事件,之所以标
识为active,是因为它所保护的dirty buffer可能还未写到数据文件,如果已经全部写到磁盘了,则可以标识为
inactive)将新的当前REDO LOG标识为CURRENT,如果数据库处于归档模式,还要将老的日志组记录到控制
文件归档列表记录中,并且通知ARCn对该日志文件进行归档。
4)LGWR打开新的日志组的所有成员,在日志文件头记录当前日志sequence#和第一个redo block
SCN(LOW SCN
5)LGWR修改SGA中的标志位,允许生成新的REDO LOG信息
综上所述,日志切换是一种较为昂贵的操作。因为在却换期间,对数据库所有的交易都将被阻塞。但是加大
REDO LOG文件大小和丢失数据的多少是无关的。理由:
1)redo entries是顺序写入的,写入一个和写入多个,对于恢复而言是一样的
2)存储故障,受影响的肯定是所有的REDO LOG文件
ARCHIVE模式下,直接路径加载会记录REDO。在非ARCHIVE LOG 模式下,直接路径加载这个动作不会记
录REDO,但是ORACLE由于系统改动需要维护段、区、表空间等而会产生REDO的。
下面将redo log file给dump出来
1. 09:29:36 sys@ORCL (^ω^) conn hr/hr
2. 已连接。
3. 09:34:57 hr@ORCL (^ω^) create table test as select * from dba_objects where 1=2;
4. 表已创建。
5. 09:35:41 hr@ORCL (^ω^) select dbms_flashback.get_system_change_number from dual;
6. GET_SYSTEM_CHANGE_NUMBER
7. ------------------------
8. 2804230
9. 09:36:06 hr@ORCL (^ω^) select group#,status from v$log;
10. GROUP# STATUS
11. ---------- --------------------------------
12. 1 CURRENT
13. 2 INACTIVE
14. 3 INACTIVE
15. 09:36:26 hr@ORCL (^ω^) col member for a72
16. 09:36:36 hr@ORCL (^ω^) select group#,member from v$logfile;
17. GROUP# MEMBER
18. ---------- ------------------------------------------------------------------------
19. 3 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\ONLINELOG\O1_MF_3_7TQZWZOY_.LOG
20. 3 D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\ONLINELOG\O1_MF_3_7TQZ
21. X11D_.LOG
22. 2 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\ONLINELOG\O1_MF_2_7TQZWXO2_.LOG
23. 2 D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\ONLINELOG\O1_MF_2_7TQZ
24. WYPH_.LOG
25. 1 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\ONLINELOG\O1_MF_1_7TQZWVDD_.LOG
26. 1 D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\ONLINELOG\O1_MF_1_7TQZ
27. WWJ8_.LOG
28. 已选择6行。
29. 09:37:24 hr@ORCL (^ω^) select dbms_flashback.get_system_change_number from dual;
30. GET_SYSTEM_CHANGE_NUMBER
31. ------------------------
32. 2804353
33. 09:37:59 hr@ORCL (^ω^) insert /*+append*/ into test select * from dba_objects;
34. 已创建50453行。
35. 09:39:15 hr@ORCL (^ω^) commit;
36. 提交完成。
37. 09:39:21 hr@ORCL (^ω^) select dbms_flashback.get_system_change_number from dual;
38. GET_SYSTEM_CHANGE_NUMBER
39. ------------------------
40. 2804521
41. 09:39:29 hr@ORCL (^ω^) alter system dump logfile
'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\ONLINELOG\O1_MF_1_7TQZWVDD_.LOG'
42. 09:40:25 2 scn min 2804353 scn max 2804521;
43. 系统已更改。
44. 09:40:57 hr@ORCL (^ω^) conn / as sysdba
45. 已连接。
46. 09:41:09 sys@ORCL (^ω^) archive log list
47. 数据库日志模式 存档模式
48. 自动存档 启用
49. 存档终点 USE_DB_RECOVERY_FILE_DEST
50. 最早的联机日志序列 3
51. 下一个存档日志序列 5
52. 当前日志序列 5
53. 09:41:19 sys@ORCL (^ω^) alter system dump logfile
'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\ONLINELOG\O1_MF_1_7TQZWVDD_.LOG'
54. 09:43:23 2 scn min 2804230 scn max 2804521;
55. 系统已更改。
56. 09:44:03 sys@ORCL (^ω^) conn hr/hr
57. 已连接。
58. 09:45:58 hr@ORCL (^ω^) select dbms_flashback.get_system_change_number from dual;
59. GET_SYSTEM_CHANGE_NUMBER
60. ------------------------
61. 2804801
62. 09:46:07 hr@ORCL (^ω^) insert /*+ APPEND */ into text select * from dba_objects;
63. insert /*+ APPEND */ into text select * from dba_objects
64. *
65. 第 1 行出现错误:
66. ORA-00942: 表或视图不存在
67. 09:47:42 hr@ORCL (^ω^) insert /*+ APPEND */ into test select * from dba_objects;
68. 已创建50453行。
69. 09:47:53 hr@ORCL (^ω^) commit;
70. 提交完成。
71. 09:47:58 hr@ORCL (^ω^) select dbms_flashback.get_system_change_number from dual;
72. GET_SYSTEM_CHANGE_NUMBER
73. ------------------------
74. 2805155
75. 09:48:10 hr@ORCL (^ω^) select group#,status from v$log;
76. GROUP# STATUS
77. ---------- --------------------------------
78. 1 CURRENT
79. 2 INACTIVE
80. 3 INACTIVE
81. 09:48:50 hr@ORCL (^ω^) alter system dump logfile
'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\ONLINELOG\O1_MF_1_7TQZWVDD_.LOG'
82. 09:49:32 2 scn min 2804801 scn max 2805155;
把OP号为19.1部分内容摘入如下:
1. REDO RECORD - Thread:1 RBA: 0x000005.00003627.019c LEN: 0x2024 VLD: 0x01
2. SCN: 0x0000.002ad2e0 SUBSCN: 1 08/19/2012 10:05:48
3. CHANGE #1 TYP:1 CLS: 1 AFN:4 DBA:0x01006015 OBJ:53846 SCN:0x0000.002ad2e0 SEQ: 1 OP:19.1
4. Direct Loader block redo entry
5. Block header dump: 0x08a90000
6. Object id on Block? Y
7. seg/obj: 0xd256 csc: 0x00.2ad2df itc: 3 flg: E typ: 1 - DATA
8. brn: 0 bdba: 0x1006009 ver: 0x01 opc: 0
of 7
免费下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。