控制文件管理

来源:http://www.cnblogs.com/jy627625/archive/2016/06/13/5580348.html
-Advertisement-
Play Games

控制文件是Oracle資料庫中一種非常重要的文件。 在Oracle資料庫中主要包括:數據文件、控制文件和重做日誌文件。在數據文件中存儲資料庫中的數據,包括各種資料庫對象及其數據。在重做日誌文件中存放用戶執行DML及DDL命令的記錄。 在控制文件中存放資料庫的結構信息。具體來說,在控制文件中包含以下重 ...


控制文件是Oracle資料庫中一種非常重要的文件。

在Oracle資料庫中主要包括:數據文件、控制文件和重做日誌文件。
在數據文件中存儲資料庫中的數據,包括各種資料庫對象及其數據。
在重做日誌文件中存放用戶執行DML及DDL命令的記錄。

在控制文件中存放資料庫的結構信息。
具體來說,在控制文件中包含以下重要信息:
·資料庫的名稱。
·數據文件和重做日誌文件的位置和名稱。
.當前日誌序列號。
·檢查點信息。
·表空間的名稱。
•RMAN 的備份與恢覆信息。
控制文件是一個二進位文件,用戶不能修改與查看這個文件的內容。

資料庫伺服器在啟動時需要讀取這個文件的內容,以便打開資料庫。
為了使大家理解控制文件的重要性,首先介紹資料庫伺服器的啟動過程。
這個過程分為以下三個階段。
第一個階段,啟動到NOMOUNT狀態,資料庫伺服器根據參數文件的內容在記憶體中建立SGA ,並啟動DBWR 、LGWR等後臺進程。
在這一階段,實例將被啟動。
第二階段,啟動到MOUNT狀態。

資料庫伺服器根據參數文件中記錄的控制文件信息,打開控制文件。
第三階段,啟動到OPEN狀態,資料庫伺服器根據控制文件中記錄的信息,打開數據文件和重做日誌文件,這時資料庫伺服器可正常運行並處理用戶的請求。
由此可見,控制文件是實例和資料庫之間的樞紐,如果控制文件丟失或損壞,資料庫伺服器將無法正常啟動。
正因為控制文件具有特殊的重要性,在創建資料庫之後,或者在對資料庫的結構進行修改之後,都應該及時備份控制文件。

控制文件的規劃

因為控制文件具有特殊的重要性,所以對控制文件的數目和存放位置必須進行詳細的規劃。
控制文件的數目和位置在創建資料庫時就已經確定,在資料庫伺服器運行的過程中也可以根據需要進行修改。

控制文件的鏡像

在一個資料庫中至少需要一個控制文件。

如果控制文件丟失或損壞,將導致資料庫伺服器無法啟動。
為了防止這種情況,在資料庫中需要創建多個控制文件,這些控制文件互為鏡像,內容完全相同。

控制文件的鏡像是通過初始化參數control_files實現的。

例如,通過這個參數指定三個控制文件:

control_files=('D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL01.CTL',

       'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL02.CTL',

         'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL03.CTL'

        );

當資料庫伺服器啟動時,只需要讀取第一個控制文件的內容,而當資料庫的結構發生變化時,被修改的信息必須同時寫入所有的控制文件。
如果其中二個控制文件不可用,那麼資料庫伺服器將無法正常運行。
在這種情況下,資料庫管理員需要修改初始化參數control_files 的值,刪除其中不可用的控制文件,然後重新啟動資料庫伺服器。
假設控制文件control01.ctl損壞或丟失,初始化參數control_files可修改為:

alter system set control_files='D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL02.CTL', 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL03.CTL' scope=spfile;

控制文件的存放位置

為了保證控制文件的安全,在創建控制文件時一個基本的要求是對它進行鏡像。

但如果把所有控制文件存放在同一個磁碟上,危險仍然潛在。
如果磁碟損壞,那麼所有的控制文件都將丟失。
因此,控制文件應該分別存放在不同的磁碟上(註意,不是同一塊硬碟的不同磁碟分區)。
控制文件在多個磁碟上的鏡像情況如圖所示。

例如可將前面使用的二個控制文件分別存放在二個磁碟上,然後修改初始化參數CONTROL_FILES 。

