[20190312]視圖v$datafile欄位OFFLINE_CHANGE#, ONLINE_CHANGE#.txt

来源:https://www.cnblogs.com/lfree/archive/2019/03/12/10518210.html
-Advertisement-
Play Games

[20190312]視圖v$datafile欄位OFFLINE_CHANGE#, ONLINE_CHANGE#.txt--//視圖v$datafile存在2個欄位OFFLINE_CHANGE#, ONLINE_CHANGE#,想當然會認為數據文件offline時記錄scn號的改變.--//真的嗎?通 ...


[20190312]視圖v$datafile欄位OFFLINE_CHANGE#, ONLINE_CHANGE#.txt

--//視圖v$datafile存在2個欄位OFFLINE_CHANGE#, ONLINE_CHANGE#,想當然會認為數據文件offline時記錄scn號的改變.
--//真的嗎?通過例子說明:

1.環境:
SYS@book> @ ver1
PORT_STRING                    VERSION        BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx            11.2.0.4.0     Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

SYS@book> SELECT file#, CHECKPOINT_CHANGE#,CHECKPOINT_TIME,UNRECOVERABLE_CHANGE#,UNRECOVERABLE_TIME,LAST_CHANGE#,LAST_TIME, OFFLINE_CHANGE#, ONLINE_CHANGE#,FIRST_NONLOGGED_SCN,FIRST_NONLOGGED_TIME,status,name FROM v$datafile;
FILE# CHECKPOINT_CHANGE# CHECKPOINT_TIME     UNRECOVERABLE_CHANGE# UNRECOVERABLE_TIME  LAST_CHANGE# LAST_TIME           OFFLINE_CHANGE# ONLINE_CHANGE# FIRST_NONLOGGED_SCN FIRST_NONLOGGED_TIM STATUS  NAME
----- ------------------ ------------------- --------------------- ------------------- ------------ ------------------- --------------- -------------- ------------------- ------------------- ------- --------------------------------------------------
    1        13279958095 2019-03-12 16:40:08                     0                                                                    0              0                   0                     SYSTEM  /mnt/ramdisk/book/system01.dbf
    2        13279958095 2019-03-12 16:40:08                     0                                                                    0              0                   0                     ONLINE  /mnt/ramdisk/book/sysaux01.dbf
    3        13279958095 2019-03-12 16:40:08                     0                                                                    0              0                   0                     ONLINE  /mnt/ramdisk/book/undotbs01.dbf
    4        13279958095 2019-03-12 16:40:08                     0                                                                    0              0                   0                     ONLINE  /mnt/ramdisk/book/users01.dbf
    5        13279958095 2019-03-12 16:40:08                     0                                                                    0              0                   0                     ONLINE  /mnt/ramdisk/book/example01.dbf
    6        13279958095 2019-03-12 16:40:08                     0                                                                    0              0                   0                     ONLINE  /mnt/ramdisk/book/tea01.dbf
6 rows selected.

--//我重建了控制文件,許多欄位當前是空的.

2.測試:
SYS@book> alter database datafile 6 offline ;
Database altered.

SYS@book>  SELECT file#, CHECKPOINT_CHANGE#,CHECKPOINT_TIME,UNRECOVERABLE_CHANGE#,UNRECOVERABLE_TIME,LAST_CHANGE#,LAST_TIME, OFFLINE_CHANGE#, ONLINE_CHANGE#,FIRST_NONLOGGED_SCN,FIRST_NONLOGGED_TIME,status,name FROM v$datafile where file# in (1,6);
FILE# CHECKPOINT_CHANGE# CHECKPOINT_TIME     UNRECOVERABLE_CHANGE# UNRECOVERABLE_TIME  LAST_CHANGE# LAST_TIME           OFFLINE_CHANGE# ONLINE_CHANGE# FIRST_NONLOGGED_SCN FIRST_NONLOGGED_TIM STATUS  NAME
----- ------------------ ------------------- --------------------- ------------------- ------------ ------------------- --------------- -------------- ------------------- ------------------- ------- --------------------------------------------------
    1        13279958095 2019-03-12 16:40:08                     0                                                                    0              0                   0                     SYSTEM  /mnt/ramdisk/book/system01.dbf
    6        13279958095 2019-03-12 16:40:08                     0                      13279959313 2019-03-12 16:53:06               0              0                   0                     RECOVER /mnt/ramdisk/book/tea01.dbf

