天天看點

[20150309]熱備份與redo.txt

[20150309]熱備份與redo.txt

-- 最近一段時間看關于備份的書籍,提到熱備份期間,如果對某塊做dml操作,redo 日志裡面是包含整個資料庫,防止出現塊分裂。

--實際上僅僅第1次會做,後續的dml就不會做這樣的操作,做一個測試例子:

1.測試環境:

SCOTT@test> @ver1

PORT_STRING                    VERSION        BANNER

------------------------------ -------------- --------------------------------------------------------------------------------

x86_64/Linux 2.4.xx            11.2.0.3.0     Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production

SCOTT@test> alter tablespace users begin backup ;

Tablespace altered.

2.開始測試:

SCOTT@test> set autot traceonly

SCOTT@test> update dept set loc=upper(loc) ;

4 rows updated.

Execution Plan

----------------------------------------------------------

Plan hash value: 921533340

---------------------------------------------------------------------------

| Id  | Operation          | Name | Rows  | Bytes | Cost (%CPU)| Time     |

|   0 | UPDATE STATEMENT   |      |     4 |    32 |     3   (0)| 00:00:01 |

|   1 |  UPDATE            | DEPT |       |       |            |          |

|   2 |   TABLE ACCESS FULL| DEPT |     4 |    32 |     3   (0)| 00:00:01 |

Statistics

          0  recursive calls

          5  db block gets

          8  consistent gets

          0  physical reads

       9664  redo size

        834  bytes sent via SQL*Net to client

        784  bytes received via SQL*Net from client

          3  SQL*Net roundtrips to/from client

          1  sorts (memory)

          0  sorts (disk)

          4  rows processed

SCOTT@test> commit ;

Commit complete.

--可以發現産生的redo size=9664.

3.如果我後續依舊做這樣的操作:

SCOTT@test> update dept set loc=lower(loc) ;

       1436  redo size

        837  bytes sent via SQL*Net to client

--可以發現産生的redo size=1436.

--再次證明,僅僅第1次産生的redo包含整個資料塊,後續的修改就不需要這樣了。