Oracle tablespace online and offline

表空間的狀態 – ONLINE和OFFLINE

2014/08/16 來源:CSDN博客

前幾天問一個表空間狀態的問題,也暴露了自己基礎知識的薄弱,之所以總結如下兩篇博文,主要還是讓自己靜下心來,補一下相關知識點,並通過實踐強化自己的理解。

主要參考:

《11g Concept》

《11g Administrator's Guide》

表空間的ONLINE和OFFLINE狀態

1. 只要資料庫處於OPEN狀態,除了SYSTEM表空間外的其他表空間,都可以將其置為online或offline狀態。SYSTEM表空間之所以不能置為offline,是因為其中保存的數據字典需要一直使用。將表空間置為offline,可能的原因包括維護、備份以及恢復等目的。

3. 如果表空間處於offline狀態,那麼Oracle不會允許任何對該表空間中對象的SQL執行。表空間置為offline時仍處於活動狀態的語句在交易級別並不會受影響。Oracle會保存這些尚未完成語句相關的回滾數據到SYSTEM表空間。當表空間置為online時,如果有必要,那麼Oracle會應用這些回滾數據。

3. 除了Oracle外,沒有任何應用能夠讀取或編輯offline的表空間。因此,offline的表空間更不能導到其他資料庫。

4. Oracle在一些場景下會自動切換表空間狀態從online到offline。例如,當資料庫寫進程DBWn,嘗試幾次仍不能寫入表空間的數據文件中。用戶訪問offline表空間時會收到一個報錯。如果造成這種磁碟IO失敗的問題是介質錯誤,解決這問題之後需要恢復表空間。

5. 將表空間置為offline可能包含如下原因:

(1) 需要禁止訪問一部分資料庫的場景。

(2) 執行一次offline表空間備份(儘管表空間可以在online和使用情況下備份)。

(3) 當更新或維護應用時,需要讓應用和對應的表臨時不能訪問。

(4) 重命名或重分配表空間中的數據文件。

當表空間置為offline,資料庫會將關聯的所有數據文件都置為offline狀態。但是如下表空間不能置為offline:

> SYSTEM

> UNDO表空間

> 臨時表空間

6. 將表空間置為offline之前,若有用戶設置該表空間為其默認表空間,需要考慮是否需要改變其默認表空間。之所以這樣做,是因為這些用戶將不能訪問offline表空間中的對象。

7. 使用ALTER TABLESPACE … OFFLINE語句可以添加如下參數:

NORMAL:如果表空間的任何數據文件沒有出現錯誤,表空間能夠正常地置為offline。如果出現寫錯誤,那麼表空間中的數據文件不會被置為offline。當明確使用OFFLINE NORMAL,資料庫會對所有數據文件進行一次checkpoint檢查點事件,NORMAL是默認設置。

TEMPORARY:表空間能夠臨時置為offline狀態,即使一個或多個文件出現錯誤。當使用OFFLINE TEMPORARY,資料庫會將還沒有置為offline的數據文件進行置位操作,並執行檢查點事件。

如果沒有文件是offline,但使用了temporary語句,那麼當將表空間置為online時不需要介質恢復。然而,如果表空間的一個或多個文件由於寫入錯誤因此導致offline狀態,能夠臨時將表空間置為offline狀態,恢復online之前需要對表空間進行恢復操作。

IMMEDIATE:表空間能夠立即設置為offline狀態,資料庫不會進行任何數據文件的檢查點事件。當使用OFFLINE IMMEDIATE,那表空間置為online之前需要對表空間進行介質恢復操作。但是如果資料庫處於NOARCHIVELOG模式,表空間就不能立即置為offline狀態。

8. 如果必須設置表空間為offline狀態,建議首先使用默認的NORMAL語句。他會確保當表空間置為online前不需要執行恢復操作,儘管在不完全恢復之後,使用LATER DATABASE OPEN RESTLOGS語句重置了redo日誌sequence。

僅僅當不能使用NORMAL方式將表空間置為offline時,可以使用TEMPORARY。使用TEMPORARY後,在表空間置為online前,僅需要恢復那些出錯的offline文件。

如果NORMAL和TEMPORARY都失敗時,才可以選擇使用IMMEDIATE選項。

9. 如果表空間沒有「乾淨地」置為offline(也就是沒有使用NORMAL語句執行的offline操作),那麼置為online前需要首先對該表空間執行介質恢復操作。否則資料庫會報錯,表空間仍處於offline狀態。

實驗:

1. 設置表空間DCSOPEN_TBS為offline

SQL> alter tablespace dcsopen_tbs offline;
 

Tablespace altered.

2. 查詢數據文件狀態

select file#, name, status from v$datafile;

file #namestatus


 

11 /oracle/oradata_petest/petest/dcsopen_tbs02.dbf OFFLINE

