当前位置:  数据库>虚拟机装Oracle R12与Oracle10g iis7站长之家

Oracle数据库启动过程验证检查点SCN

    来源: 互联网  发布时间:2017-06-12

    本文导语: SCN(System Change Number,系统改变号)是Oracle数据库非常重要的机制。SCN在数据库启动,读一致性,数据的恢复,FLASHBACK操作等情况下都会用到。 1.SCN号是重要的时间机制,两者之间可以相互的转换。 1).将时间转换为SCN号:SQL> sele...

SCN(System Change Number,系统改变号)是Oracle数据库非常重要的机制。SCN在数据库启动,读一致性,数据的恢复,FLASHBACK操作等情况下都会用到。

1.SCN号是重要的时间机制,两者之间可以相互的转换。

1).将时间转换为SCN号:
SQL> select timestamp_to_scn(sysdate) from dual;

TIMESTAMP_TO_SCN(SYSDATE)
-------------------------
                  920939

 2).将SCN号转换为具体时间:

SQL> select scn_to_timestamp(920000) from dual;

SCN_TO_TIMESTAMP(920000)
---------------------------------------------------------------------------
07-FEB-10 01.06.11.000000000 AM

3).查看当前数据库最新的SCN号:
SQL> select current_scn from v$database;

CURRENT_SCN
-----------
    920782
    当前最新的SCN号,该SCN号会不停的在内存中被刷新,Oracle 10g每隔3秒就会被刷新。

2.数据库启动过程对SCN号的验证。

    下面我们先来了解4种类型的SCN,这4种类型的SCN实际都是检查点SCN,都是由CKPT进程更新,存储在控制文件和数据文件头中,不同类型的SCN有不同的作用。

1).数据库检查点SCN:

 


SQL> select checkpoint_change# from v$database;

CHECKPOINT_CHANGE#
------------------
            920459

    数据库检查点SCN,每执行一次检查点,CKPT进程会更新控制文件中的数据库检查点SCN。

2).数据文件SCN:
 

SQL> select checkpoint_change# from v$datafile;

CHECKPOINT_CHANGE#
------------------
            920459
            920459
            920459
            920459
            920459
            920459
            920459
            920459
            920459
            920459
            920459

36 rows selected.

    数据文件SCN,每个数据文件都有一个数据文件SCN,每执行一次检查点,由CKPT进程都将更新位于控制文件中的数据文件SCN。

3).数据文件启动SCN:
 

SQL>  select checkpoint_change# from v$datafile_header;

CHECKPOINT_CHANGE#
------------------
            920459
            920459
            920459
            920459
            920459
            920459
            920459
            920459
            920459
            920459
            920459

36 rows selected.

    启动SCN,每个数据文件都有一个启动SCN,每执行一次检查点,CKPT进程都将更新数据文件头中的检查点SCN,这被叫做启动SCN。

4).数据文件终止SCN:
 

SQL> select last_change# from v$datafile;

LAST_CHANGE#
------------

36 rows selected.

    终止SCN,每个数据文件都有一个终止SCN,该SCN存储在控制文件中,当数据库被OPEN之后,该值即变成#ffffff无穷大。

数据库在启动过程中对SCN的验证分为两个阶段:
  第一阶段,检查控制文件和数据文件中数据文件的检查点次数是否一致(不同的数据文件检查点次数可能是不同的),如果不一致说明要么控制文件过旧,要么数据文件过旧,需要执行相应的恢复操作;如果一致继续执行下一步检查。

  第二阶段,检查数据文件的启动SCN和终止SCN是否一致,如果数据库关闭是非正常关闭,那么终止SCN肯定是无穷大,这个时候需要完成一个实例恢复的过程;如果启动SCN和终止SCN相同,那么数据库就可以OPEN了。

  另外,存储在控制文件中的数据库SCN、数据文件SCN和存储在数据文件头中的启动SCN实际都是在执行检查点时由CKPT进程对控制文件和数据文件头的更新,3者必定是相同的,在执行SHUTDOWN IMMEDIATE|NORMAL|TRANSANTIONAL关闭数据库时会再次触发检查点,这时前面3种类型的SCN和存储在控制文件中的终止SCN必定是相同的。

 下面我们通过对控制文件和数据文件头的转储来验证上面的说法:

1).正常关闭数据库的状态。

SQL> shutdown immediate
 Database closed.
 Database dismounted.
 ORACLE instance shut down.
 SQL> startup mount
 ORACLE instance started.

 Total System Global Area  599785472 bytes
 Fixed Size                  2022600 bytes
 Variable Size            230687544 bytes
 Database Buffers          360710144 bytes
 Redo Buffers                6365184 bytes
 Database mounted.
 SQL> @?/rdbms/admin/gettrace

 TRACE_FILE_NAME
 --------------------------------------------------------------------------------
 /u01/app/oracle1/admin/orcl/udump/orcl_ora_4132.trc

 SQL> alter session set events 'immediate trace name controlf level 8';

 Session altered.
