分步啟動數據庫以重命名數據文件
導讀:數據庫在沒有啟動時,相信很多人都會為數據庫更改名字,然而,由于數據文件平時在數據庫運行的時候處于使用狀態,故當數據庫處于打開狀態時,管理員是無法重命名數據文件名字的。那么一定要更改這個數據文件的名字時,他該如何處理這個“頑疾”呢?
一、 數據庫啟動分三步走。
啟動一個Oracle數據庫時,都需要經過三個步驟。每完成一個步驟,數據庫就進入一個特定的模式,以便保證數據庫處于某種一致性的操作狀態。管理員可以通過在啟動命令中加入參數的方式,來控制數據庫的啟動步驟。有時候出于管理方面的需要,數據庫的啟動過程經常需要分布來完成。如數據庫管理員進行日常的維護工作,很多都只需要啟動第一步或者第二步即可。
第一步:啟動例程。
每一個啟動的數據庫至少要對應一個例程。例程是Oracle用來管理數據庫的一個實體。它是由一組邏輯內存結構和一系列后臺服務進程所組成。當啟動數據庫時,這些內存結構以及服務進程得到分配、初始化和啟動,以便用戶能夠與數據庫進行通信。
但是,此時啟動的數據庫例程還沒有跟任何數據庫進行關聯。換句話說,即使數據庫不存在也可以啟動例程。啟動例程主要是跟初始化參數有關,主要是用來初始化數據庫的運行環境。如果數據庫的初始化參數文件損壞的話,那么就無法正常啟動數據庫例程了。也就是說,數據庫例程主要牽涉到的是內存中的東西,如分配邏輯內存結構,在內存中駐扎一些必要的程序等等。如果數據庫只完成了第一步即指啟動例程的話,那么數據庫管理員可以維護的工作是非常少的。如數據庫管理員此時需要更改數據文件的名字,也是不行的。因為此時數據庫歷程還沒有裝載數據庫,沒有對應到具體的數據文件,故此時管理員還無法訪問數據文件,對其進行維護。
若數據庫管理員出于管理方面的需要,只要求啟動第一個步驟的話,那么可以通過參數來進行控制。只要在啟動數據庫時,輸入startup nomount命令即可。此時數據庫只啟動例程,而不裝載數據庫。Oracle數據庫系統只會讀取參數文件中的內容,只是為歷程創建各種邏輯內存結構和后臺服務進程。此時數據庫管理員還不能夠使用數據庫中的任何文件。
第二步:裝載數據庫。
在啟動例程時所用到的參數文件中,記載了數據庫控制文件的存儲位置與相關信息。當數據庫在啟動過程中企圖裝載數據庫時,數據庫系統會根據初始化參數文件中記載的控制文件信息去找到這個控制文件,并打開它。在這個控制文件中則記錄著數據庫的名稱、數據文件的位置名稱等關于數據庫物理結構方面的信息。這里要注意,此時數據庫系統會去讀取這些信息,但是不并會去代開這些數據文件。只是為下一步打開數據庫做好準備。
在裝載數據庫時,系統不會去讀取數據文件和重做日志文件的內容。也就是說,此時數據庫仍然是出于關閉狀態的。用戶無法與數據庫建立連接,無法訪問數據庫并對數據庫進行更改。顯然,如果只是裝載數據庫而沒有打開數據庫的話,對于普通用戶來說是沒有多大作用的。但是對于數據庫管理員來說此時他發展的舞臺就很大了。因為只裝載數據庫而沒有打開它,數據庫管理員已經可以通過命令來維護數據庫。例如,裝載數據庫但是還沒有打開數據文件的狀態下修改數據文件的名字。
如果管理員需要裝載數據庫而不打開數據庫,則可以利用startup mount命令。這個命令主要來告訴數據庫系統,啟動歷程并裝載數據庫,但是不打開數據庫。此時數據庫系統會打開控制文件并讀取數據庫名稱、數據文件的位置和名稱以及其他的一些相關信息。在這個模式下,數據庫管理員已經可以對數據庫進行一些維護。而且值得注意的是,有些工作只有在這種狀態下才能夠進行。通常情況下,若只是裝載數據庫而沒有啟動數據庫的情況下,可以進行如下的日常維護工作。一是上面提到的對數據庫的數據文件進行重命名;二是維護重做日志,如添加、刪除日志文件或者更改重做日志文件的名字;三是執行數據庫的完全恢復操作;四是改變數據庫的歸檔模式等等。
第三步:打開數據庫。
通常情況下,只裝載數據庫但是還沒有打開數據庫的情況下,應用程序時無法連接到數據庫系統的。只有利用Open選項將數據庫設置為打開狀態后,應用程序才能夠正常訪問后臺數據庫系統。用戶才能夠查詢、更改數據庫中的記錄。在打開數據庫的過程中,例程將會根據控制文件中的信息找到對應的重做日志文件、數據文件等等。也就是說,第一步啟動的例程會打開所有聯機狀態的數據文件和重做日志文件。這里要注意,只要控制文件中列出的任何一個重做日志文件或者數據文件損壞無法正常打開的話,則數據庫也將無法正常 打開。此時數據庫管理員需要進行數據庫恢復才能夠讓數據庫重新運轉。
從這里也可以看出,如果數據庫系統可以正常裝載數據庫并不一定表示數據文件與重做日志文件是正常的。因為在裝載數據庫的過程中,只讀取了這些文件到存儲位置與名字等等,并不會去判斷這些文件是否可以使用。只有在試圖打開數據庫的時候,系統才會去判斷這些文件的可用性。此時數據文件、日志文件等等以處于打開狀態,故管理員是無法在此時對這些文件進行維護操作的,如位置移動、刪除、重新能命名等等。
若要打開數據庫,則可以采用Startup Open命令。這個命令告訴數據庫系統啟動例程、裝載數據庫并且把數據庫設置為打開狀態。將數據庫設置為打開狀態后,任何具有Create Session權限的用戶都能夠連接到數據庫并對數據庫進行日常的訪問。
這里要注意一點,以上這個三個步驟并不是每次啟動數據庫都要如此一步步的走。如可以直接使用Startup命令,讓Oracle系統直接把數據庫啟動到打開狀態。管理員也可以利用Startup Mount命令直接啟動到裝載數據庫的狀態。具體要如何啟動,主要是要看管理員維護數據庫的目的。如需要把重做日志移動到另外一個地方時,那么在啟動數據庫的時候就只能夠啟動到第二步,而不能夠直接啟動到第三步。
另外,數據庫啟動狀態的不同,其對應的動態性能視圖中的內容也有所差異。如數據庫處于裝載數據庫的狀態下,管理員可以訪問那些與SGA區相關的數據字典視圖,而且還可以訪問那些與控制文件相關的數據字典視圖。但是此時動態性能視圖中是找不到數據文件或者重做日志文件相關的信息。
二、 分步啟動數據庫以重命名數據文件。
那么如果現在數據庫處于打開狀態,數據庫管理員該如何來重命名數據文件呢?其實步驟比較簡單。只需要簡單三個步驟就可以完成。
一是利用Startup Nomount命令把數據庫啟動到數據庫裝載狀態。由于現在數據庫處于打開狀態,數據文件正在使用中,為此管理員不能夠更改數據文件的名字。所以此時數據庫管理員需要先把數據庫關閉然后啟動到數據庫裝載狀態。此時數據文件沒有被使用,故可以對其進行重命名。除了重命名之外,還可以移動數據文件的位置。
二是修改數據文件的名字。注意數據文件名字更改之后,同時要更改控制文件中的內容。否則的話,在打開數據庫的時候,就會因為找不到控制文件中所列出的數據文件而導致啟動的錯誤。同理,如果要移動數據文件的位置也是做類似的操作。
三是重新打開數據庫。然后數據庫管理員重新使用Startup Open命令來打開數據庫。此時就完成了數據文件的重命名工作了.
通過上文的步驟進行數據庫的重命名就能很輕松的完成,相信現在數據庫的重命名已經難不倒大家。
【編輯推薦】