系統環境以下:
1. 硬件環境
服務器:Dell PowerEdge 1300 (CPU:PⅢ 550MHz 內存:512MB 硬盤:36GB)
2. 軟件環境
操做系統:linux9.0
數據庫: Oracle 8.1.6 for Unix 企業版,SID:ora816
Oracle安裝路徑:/home/oracle
備份文件:全部數據庫文件、控制文件、初始化文件、數據庫備份以來的全部歸檔日誌文件。
2、恢復步驟
下面根據從用戶處帶回來的備份數據,在一臺新的服務器重建Oracle數據庫。其詳細步驟以下:
1. 建立數據庫恢復使用的環境
在新的Dell服務器上,安裝與原來的數據庫服務器相同的操做系統linux9.0;而後安裝與原數據庫相同版本的Oracle 8.1.6 for Unix 企業版。
2. 刪除新服務器上的Oracle實例
啓動新數據庫服務器上的Oracle,在sqlplus中,查找到數據庫文件的路徑,並保存在當前路徑下的文件file_name.txt中:
$ sqlplus system/manager
SQL> spool file_name.txt
SQL> select file_name from sys.dba_data_files;
SQL> spool end
SQL>exit
關閉新服務器的Oracle,而後根據文件file_name.txt中的路徑,刪除新裝的Oracle實例的全部數據庫文件。
注:從本步開始全部操做都是用Oracle用戶登陸操做系統(Unix)後進行。文中全部的黑色粗體5號字符(標題除外)的語句能夠直接執行,黑色傾斜粗體5號字符的語句須要修改後執行。
3. 恢復數據庫文件
把備份的全部數據庫文件用Ftp上傳新的數據庫服務器中的相同路徑下。若是原來的路徑已不存在,能夠拷貝到其餘路徑下,恢復時詳細處理方法見步驟7中<2>。
4. 恢復初始化參數文件
把備份的initSID.ora文件用Ftp上傳到新數據庫服務器中Oracle實例的initSID.ora文件位置,覆蓋之。其位置通常在$ORACLE_HOME/dbs目錄下。
5. 恢復控制文件
把備份的ControlFile.bak文件用Ftp上傳到新數據庫服務器中Oracle實例的各個鏡像路徑下,並按初始化參數文件initSID.ora中的該項的位置和名稱命名。
control_files = ("/home/oracle/app/oracle/oradata/ora816/control01.ctl", "/home/oracle/app/oracle/oradata/ora816/control02.ctl","/home/oracle/app/oracle/oradata/ora816/control03.ctl")
其路徑若有變更,在初始化參數文件initSID.ora中修改如上內容的路徑和名稱,使其實際路徑與該參數的路徑一致。
6. 恢復歸檔日誌文件
把數據庫備份後的歸檔日誌用Ftp上傳到新數據庫服務器的相同路徑下。路徑若有變更能夠根據初始化參數文件initSID.ora中以下位置進行修改,使其實際路徑與該參數的路徑一致。
log_archive_dest_1 = "location=/home/oracle/app/oracle/admin/ora816/arch"
7. 恢復數據庫
通過以上6個步驟,把全部的備份文件已經上傳到了新數據庫服務器中。下面開始根據這些文件恢復並啓動數據庫,先在操做系統的提示符下作以下操做:
$svrmgrl
SVRMGR>connect internal
SVRMGR>startup mount
<1> 建立口令文件
若是原來的數據庫配置了口令文件,而且在mount數據庫時報以下錯誤:
ORA-01990: error opening password file '/home/oracle/app/oracle/product/8.1.6/dbs/orapw'
能夠到/home/oracle/app/oracle/product/8.1.6/dbs/路徑下,用如下命令建立口令文件:
orapwd
其用法以下:
Usage: orapwd file=<fname> password=<password> entries=<users>
where
file - name of password file (mand),(口令文件的命名方式爲:orapwSID)
password - password for SYS and INTERNAL (mand),
entries - maximum number of distinct DBA and OPERs (opt),
There are no spaces around the equal-to (=) character.
例如: orapwd file=orapwora816 password=manager
而後從新執行以下語句mount數據庫:
SVRMGR>startup mount。
<2> 修改數據庫文件的路徑
若是在上述的步驟3中修改了恢復的數據庫文件的路徑,能夠用以下語句對數據庫文件從新命名 :
alter database rename file 'old_file' to 'new_file';
如把原來路徑/home/oracle/app/oracle/oradata/ora816下的文件system01.dbf改到了/u21/oracle/app/oracle/oradata/ora816下:
SVRMGR>alter database rename file
'/home/oracle/app/oracle/oradata/ora816/system01.dbf'
to '/u21/oracle/app/oracle/oradata/ora816/system01.dbf';
按照上面的方法把全部修改路徑的數據庫文件從新命名。
<3> 根據控制文件和歸檔日誌文件恢復數據庫
下面開始用控制文件和歸檔日誌文件恢復數據庫:
SVRMGR>recover database using backup controlfile until cancel;
出現以下提示:
ORA-00279: change 50971 generated at 08/23/2002 09:21:27 needed for thread 1
ORA-00289:suggestion: /home/oracle/app/oracle/admin/ora8/arch/arch_1_399.arc
ORA-00280: change 50971 for thread 1 is in sequence #399
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}輸入:
auto
若是有以下提示,則表示成功。
ORA-00279: change 51007 generated at 08/23/2002 11:23:13 needed for thread 1
ORA-00289:suggestion: /home/oracle/app/oracle/admin/ora8/arch/arch_1_400.arc
ORA-00280: change 51007 for thread 1 is in sequence #400
ORA-00278: log file '/home/oracle/app/oracle/admin/ora8/arch/arch_1_399.arc' no
Log applied.
意外處理:若是其它提示多是須要的日誌文件不存在,檢查ORA-00289中該文件是否存在。
直到出現以下提示:
ORA-00279: change 51011 generated at 08/23/2002 11:23:45 needed for thread 1
ORA-00289:suggestion: /home/oracle/app/oracle/admin/ora8/arch/arch_1_401.arc
ORA-00280: change 51011 for thread 1 is in sequence #401
ORA-00278: log file '/home/oracle/app/oracle/admin/ora8/arch/arch_1_400.arc' noy
ORA-00308: cannot open archived log '/home/oracle/app/oracle/admin/ora8/arch
/arch_1_401.arc'
ORA-27037: unable to obtain file status
Intel SVR4 UNIX Error: 2: No such file or directory
Additional information: 3
<4> 重置日誌
SVRMGR>alter database open resetlogs;
意外處理:若是提示建立日誌的路徑不存在,按提示路徑建立目錄。而後再重置日誌。
<5> 重啓數據庫,完成恢復
SVRMGR>shutdown immediate
SVRMGR>startup
ORACLE instance started.
Total System Global Area 123437040 bytes
Fixed Size 69616 bytes
Variable Size 106418176 bytes
Database Buffers 16777216 bytes
Redo Buffers 172032 bytes
Database mounted.
Database opened.
數據庫正常打開,數據庫重建恢復成功。
文章雖老,可是仍是頗有意義的,呵呵。