--//實際上offline 數據文件時,在控制文件記錄的是LAST_CHANGE#,LAST_TIME.

SYS@book> recover datafile 6;
Media recovery complete.
--//註無法直接online,要執行recover.所以如果有需求要offline,應該養成隨手執行recover datafile N的習慣.

SYS@book>  SELECT file#, CHECKPOINT_CHANGE#,CHECKPOINT_TIME,UNRECOVERABLE_CHANGE#,UNRECOVERABLE_TIME,LAST_CHANGE#,LAST_TIME, OFFLINE_CHANGE#, ONLINE_CHANGE#,FIRST_NONLOGGED_SCN,FIRST_NONLOGGED_TIME,status,name FROM v$datafile where file# in (1,6);
FILE# CHECKPOINT_CHANGE# CHECKPOINT_TIME     UNRECOVERABLE_CHANGE# UNRECOVERABLE_TIME  LAST_CHANGE# LAST_TIME           OFFLINE_CHANGE# ONLINE_CHANGE# FIRST_NONLOGGED_SCN FIRST_NONLOGGED_TIM STATUS  NAME
----- ------------------ ------------------- --------------------- ------------------- ------------ ------------------- --------------- -------------- ------------------- ------------------- ------- --------------------------------------------------
    1        13279958095 2019-03-12 16:40:08                     0                                                                    0              0                   0                     SYSTEM  /mnt/ramdisk/book/system01.dbf
    6        13279959313 2019-03-12 16:53:06                     0                      13279959313 2019-03-12 16:53:06               0              0                   0                     OFFLINE /mnt/ramdisk/book/tea01.dbf

--//CHECKPOINT_CHANGE#=LAST_CHANGE#.status 從RECOVER=>OFFLINE.  看看看看文件頭的情況:

SYS@book>  SELECT file#, CHECKPOINT_CHANGE#, CHECKPOINT_TIME,CREATION_CHANGE#  , RESETLOGS_CHANGE#,status, CHECKPOINT_COUNT,fuzzy,name,tablespace_name  FROM v$datafile_header where file# in (1,6);
FILE# CHECKPOINT_CHANGE# CHECKPOINT_TIME     CREATION_CHANGE# RESETLOGS_CHANGE# STATUS  CHECKPOINT_COUNT FUZ NAME                                               TABLESPACE_NAME
----- ------------------ ------------------- ---------------- ----------------- ------- ---------------- --- -------------------------------------------------- ------------------------------
    1        13279958095 2019-03-12 16:40:08                7            925702 ONLINE              1224 YES /mnt/ramdisk/book/system01.dbf                     SYSTEM
    6        13279959313 2019-03-12 16:53:06      13276257767            925702 OFFLINE              607 NO  /mnt/ramdisk/book/tea01.dbf                        TEA

--//文件頭的CHECKPOINT_CHANGE#與控制文件CHECKPOINT_CHANGE#一致.
--//註:v$datafile的信息來自控制文件,v$datafile_header的信息來自數據文件頭,不要搞混了.

SYS@book> alter database datafile 6 online ;
Database altered.