ALTER SYSTEM SET control_files='D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL02.CTL',

                  'E:\CONTROL03.CTL' SCOPE=spfile;

註:因為只有一個磁碟,就是用不同分區代替不同磁碟,實際上應該放在不同磁碟上。

如果要改變控制文件的名稱或位置,首先應該關閉資料庫伺服器,然後在操作系統中將控制文件複製到指定的位置,如果必要,可同時修改文件名
然後修改初始化參數control_fies的值,使其指向修改後的控制文件,最後重新啟動資料庫伺服器。

現在的資料庫一般都存儲在磁碟陣列上,這種存儲設備本來就通過冗餘機制保證文件的安全,這時候把所有的控制文件存放在同一個存儲位置下即可。
需要註意的是,在這種情況下,多個控制文件仍然是有必要的。

如何重新創建控制文件

控制文件是在創建資料庫時自動創建的,在資料庫伺服器運行的過程中,除了鏡像控制文
件外,重新創建控制文件的機會不是很多。但是一旦有這樣的要求,就意味著對資料庫要進行
一次重要的操作。一般說來,重新創建控制文件的時機有以下幾種情況:
·控制文件全部損壞,並且沒有可用的備份。
·修改資料庫的名稱。
·修改某些永久性參數。
當然,重新創建控制文件並不是一件輕鬆的事情。如果沒有周密的計劃,可能會造成更大
的損失。在創建控制文件之前,必須掌握所有數據文件和重做日誌文件的名稱、位置和大小等
信息,在必要時還需要掌握資料庫所使用的字元集。為了防止對數據文件和重做日誌文件造成
不必要的損壞,儘可能對這些文件進行→次備份。

 


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

-Advertisement-
Play Games
更多相關文章
  • 一種用於手勢輸入的透明覆蓋層,可以覆蓋在其他空間的上方,也可包含在其他控制項 android.gesture.GestureOverlayView 獲得手勢文件 需要用GesturesBuilder,如果沒有就安裝這個app 安裝 其實這是一個Sample的,用eclipse和android stud ...
  • 1、佈局文件 2、代碼部分 3、效果展示 ...
  • 1、Activity的 runOnUiThread android Activity runOnUiThread() 方法使用 2、Handler sendEmptyMessage() 3、Handler post() 4、view Post() 總結: 1、其實上面的四種方式都可歸結於一種方式:h ...
  • 1、子線程和子線程之間的通信 註意: 1、調用Looper類的 prepare() 方法可以為當前線程創建一個消息迴圈,調用loop() 方法使之處理信息,直到迴圈結束。 2、Handler有幾個構造重載,如果構造時不提供Looper類對象參數,會獲取當前線程的Looper對象,即將當前線程的消息循 ...
  • 1,當心ISNULL函數對你的邏輯引起BUG 有人喜歡或者習慣於(並不代表我推薦,甚至這種寫法沒有任何好處)用ISNULL處理變數這種方式寫查詢 比如:select * from TestISNULL where name = ISNULL(@name,name) @name相當於傳入到存儲過程中的 ...
  • 在SQL SERVER中列許可權(Column Permissions)其實真沒有什麼好說的,但是好多人對這個都不甚瞭解,已經被人問了幾次了,所以還是在這裡介紹一下,很多人都會問,我能否單獨對錶的某列授權給某個用戶? 答案是可以,我們可以對錶中的列授予SELECT、UPDATE許可權,我們結合下麵的簡單... ...
  • 通常在我寫EXISTS語句時,我會寫成IF EXISTS(SELECT TOP(1) 1 FROM XXX),也沒細細考究過為什麼要這麼寫,只是隱約認為這樣寫沒有啥問題,那今天就深究下吧! 首先準備測試測試數據 其中需要註意下索引IDX_ID, 雖然ID已經是主鍵索引,但仍創建一個非聚集索引以供後續 ...
  • 由於從各光伏電站採集的數據量較大,必須解決海量數據的查詢、分析的問題。目前主要考慮兩種方式:1. Hadoop大數據技術;2. Oracle(數據倉庫)+BI; 本文僅介紹hadoop的技術要應用特征。 Hadoop 基本介紹 hadoop是一個平臺,是一個適合大數據的分散式存儲和計算的平臺。什麼是 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...