完成对控制文件的转储,下面来查看一下orcl_ora_4132.trc跟踪文件内容:
a).存储在控制文件中的数据库内容:
***************************************************************************
DATABASE ENTRY
 ***************************************************************************
  (size = 316, compat size = 316, section max = 1, section in-use = 1,
  last-recid= 0, old-recno = 0, last-recno = 0)
  (extent = 1, blkno = 1, numrecs = 1)
  02/19/2014 14:20:20
  DB Name "ORCL"
  Database flags = 0x50404001 0x00001000
  Controlfile Creation Timestamp  02/19/2014 14:20:21
  Incmplt recovery scn: 0x0000.00000000
  Resetlogs scn: 0x0000.00080634 Resetlogs Timestamp  02/19/2014 14:20:23
  Prior resetlogs scn: 0x0000.00000001 Prior resetlogs Timestamp  10/22/2005 21:44:08
  Redo Version: compatible=0xa200100
  #Data files = 6, #Online files = 6
 Database checkpoint: Thread=1 scn: 0x0000.00091eb4
  Threads: #Enabled=1, #Open=0, Head=0, Tail=0
 ......
  Max log members = 3, Max data members = 1
  Arch list: Head=2, Tail=2, Force scn: 0x0000.00091e72scn: 0x0000.00091e88
  Activation ID: 1367751332
  Controlfile Checkpointed at scn:  0x0000.00091e88 04/16/2014 13:54:24
  thread:0 rba:(0x0.0.0)
 ......
粗体加红表示的数据库检查点SCN号。