DCSOPEN_TBS使用的數據文件狀態已經置為OFFLINE。

3. 嘗試查詢已OFFLINE表空間

SQL> select * from test;

select * from test

*

ERROR at line 1:

ORA-00376: file 7 cannot be read at this time

ORA-01110: data file 7: '/oracle/oradata_petest/petest/dcsopen_tbs01.dbf'
 

報錯,提示此時數據文件不能讀。

4. 將表空間置為online

SQL> alter tablespace dcsopen_tbs online;
 

11 /oracle/oradata_petest/petest/dcsopen_tbs02.dbf ONLINE

原文網址:https://read01.com/zedd2m.html

Read more

How to document Home Lab and Network

運維機房和跨域的網路,會遇到各式需求與問題,用對工具才能分析問題,個人覺得最重要的是使用能處理問題的工具。 推薦目前想學和正在使用的平台與軟體,協助將公司/家用機房文件化 佈告欄任務管理 Focalboard 白板可管理任務指派 網路架構文件編寫 netbox 精細管理網路設備與連接線路 IP 資源管理 phpipam 專注網路IP分配 邏輯塊文件編寫 draw.io 視覺化概念圖 機房設備管理 ITDB 管理設備生命週期與使用者

By Phillips Hsieh

如何在Raspberry Pi4上安裝Proxmox for ARM64

第一步 準備好Raspberry Pi 4 / CM4 4GB RAM,這裡要留意CM4如果是買有內建eMMC storage會限制不能使用SD卡開機而限制本地空間容量,如果沒有NAS外接空間或使用USB開機的話,建議買CM4 Lite插上大容量SD卡 第二步 去Armbian官網下載最小化Debian bookworm image https://www.armbian.com/rpi4b/ Armbian 25.2.2 Bookworm Minimal / IOT 然後寫入SD/USB開機碟,寫入方法參考官方文件 https://github.com/raspberrypi/usbboot/blob/master/Readme.md Note: 官方提供的預先設定系統方法,可以在Armbian初次啟動自動化完成系統設定。連結在此 https://docs.armbian.com/User-Guide_Autoconfig/

By Phillips Hsieh

世界越快心越慢

在晚飯後的休息時間,我特別享受在客廳瀏灠youtube上各樣各式創作者的影音作品。很大不同於傳統媒體,節目多是針對大多數族群喜好挑選的,在youtube上我會依心情看無腦的動畫、一些旅拍記錄、新聞時事談論。 尤其在看了大量的Youtube的分享後,我真的感受到會限制我的是我的無知,特別是那些我想都沒想過的實際應用,在學習後大大幫助到我的生活和工作層面。 休息在家時,我喜歡想一些沒做過的菜,動手去設計生活和工作上的解決方案,自己是真的很難閒著沒事做。 如創作文章,陪養新的習慣都能感覺到成長的喜悅,是不同於吃喝玩樂的快樂的。 創作不去限制固定的形式,文字是創作、影像聲音也是創作,記錄生活也是創作,我想留下的就是創造—》實現—》回憶,這樣子的循環過程,在留下的足跡面看到自己一路上的成長、失敗、絕望、重新再來。 雖然大部份的時候去做這些創作也不明白有什麼特別的意義,但不去做也不會留下什麼,所以呀不如反事都去試試看,也許能有不一樣的水花也許有意想不到的結果,投資自己永遠不會是失敗的決定,不是嗎?先問問自己再開始計畫下一步,未來沒人說得準。 像最近看youtube仍大一群人在為DOS開

By Phillips Hsieh

知識管理的三個步驟:一小時學會把知識運用到生活上

摘錄瓦基「閱讀前哨站」文章作為自己學習知識管理的內容 Part1「篩選資訊」 如何從海量資訊中篩選出啟發性、實用性和相關性的精華,讓你在學習過程中不再迷失方向。 1. 實用性 2. 啟發性 Part2「提高理解」 如何通過譬喻法和應用法,將抽象的知識與日常生活和工作緊密結合,建立更深刻的理解。 1. 應用法 2. 譬喻法 Part3「運用知識」 如何連結既有知識,跟自己感興趣的領域和專案產生關聯,讓你在運用知識的路途上游刃有餘。 1. 跟日常工作專案、人際活動產生連結 # 為什麼要寫日記? * 寫日記是為了忘記,忘卻瑣碎事情,保持專注力 * 寫日記就像在翻譯這個世界,訓練自己的解讀能力 * 不只是透過日記來記錄生活,而是透過日記來發展生活 #如何寫日記? * 不要寫流水帳式的日記,而是寫覆盤式的日記 當我們試著記錄活動和感受之間的關聯,有助於辦認出真正快樂的事 日記的記錄方式要以過程為主,而非結果 * 感恩日記的科學建議,每日感恩的案例

By Phillips Hsieh