SYS@book>  SELECT file#, CHECKPOINT_CHANGE#,CHECKPOINT_TIME,UNRECOVERABLE_CHANGE#,UNRECOVERABLE_TIME,LAST_CHANGE#,LAST_TIME, OFFLINE_CHANGE#, ONLINE_CHANGE#,FIRST_NONLOGGED_SCN,FIRST_NONLOGGED_TIME,status,name FROM v$datafile where file# in (1,6);
FILE# CHECKPOINT_CHANGE# CHECKPOINT_TIME     UNRECOVERABLE_CHANGE# UNRECOVERABLE_TIME  LAST_CHANGE# LAST_TIME           OFFLINE_CHANGE# ONLINE_CHANGE# FIRST_NONLOGGED_SCN FIRST_NONLOGGED_TIM STATUS  NAME
----- ------------------ ------------------- --------------------- ------------------- ------------ ------------------- --------------- -------------- ------------------- ------------------- ------- --------------------------------------------------
    1        13279958095 2019-03-12 16:40:08                     0                                                                    0              0                   0                     SYSTEM  /mnt/ramdisk/book/system01.dbf
    6        13279960343 2019-03-12 16:58:40                     0                                                                    0              0                   0                     ONLINE  /mnt/ramdisk/book/tea01.dbf

--//可以發現數據文件 online後,OFFLINE_CHANGE#,ONLINE_CHANGE#欄位並沒有任何記錄.也就是這個欄位並不是記錄數據文件offline的scn號.

3.繼續測試:
--//既然不是數據文件offline時記錄scn號,自然想到表空間的offline,online有關.

SYS@book> alter tablespace tea offline ;
Tablespace altered.

SYS@book>  SELECT file#, CHECKPOINT_CHANGE#,CHECKPOINT_TIME,UNRECOVERABLE_CHANGE#,UNRECOVERABLE_TIME,LAST_CHANGE#,LAST_TIME, OFFLINE_CHANGE#, ONLINE_CHANGE#,FIRST_NONLOGGED_SCN,FIRST_NONLOGGED_TIME,status,name FROM v$datafile where file# in (1,6);
FILE# CHECKPOINT_CHANGE# CHECKPOINT_TIME     UNRECOVERABLE_CHANGE# UNRECOVERABLE_TIME  LAST_CHANGE# LAST_TIME           OFFLINE_CHANGE# ONLINE_CHANGE# FIRST_NONLOGGED_SCN FIRST_NONLOGGED_TIM STATUS  NAME
----- ------------------ ------------------- --------------------- ------------------- ------------ ------------------- --------------- -------------- ------------------- ------------------- ------- --------------------------------------------------
    1        13279958095 2019-03-12 16:40:08                     0                                                                    0              0                   0                     SYSTEM  /mnt/ramdisk/book/system01.dbf
    6        13279960510 2019-03-12 17:01:12                     0                      13279960510 2019-03-12 17:01:12               0              0                   0                     OFFLINE /mnt/ramdisk/book/tea01.dbf

--//表空間offline,預設要更新文件頭的scn,你可以發現STATUS=OFFLINE(而不是recover).CHECKPOINT_CHANGE#=LAST_CHANGE#.
--//註 : alter tablespace tea offline immediate ;.這樣不更新文件頭,與offline 數據文件類似,你可以理解一組文件(表空間)offline.大家可以自行測試.

SYS@book> alter tablespace tea online ;
Tablespace altered.

SYS@book>  SELECT file#, CHECKPOINT_CHANGE#,CHECKPOINT_TIME,UNRECOVERABLE_CHANGE#,UNRECOVERABLE_TIME,LAST_CHANGE#,LAST_TIME, OFFLINE_CHANGE#, ONLINE_CHANGE#,FIRST_NONLOGGED_SCN,FIRST_NONLOGGED_TIME,status,name FROM v$datafile where file# in (1,6);
FILE# CHECKPOINT_CHANGE# CHECKPOINT_TIME     UNRECOVERABLE_CHANGE# UNRECOVERABLE_TIME  LAST_CHANGE# LAST_TIME           OFFLINE_CHANGE# ONLINE_CHANGE# FIRST_NONLOGGED_SCN FIRST_NONLOGGED_TIM STATUS  NAME
----- ------------------ ------------------- --------------------- ------------------- ------------ ------------------- --------------- -------------- ------------------- ------------------- ------- --------------------------------------------------
    1        13279958095 2019-03-12 16:40:08                     0                                                                    0              0                   0                     SYSTEM  /mnt/ramdisk/book/system01.dbf
    6        13279960695 2019-03-12 17:03:55                     0                                                          13279960510    13279960695                   0                     ONLINE  /mnt/ramdisk/book/tea01.dbf

