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