在服務器B上安裝Linux Oracle
c經(jīng)過長時間的發(fā)展,這里我發(fā)表一下個人理解,下面就這就來講術Linux Oracle。有時候我們會遇到這樣的情況,現(xiàn)有的數(shù)據(jù)庫要從一個機器轉(zhuǎn)移到另外一個機器上,一般我們會使用導出,導入。但是如果數(shù)據(jù)庫的數(shù)據(jù)非常多,數(shù)據(jù)文件尺寸很大,那么在導出導入的過程就很可能會出現(xiàn)問題,并且漫長的過程也是我們無法容忍的。
在這種情況下,我們可以簡單地使用操作系統(tǒng)的copy命令,直接進行數(shù)據(jù)庫的轉(zhuǎn)移。 以下示例均在Redhat Fedora Core 1上的Linux Oracle9.2.0.1中操作,其它操作系統(tǒng)和Linux Oracle版本同樣適用。
假設我們的數(shù)據(jù)庫在服務器A上,$Linux Oracle_BASE是/Linux Oracle,$Linux Oracle_HOME是/Linux Oracle/product/9.2.0?,F(xiàn)在我們要將此數(shù)據(jù)庫轉(zhuǎn)移到服務器B上,并且新的$Linux Oracle_BASE是/u01/Linux Oracle,$Linux Oracle_HOME是/u01/Linux Oracle/product/9.2.0。SID是oralinux。
操作步驟如下:
一. 在服務器B上安裝Linux Oracle,
安裝過程中不要創(chuàng)建數(shù)據(jù)庫。用戶的profile直接從服務器A上copy過來即可,注意需要修改原先的$Linux Oracle_HOME到現(xiàn)在的位置。
二. 如果服務器A上的Linux Oracle使用的是spfile,
那么根據(jù)此spfile創(chuàng)建pfile: create pfile from spfile;
三. 關閉服務器A上的數(shù)據(jù)庫,
shutdown immediate。如果數(shù)據(jù)庫不允許關閉,那么可以使用聯(lián)機備份,這種情況數(shù)據(jù)庫必須處于archivelog模式,轉(zhuǎn)移的原理和允許關閉的情況一樣,此處不作討論。
四. 備份服務器A上的所有數(shù)據(jù)文件,包括以下:
a) 所有的datafile(臨時文件可以不copy,比如temp01.dbf)
b) 所有的online redo log
c) 所有的archive redo log
d) 所有的control file
e) $Linux Oracle_HOME/dbs/init<SID>;.ora(此文件是在上面第二步中創(chuàng)建的)
f) $Linux Oracle_HOME/dbs/orapw<SID>;(這是password file)
g) $Linux Oracle_HOME/network/listener.ora(這步可以省略,以后重新生成也可以)
h) $Linux Oracle_BASE/admin/<SID>;/下的所有目錄,一般是udump, cdump, bdump(這步可以省略,以后手工創(chuàng)建目錄也可以)
五. 通過FTP或者別的工具將上述的備份文件,全部上傳到服務器B的相應目錄中。比如說原來在服務器A上$Linux Oracle_BASE/oradata/<SID>;/system01.dbf,現(xiàn)在就上傳到服務器B上$Linux Oracle_BASE/oradata/<SID>;/system01.dbf。
保證目錄的邏輯結(jié)構(gòu)一樣,實際上物理結(jié)構(gòu)已經(jīng)發(fā)生了變化(A上$Linux Oracle_BASE是/Linux Oracle,而B上是/u01/Linux Oracle)。其它的文件均作相同處理,如果服務器B上還沒有相應的目錄,那么就手工創(chuàng)建。
六. 編輯上傳到服務器B上的init<SID>;
.ora文件,將其中涉及的目錄結(jié)構(gòu)全部改為B中目前的目錄結(jié)構(gòu),比如本例中就是將/Linux Oracle改為/u01/Linux Oracle。
七. 在服務器B上,sqlplus “/ as sysdba”,提示進入空閑進程。
八. 根據(jù)修改過的pfile創(chuàng)建spfile,create spfile from pfile;
九. 啟動數(shù)據(jù)庫到mount狀態(tài),startup mount;
十. 修改control file中所有數(shù)據(jù)文件的位置,
可以通過spool生成所有的SQL: SQL>; alter database rename file '/Linux Oracle/oradata/oralinux/system01.dbf'
2 to '/u01/Linux Oracle/oradata/oralinux/system01.dbf'; 按照以上語法修改所有的數(shù)據(jù)文件位置。
十一. 此時數(shù)據(jù)庫已經(jīng)可以使用了,
alter database open;
十二. 將臨時文件添加到TEMP表空間中:
alter tablespace TEMP add tempfile ‘'/u01/Linux Oracle/oradata/oralinux/temp01.dbf’ size 20M;
十三. 還有一些后續(xù)工作,
包括更新數(shù)據(jù)庫B上的監(jiān)聽配置文件(其實可以不用管,因為9i的實例已經(jīng)可以自動注冊到監(jiān)聽程序上了,如果是先起監(jiān)聽再起數(shù)據(jù)庫,那么立刻就會注冊,如果是先起數(shù)據(jù)庫再起監(jiān)聽,那么會稍微有些延時才注冊),修改/etc/oratab文件,以能夠使用dbstart和dbshut腳本。
這樣數(shù)據(jù)庫就算完全轉(zhuǎn)移了,如果有什么問題,可以給我發(fā)郵件。沒問題,只要全部online都在,但是因為是online備份,所以如果業(yè)務繁忙,缺少一些數(shù)據(jù)是無法避免的。 如果是在線備份需要先recover database。 如下:
- [zhangleyi@as orcl]$ sqlplus "/ as sysdba"
- SQL*Plus: Release 9.2.0.4.0 - Production on Mon Jan 5 17:33:38 2004
- Copyright (c) 1982, 2002, Linux Oracle Corporation. All rights reserved.
- Connected to an idle instance.
- SQL>; startup
- Linux Oracle instance started.
- Total System Global Area 118035836 bytes
- Fixed Size 451964 bytes
- Variable Size 96468992 bytes
- Database Buffers 20971520 bytes
- Redo Buffers 143360 bytes
- Database mounted.
- ORA-01113: file 1 needs media recovery
- ORA-01110: data file 1: '/Linux Oracle/oradata/orcl/system01.dbf'
- SQL>; recover database
- Media recovery complete.
- SQL>; shutdown
- ORA-01109: database not open
- Database dismounted.
- Linux Oracle instance shut down.
- SQL>; startup
- Linux Oracle instance started.
- Total System Global Area 118035836 bytes
- Fixed Size 451964 bytes
- Variable Size 96468992 bytes
- Database Buffers 20971520 bytes
- Redo Buffers 143360 bytes
- Database mounted.
- Database opened.
- SQL>;
【編輯推薦】