Oracle scn介绍(二)

2014-11-24 18:40:13 · 作者: · 浏览: 2
------
1 117925094 117925094
2 117925094 117925094
3 117925094 117925094
4 117925094 117925094
5 117925094 117925094
6 117925094 117925094
7 117925094 117925094
8 117925094 117925094
9 117925094 117925094
10 117925094 117925094
11 117925094 117925094


FILE# CHECKPOINT_CHANGE# LAST_CHANGE#
---------- ------------------ ------------
12 117925094 117925094
13 117925094 117925094
14 117925094 117925094


14 rows selected.
--发现start scn=last scn,证明系统是正常关闭
SQL> alter database open;


Database altered.
3、在正常打开状态下进行事务操作
SQL> CREATE TABLE w(a number);


Table created.


SQL> INSERT INTO w VALUES(1);


1 row created.


SQL> commit;


Commit complete.


SQL> INSERT INTO w VALUES(2);


1 row created.
4、非正常关闭
SQL> shutdown abort;
ORACLE instance shut down.
5、打开到mount状态下,观看scn
SQL> startup mount;
ORACLE instance started.


Total System Global Area 835104768 bytes
Fixed Size 2217952 bytes
Variable Size 624953376 bytes
Database Buffers 201326592 bytes
Redo Buffers 6606848 bytes
Database mounted.
SQL> SELECT file#,checkpoint_change#, last_change# FROM v$datafile;


FILE# CHECKPOINT_CHANGE# LAST_CHANGE#
---------- ------------------ ------------
1 117925097
2 117925097
3 117925097
4 117925097
5 117925097
6 117925097
7 117925097
8 117925097
9 117925097
10 117925097
11 117925097


FILE# CHECKPOINT_CHANGE# LAST_CHANGE#
---------- ------------------ ------------
12 117925097
13 117925097
14 117925097


14 rows selected.


SQL> SELECT checkpoint_change# FROM v$database;


CHECKPOINT_CHANGE#
------------------
117925097


SQL> SELECT file#,checkpoint_chnge# FROM v$datafile_header;
SELECT file#,checkpoint_chnge# FROM v$datafile_header
*
ERROR at line 1:
ORA-00904: "CHECKPOINT_CHNGE#": invalid identifier



SQL> SELECT file#, checkpoint_change# FROM v$datafile_header;


FILE# CHECKPOINT_CHANGE#
---------- ------------------
1 117925097
2 117925097
3 117925097
4 117925097
5 117925097
6 117925097
7 117925097
8 117925097
9 117925097
10 117925097
11 117925097


FILE# CHECKPOINT_CHANGE#
---------- ------------------
12 117925097
13 117925097
14 117925097


14 rows selected.
--这时发现start scn 与last scn不等,last scn为无穷大,需要例程恢复
6、改变数据库状态为open,并查看该阶段运行日志
SQL> ALTER DATABASE open;


Database altered.


SQL> SELECT * FROM w;


A
----------
1
--发现没有提交的事务丢失。
查看日志如下:
Thu Mar 24 10:47:24 2011
ALTER DATABASE MOUNT
Successful mount of redo thread 1, with mount id 1274403260
Database mounted in Exclusive Mode
Lost write protection disabled
Completed: ALTER DATABASE MOUNT
Thu Mar 24 10:50:12 2011
ALTER DATABASE open
Beginning crash recovery of 1 threads --会自动判断是否需要恢复,这里开始例程恢复
parallel recovery started with 2 processes
Started redo scan
Completed redo scan
read 162 KB redo, 112 data blocks need recovery
Started redo application at
Thread 1: logseq 2635, block 491121
Recovery of Online Redo Log: Thread 1 Grou