oracle數據庫的物理遷移

1.      概述
oracle數據庫的維護過程中,經常涉及換主機什麼的,在這種情況下,最好,最簡單的辦法就是將數據庫相關的文件拷貝到另外一臺主機,然後啓起來。
數據庫文件遷移,必須要求遷移後的新主機oracle軟件版本和老的一樣。

2.      數據庫啓動步驟和相關模式
要做數據庫遷移,必須知道數據庫啓動的步驟和相關的模式。
數據庫啓動分爲三步:加載初始化文件<SID>ini.ora,加載控制文件,加載數據庫文件和打開數據庫。

第一步:加載初始化文件
oracle9i
以後,數據庫默會讀取spfile<SID>.ora,這兒文件是一個二進制文件。我們可以在輸入啓動命令的時候,指定初始化文件的路徑,如startup pfile="pfilesid.ora"或者startup spfile='spfilesid.ora'。但是二進制文件spfile只能通過alter system set paraname=paravalue來修改,而二進制文件,我們可以直接編輯。所以爲了遷移的方便性,我們一般把pfile作爲初始化文件遷移到新主機上。然後執行startup pfile='pfilesid.ora' nomount來啓動數據庫。初始化過程只需要pfile正確既可,如果提示了什麼錯誤,可以編輯pfile,然後重新startup就可以了。

第二步:加載控制文件
控制文件的位置,是在初始化文件中定義的,加載初始化文件之後,可以通過alter systen set 來修改,也可以打開pfile直接修改。控制文件一般有三個,具體路徑可以通過命令來查看show parameter control_files;如果路徑不對,就用alter system set來修改,控制文件路徑沒問題之後,就可以加載控制文件了。命令是alter database mount。這樣就加在控制文件了。
加載完控制文件之後,就可以通過一些命令來修改控制文件的參數,然數據庫能正確地載入對應的數據文件。

第三步:加載數據庫
加載控制文件之後,修改好數據文件路徑,之後就可以執行命令alter database open來開啓數據庫了。
這樣整個數據庫啓動過程完成了。

啓動數據庫三步對應的命令是:
初始化:startup pfile='pfilesid.ora' nomount
加載控制文件:alter database mount
加載數據庫文件(完全啓動數據庫):alter database open

後面用一個示例來講解一下。

3.      示例
環境描述,Oracle版本9i,主機環境red hat linux9,數據庫實例名linuxdb

第一步:初始化數據庫
先後從老主機上把初始化文件的pfile取到本地,獲取pfilelinuxdb.ora放到$ORACLE_HOME/dbs目錄。
打開pfilelinuxdb.ora文件,
修改*.background_dump_dest='/home/oracle/ora9/admin/linuxdb/bdump'指向的路徑,並創建對應路徑上的目錄。
也可以修改控制文件的路徑,但是我想用alter system命令來修改。
下面執行命令實例,加載初始化文件完成。

如果有錯誤,可以根據提示的錯誤信息,打開pfilelinuxdb.ora,修改對應的參數再重新加載。
加載成功以後,先創建一個spfile二進制文件,這樣今後alter system 修改的參數就可以直接寫到二進制文件中。
SQL> create spfile from pfile='/home/oracle/ora9/oracle/dbs/pfilelinuxdb.ora';

注意由於不是從spfile啓動的,所以還要重新送spfile啓動,執行上面這個文件才能成功。

這樣控制文件的路徑信息就寫到了spfile中了,由於只在spfile生效,所以還得重新啓動才行。
重新啓動之後,就可以正確加載控制文件了。

第二步:加載控制文件
由於需要加載控制文件,如上命令的幾個控制文件都必須從來主機上取到當前主機的對應目錄。
由於上面已經加載了初始化文件,重新加載需要先關閉數據庫。
順序執行的命令是shutdown,startup nomount,alter database mount。示例如下:

出錯了,根據上面的錯誤信息,可以看出,是缺少密碼文件。那麼我們就創建密碼認證文件吧,命令如下:
$cd $ORACLE_HOME/dbs
$orapwd password=chenli file=orapwlinuxdb
然後在執行alter database mount。這樣加載控制文件就成功了。
後面我們還需要修改數據文件路徑,然後加載數據文件。

第三步:加載數據文件
先看一下數據文件都是那些。

看到了,有11個數據文件。
然後,我們都把這些文件取過來到當前庫的目錄/home/oracle/ora9/oradata/linuxdb
下面修改這些數據文件路徑爲新主機上的路徑,命令如下。

現在可以加載數據文件了吧,先試一下。

又報錯了,根據錯誤信息我們可以知道,dump參數和重做日誌參數值不對,下面我們查看dump參數信息。
我們先後修改dump參數,修改前,我們先看一下dump參數,那些不正確。

看到了,有兩個不正確,修改吧。

現在dump參數修改成功了,接着處理重做日誌文件的問題。
重做日誌提示的問題是,重做日誌文件愛你路徑不對。
先後看一下重做日誌文件的路徑。

我們先把重做日誌文件取到指定的目錄/home/oracle/ora9/oradata/linuxdb,然後修改參數。

修改成功了,現在可以加載數據庫文件了。

現在數據庫啓動成功了,通過命令查看數據庫中的表數據正確,數據庫遷移成功。

4.      修改監聽文件
雖然數據庫遷移成功了,但是我們還需要啓動監聽才能讓其他主機的用戶連接到新的數據庫。
打開$ORACLE_HOME/network/admin/listener.ora文件,內容如下:

修改之後的文件內容如下:

保存好之後,執行lsnrctl start結果如下:

根據上面打印出來的信息,監聽啓動成功了。

現在測試一下監聽是否可以用。
在本地的tnsnames.ora中加入一個別名定義,內容如下:

然後在命令行中進行對tns進行測試,也測試監聽配置是正確。

根據上面的結果看得出,tns連接也會沒問題的。
那麼登錄看一看呢。

成功,所有的都已經ok

5.      總結
物理遷移數據庫還必須一步一步得進行,其實要完成真個動作,可以分爲4步驟。
1.
修改初始化文件,初始化數據庫,startup nomount。保證nomount成功。
2.
載入控制文件,alter database open,保證在初始化文件中,控制文件的路徑正確。
3.
加載數據文件,包括重做日誌文件,alter database open,需要保證所有的數據文件路由正確並且有效。
4.
修改監聽文件,開啓監聽。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章