国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

關于數據文件頭的檢查點SCN

2024-07-21 02:34:04
字體:
來源:轉載
供稿:網友

  在控制文件中存放著數據文件的信息,這些信息包含了一些經常改變的屬性,比如說數據文件的“結束SCN”.
  
  這些東西在數據庫啟動時,對于驗證數據庫文件的完整性具有很重要的意義。
  
  在ITpub上找到了一篇文章,很好,轉過來了,并作了一些測試。
  
  1、系統檢查點scn
  
  當一個檢查點動作完成后,Oracle就把系統檢查點的SCN存儲到控制文件中。
  
  select checkpoint_change# from v$database
  
  2、數據文件檢查點scn
  
  當一個檢查點動作完成后,Oracle就把每個數據文件的scn單獨存放在控制文件中。
  
  select name,checkpoint_change# from v$datafile
  
  3、啟動scn
  
  Oracle把這個檢查點的scn存儲在每個數據文件的文件頭中,這個值稱為啟動scn,因為它用于在數據庫實例啟動時,檢查是否需要執行數據庫恢復。
  
  select name,checkpoint_change# from v$datafile_header
  
  4、終止scn
  
  每個數據文件的終止scn都存儲在控制文件中。
  
  select name,last_change# from v$datafile
  
  在正常的數據庫操作過程中,所有正處于聯機讀寫模式下的數據文件的終止scn都為null.
  
  5、在數據庫運行期間的scn值
  
  在數據庫打開并運行之后,控制文件中的系統檢查點、控制文件中的數據文件檢查點scn和每個數據文件頭中的啟動scn都是相同的。控制文件中的每個數據文件的終止scn都為null.
  
  在安全關閉數據庫的過程中,系統會執行一個檢查點動作,這時所有數據文件的終止scn都會設置成數據文件頭中的那個啟動scn的值。在數據庫重新啟動的時候,Oracle將文件頭中的那個啟動scn與數據庫文件檢查點scn進行比較,假如這兩個值相互匹配,oracle接下來還要比較數據文件頭中的啟動 scn和控制文件中數據文件的終止scn。假如這兩個值也一致,就意味著所有數據塊多已經提交,所有對數據庫的修改都沒有在關閉數據庫的過程中丟失,因此這次啟動數據庫的過程也不需要任何恢復操作,此時數據庫就可以打開了。當所有的數據庫都打開之后,存儲在控制文件中的數據文件終止scn的值再次被更改為 null,這表示數據文件已經打開并能夠正常使用了。
  
  我做的測試如下:
  
  A.數據庫打開時,使用mount參數,不把數據庫open.
  
  系統檢查點scn
  
  SQL> select checkpoint_change# from v$database;
  CHECKPOINT_CHANGE#
  ------------------
        1775875
  
  控制文件中的數據文件檢查點scn
  
  SQL> select name,checkpoint_change# from v$datafile ;
  NAME                       CHECKPOINT_CHANGE#
  -------------------------------------      ------------------
  /opt/oracle/oradata/dbora817/system01.dbf     1775875
  /opt/oracle/oradata/dbora817/tools01.dbf     1775875
  /opt/oracle/oradata/dbora817/rbs01.dbf      1775875
  /opt/oracle/oradata/dbora817/temp01.dbf      1775875
  /opt/oracle/oradata/dbora817/users01.dbf     1775875
  /opt/oracle/oradata/dbora817/indx01.dbf      1775875
  /opt/oracle/oradata/dbora817/drsys01.dbf     1775875
  /opt/oracle/oradata/dbora817/perfstat.dbf     1775875
  
  數據文件的文件頭中的啟動scn
  SQL> select name,checkpoint_change# from v$datafile_header;
  NAME                       CHECKPOINT_CHANGE#
  -------------------------------------      ------------------
  /opt/oracle/oradata/dbora817/system01.dbf     1775875
  /opt/oracle/oradata/dbora817/tools01.dbf     1775875
  /opt/oracle/oradata/dbora817/rbs01.dbf      1775875
  /opt/oracle/oradata/dbora817/temp01.dbf      1775875
  /opt/oracle/oradata/dbora817/users01.dbf     1775875
  /opt/oracle/oradata/dbora817/indx01.dbf      1775875
  /opt/oracle/oradata/dbora817/drsys01.dbf     1775875
  /opt/oracle/oradata/dbora817/perfstat.dbf     1775875
  
  控制文件中的數據文件終止scn
  SQL> select name,last_change# from v$datafile;
  NAME                       LAST_CHANGE#
  -------------------------------------      ------------------
  /opt/oracle/oradata/dbora817/system01.dbf     1775875
  /opt/oracle/oradata/dbora817/tools01.dbf     1775875
  /opt/oracle/oradata/dbora817/rbs01.dbf      1775875
  /opt/oracle/oradata/dbora817/temp01.dbf      1775875
  /opt/oracle/oradata/dbora817/users01.dbf     1775875
  /opt/oracle/oradata/dbora817/indx01.dbf      1775875
  /opt/oracle/oradata/dbora817/drsys01.dbf     1775875
  /opt/oracle/oradata/dbora817/perfstat.dbf     1775875
  
  這些個結束SCN都是跟啟動SCN是一樣的,這樣,當數據庫open的時候就可以不用recover了。

  
  B.把數據庫打開open
  
  SQL> alter database open;
  Database altered.
  
  系統檢查點scn 變為:1775876,比原來增加了1。
  SQL> select checkpoint_change# from v$database;
  
  CHECKPOINT_CHANGE#
  ------------------
        1775876
  
  控制文件中的數據文件檢查點scn和數據文件的文件頭中的啟動scn也都被修改成為1775876,各自增加了1。
  
  然后察看
  
  控制文件中的數據文件終止scn,發現都是NULL.
  
  SQL> select name,last_change# from v$datafile;
  NAME                       LAST_CHANGE#
  -------------------------------------      ------------------
  /opt/oracle/oradata/dbora817/system01.dbf
  /opt/oracle/oradata/dbora817/tools01.dbf
  /opt/oracle/oradata/dbora817/rbs01.dbf
  /opt/oracle/oradata/dbora817/temp01.dbf
  /opt/oracle/oradata/dbora817/users01.dbf
  /opt/oracle/oradata/dbora817/indx01.dbf
  /opt/oracle/oradata/dbora817/drsys01.dbf
  /opt/oracle/oradata/dbora817/perfstat.dbf
  
  C.對系統觸發檢查點
  
  SQL> alter system checkpoint;
  
  System altered.
  
  SQL> select checkpoint_change# from v$database;
  
  CHECKPOINT_CHANGE#
  ------------------
        1775917
  
  系統檢查點scn 發生變化,增加了1。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 正宁县| 铁岭市| 白水县| 西乌| 五台县| 义马市| 太康县| 栾城县| 沧源| 淮滨县| 武川县| 兰溪市| 湘阴县| 桂东县| 济源市| 驻马店市| 定日县| 开平市| 洞头县| 江油市| 苏州市| 铁岭县| 古交市| 博白县| 阿城市| 新津县| 广河县| 呼玛县| 特克斯县| 靖安县| 兖州市| 东宁县| 高尔夫| 乌鲁木齐市| 兴安县| 崇义县| 柞水县| 商都县| 通州市| 仙居县| 资溪县|