b).存储在控制文件中的数据文件检查点次数、SCN号和停止SCN号:
***************************************************************************
DATA FILE RECORDS
 ***************************************************************************
  (size = 428, compat size = 428, section max = 100, section in-use = 6,
  last-recid= 9, old-recno = 0, last-recno = 0)
  (extent = 1, blkno = 11, numrecs = 100)
 DATA FILE #1:
  (name #7) /u01/app/oracle1/oradata/orcl/system01.dbf
 creation size=0 block size=8192 status=0xe head=7 tail=7 dup=1
  tablespace 0, index=1 krfil=1 prev_file=0
  unrecoverable scn: 0x0000.00000000 01/01/1988 00:00:00
  Checkpoint cnt:183 scn: 0x0000.00091eb4 04/16/2014 13:54:27
  Stop scn: 0x0000.00091eb4 04/16/2014 13:54:27
  Creation Checkpointed at scn:  0x0000.00000008 10/22/2005 21:44:31
  thread:0 rba:(0x0.0.0)
 cnt表示的是检查点次数,scn表示的是数据文件检查点SCN,Stop scn表示的是数据文件停止SCN。

DATA FILE #2:
  (name #6) /u01/app/oracle1/oradata/orcl/undotbs01.dbf
 creation size=0 block size=8192 status=0xe head=6 tail=6 dup=1
  tablespace 1, index=2 krfil=2 prev_file=0
  unrecoverable scn: 0x0000.00000000 01/01/1988 00:00:00
 Checkpoint cnt:145 scn: 0x0000.00091eb4 04/16/2014 13:54:27
 Stop scn: 0x0000.00091eb4 04/16/2014 13:54:27
  Creation Checkpointed at scn:  0x0000.0007fd42 10/22/2005 22:24:27
  thread:0 rba:(0x0.0.0)

 DATA FILE #3:
  (name #5) /u01/app/oracle1/oradata/orcl/sysaux01.dbf
 creation size=0 block size=8192 status=0xe head=5 tail=5 dup=1
  tablespace 2, index=3 krfil=3 prev_file=0
  unrecoverable scn: 0x0000.00000000 01/01/1988 00:00:00
 Checkpoint cnt:183 scn: 0x0000.00091eb4 04/16/2014 13:54:27
 Stop scn: 0x0000.00091eb4 04/16/2014 13:54:27
  Creation Checkpointed at scn:  0x0000.00001896 10/22/2005 21:44:46
  thread:0 rba:(0x0.0.0)

 DATA FILE #4:
  (name #4) /u01/app/oracle1/oradata/orcl/users01.dbf
 creation size=0 block size=8192 status=0xe head=4 tail=4 dup=1
  tablespace 4, index=4 krfil=4 prev_file=0
  unrecoverable scn: 0x0000.00000000 01/01/1988 00:00:00
 Checkpoint cnt:182 scn: 0x0000.00091eb4 04/16/2014 13:54:27
 Stop scn: 0x0000.00091eb4 04/16/2014 13:54:27
  Creation Checkpointed at scn:  0x0000.000027b9 10/22/2005 21:45:00
  thread:0 rba:(0x0.0.0)

 DATA FILE #5:
  (name #9) /u01/app/oracle1/oradata/orcl/gguser.dbf
 creation size=128000 block size=8192 status=0xe head=9 tail=9 dup=1
  tablespace 6, index=6 krfil=5 prev_file=0
  unrecoverable scn: 0x0000.00000000 01/01/1988 00:00:00
 Checkpoint cnt:135 scn: 0x0000.00091eb4 04/16/2014 13:54:27
 Stop scn: 0x0000.00091eb4 04/16/2014 13:54:27
  Creation Checkpointed at scn:  0x0000.00083314 02/19/2014 14:33:57
  thread:1 rba:(0x2.c04b.10)

 DATA FILE #6:
  (name #10) /u01/app/oracle1/oradata/orcl/ogg2.dbf
 creation size=640 block size=8192 status=0x86 head=10 tail=10 dup=1
  tablespace 7, index=7 krfil=6 prev_file=0
  unrecoverable scn: 0x0000.00000000 01/01/1988 00:00:00
 Checkpoint cnt:3 scn: 0x0000.00089cfb 03/18/2014 13:32:52
 Stop scn: 0x0000.00089cfb 03/18/2014 13:32:52
  Creation Checkpointed at scn:  0x0000.00089bd3 03/18/2014 13:29:26
  thread:1 rba:(0x3.e2.10)

    从上面的内容可以看出,每个数据文件的检查点次数都是不同;除了DATA FILE 6以外的SCN号不同外,其余数据文件都是相同的;每个数据文件的SCN号与Stop SCN号都是一致的,除了DATA FILE 6以外,其余的数据文件SCN、STOP SCN都和前面的数据库SCN一致。

 

c).转储存储在数据文件头中的数据文件检查点次数和启动SCN:
 DATA FILE #1:
  (name #7) /u01/app/oracle1/oradata/orcl/system01.dbf
 creation size=0 block size=8192 status=0xe head=7 tail=7 dup=1
  tablespace 0, index=1 krfil=1 prev_file=0
  unrecoverable scn: 0x0000.00000000 01/01/1988 00:00:00
 Checkpoint cnt:183 scn: 0x0000.00091eb4 04/16/2014 13:54:27
  Stop scn: 0x0000.00091eb4 04/16/2014 13:54:27
  Creation Checkpointed at scn:  0x0000.00000008 10/22/2005 21:44:31

 DATA FILE #2:
  (name #6) /u01/app/oracle1/oradata/orcl/undotbs01.dbf
 creation size=0 block size=8192 status=0xe head=6 tail=6 dup=1
  tablespace 1, index=2 krfil=2 prev_file=0
  unrecoverable scn: 0x0000.00000000 01/01/1988 00:00:00
  Checkpoint cnt:145 scn: 0x0000.00091eb4 04/16/2014 13:54:27
  Stop scn: 0x0000.00091eb4 04/16/2014 13:54:27
  Creation Checkpointed at scn:  0x0000.0007fd42 10/22/2005 22:24:27
 
 DATA FILE #3:
  (name #5) /u01/app/oracle1/oradata/orcl/sysaux01.dbf
 creation size=0 block size=8192 status=0xe head=5 tail=5 dup=1
  tablespace 2, index=3 krfil=3 prev_file=0
  unrecoverable scn: 0x0000.00000000 01/01/1988 00:00:00
  Checkpoint cnt:183 scn: 0x0000.00091eb4 04/16/2014 13:54:27
  Stop scn: 0x0000.00091eb4 04/16/2014 13:54:27
  Creation Checkpointed at scn:  0x0000.00001896 10/22/2005 21:44:46
  thread:0 rba:(0x0.0.0)
 
 DATA FILE #4:
  (name #4) /u01/app/oracle1/oradata/orcl/users01.dbf
 creation size=0 block size=8192 status=0xe head=4 tail=4 dup=1
  tablespace 4, index=4 krfil=4 prev_file=0
  unrecoverable scn: 0x0000.00000000 01/01/1988 00:00:00
  Checkpoint cnt:182 scn: 0x0000.00091eb4 04/16/2014 13:54:27
  Stop scn: 0x0000.00091eb4 04/16/2014 13:54:27
  Creation Checkpointed at scn:  0x0000.000027b9 10/22/2005 21:45:00
  thread:0 rba:(0x0.0.0)
 
 DATA FILE #5:
  (name #9) /u01/app/oracle1/oradata/orcl/gguser.dbf
 creation size=128000 block size=8192 status=0xe head=9 tail=9 dup=1
  tablespace 6, index=6 krfil=5 prev_file=0
  unrecoverable scn: 0x0000.00000000 01/01/1988 00:00:00
  Checkpoint cnt:135 scn: 0x0000.00091eb4 04/16/2014 13:54:27
  Stop scn: 0x0000.00091eb4 04/16/2014 13:54:27
  Creation Checkpointed at scn:  0x0000.00083314 02/19/2014 14:33:57
  thread:1 rba:(0x2.c04b.10)
 
 DATA FILE #6:
  (name #10) /u01/app/oracle1/oradata/orcl/ogg2.dbf
 creation size=640 block size=8192 status=0x86 head=10 tail=10 dup=1
  tablespace 7, index=7 krfil=6 prev_file=0
  unrecoverable scn: 0x0000.00000000 01/01/1988 00:00:00
  Checkpoint cnt:3 scn: 0x0000.00089cfb 03/18/2014 13:32:52
  Stop scn: 0x0000.00089cfb 03/18/2014 13:32:52
  Creation Checkpointed at scn:  0x0000.00089bd3 03/18/2014 13:29:26
  thread:1 rba:(0x3.e2.10)

这里每个数据文件检查点次数和前面从控制文件转储出来的数据文件检查点次数是一致的;每个数据文件的SCN号和Stop SCN与从控制文件查询的数据文件SCN号和STOP SCN号也是一致的。

  由于存储在控制文件中的数据库SCN号与除了DATA FILE 6以外的所有数据文件的SCN、STOP SCN都完全一致(包括存储在控制文件和数据文件头)。

SQL> select tablespace_name,file_id from dba_data_files where file_id=6;

 TABLESPACE_NAME                  FILE_ID
 ------------------------------ ----------
 OGG2                                    6

SQL> select tablespace_name,status from dba_tablespaces;

TABLESPACE_NAME                STATUS
------------------------------ ---------
SYSTEM                        ONLINE
UNDOTBS1                      ONLINE
SYSAUX                        ONLINE
TEMP                          ONLINE
USERS                          ONLINE
TBS_OGG                        ONLINE
OGG2                          READ ONLY

7 rows selected.

DATA FILE 6不同是因为对应的表空间是READ ONLY的状态,所以数据文件的SCN不会发生变化。

$ORACLE_HOME/rdbms/admin/gettrace.sql脚本的内容如下:
[oracle1@RedHat5 admin]$ cat gettrace.sql
 SELECT d.value || '/' || lower(rtrim(i.instance, chr(0))) || '_ora_' ||
        p.spid || '.trc' trace_file_name
  from (select p.spid
          from sys.v$mystat m, sys.v$session s, sys.v$process p
          where m.statistic# = 1
            and s.sid = m.sid
            and p.addr = s.paddr) p,
        (select t.instance
          from sys.v$thread t, sys.v$parameter v
          where v.name = 'thread'
            and (v.value = 0 or t.thread# = to_number(v.value))) i,
        (select value from sys.v$parameter where name = 'user_dump_dest') d;

--end--


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • fedora core5 (FC5) 下面不能装 Oracle 10g 么? (检查操作系统就通不过啊,晕)
  • Oracle安装过程中物理内存检查及临时temp空间不足问题解决
  • Oracle RAC 状态检查
  • Oracle中检查是否需要重构索引的sql
  • Oracle中死事务的检查语句
  • 在linux下安装oracle时,使用sysctl检查系统参数时出现许多error信息,不知道怎么回事,望高手指点!
  • Oracle 12c发布简单介绍及官方下载地址
  • 在linux下安装oracle,如何设置让oracle自动启动!也就是让oracle那个服务自动启动,不是手动的
  • oracle 11g最新版官方下载地址
  • 请问su oracle 和su - oracle有什么不同?
  • Oracle 数据库(oracle Database)Select 多表关联查询方式
  • 虚拟机装Oracle R12与Oracle10g
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍
  • Oracle 数据库开发工具 Oracle SQL Developer
  • 如何设置让Oracle SQL Developer显示的时间包含时分秒
  • Oracle EBS R12 支持 Oracle Database 11g
  • Oracle 10g和Oracle 11g网格技术介绍
  • SCO unix下安装oracle,但没有光盘,请大家推荐一个oracle下载站点(unix版本的)。谢谢!!!!
  • oracle中如何把表中具有相同值列的多行数据合并成一行
  • 请问大家用oracle数据库, 用import oracle.*;下的东西么? 还是用标准库?
  • Oracle 数据库(oracle Database)性能调优技术详解
  • Linux /$ORACLE_HOME $ORACLE_HOME
  • ORACLE日期相关操作
  • Linux系统下Oracle的启动与Oracle监听的启动
  • ORACLE数据库常用字段数据类型介绍
  • 请问在solaris下安装ORACLE,用root用户和用oracle用户安装有什么区别么?
  • Oracle 12c的九大最新技术特性介绍
  • 网间Oracle的连接,远程连接Oracle服务器??


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,