--//可以發現表空間tea online後,OFFLINE_CHANGE#,ONLINE_CHANGE#有信息,OFFLINE_CHANGE#記錄就是表空間offline時的scn,而ONLINE_CHANGE#記錄就是表空間online時的scn.
--//oracle為什麼這樣設計,假設你需要恢復1個數據文件,取出來的數據文件scn小於OFFLINE_CHANGE#,這樣恢復時,從OFFLINE_CHANGE# 到 ONLINE_CHANGE#的日誌或者歸檔可以跳過,
--//節約日誌應用與恢復時間.

--//自然要問,為什麼數據文件offline時為什麼沒有類似的記錄呢?而數據文件offline時,處於"不穩定狀態",不能直接online的,這樣控制文件僅僅記錄LAST_CHANGE#(offline時).
--//這樣恢復時日誌僅僅應用到LAST_CHANGE#就ok了,但是為什麼數據文件online時LAST_CHANGE#的信息不寫入OFFLINE_CHANGE#,online時的scn寫入ONLINE_CHANGE#呢?
--//感覺這個存在一點點歧義行,個人理解.

--//也許oracle在視圖欄位命名上不科學,應該將OFFLINE_CHANGE#, ONLINE_CHANGE#命名為TABLESPACE_OFFLINE_CHANGE#,TABLESPACE_ONLINE_CHANGE#更加科學一些.


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 九、shell腳本清理磁碟空間 添加定時任務: crontab -e 加:0 0 */4 * * cd /home/script && sh free_space.sh >> /tmp/free_space.log 2>&1 & (每4天清理一次) 十、shell 腳本監控磁碟空間,郵件報警(容量超 ...
  • 1. cmd 調出命令行視窗 2. netstat -ano 查看埠被占用情況 3.命令:tasklist | findstr "9480" 發現被httpd.exe 占用 4.結束該進程 taskkill /f /t /im httpd.exe 註意:一定要用管理員身份運行 否則沒有許可權執行成功 ...
  • 容器中管理數據主要有兩種方式 數據捲:容器內的數據直接映射到本地主機目錄。 數據捲容器:使用特定的容器維護數據捲。 Docker提供三種不同的方式將數據從宿主機掛載到容器中:volumes,bind mounts和tmpfs。 1)volumes:Docker管理宿主機文件系統的一部分(/var/l ...
  • 1. 卸載navicate for mysql 會留下很多坑,主要是卸載不幹凈,卸載之後重新安裝會出現之前的庫內容和庫鏈接還存在的問題,這種情況的出現是卸載殘餘。 解決辦法,清理註冊表(網上很多教程但不一定有用,折騰了好久,所有的註冊表全部刪除,C盤下的programData下的數據也已經刪除,但重 ...
  • 1.查看mysql資料庫預設編碼: mysql> show variables like "character%"; + + +| Variable_name | Value |+ + +| character_set_client | utf8 || character_set_connectio ...
  • 一、問題描述 ​ 最近遇到了一個奇怪的MySql資料庫問題,好幾次前一天晚上歷史數據還正常存儲,第二天早上來了看實時數據存儲還正常,歷史數據不存儲了。找了好久也沒找到問題。後來仔細想了想,歷史數據設置了變化才存儲,是不是數據一直不變,就一直沒有往資料庫寫數據,導致MySql的連接太久不用自動斷開了。 ...
  • 操作系統版本:HP-UNIX B.11.31 資料庫版本:11.2.0.4 RAC (一) 問題概要 (1)在AWR報告的Top 10 Foreground Events中發現reliable message占用了較高的DB Time,如下: Top 10 Foreground Events by ...
  • 一、安裝ubuntu操作系統 參考:https://www.cnblogs.com/Alier/p/6337151.html 二、下載hadoop以及hive hadoop:https://hadoop.apache.org/releases.html hive:http://hive.apache ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...