| 手工轉移資料庫Step By Step Author:Seraphim
Mail:kamus@itpub.net
Date:2004-1 有時候我們會遇到這樣的情況,現有的資料庫要從一個機器轉移到另外一個機器上,一般我們會使用匯出,匯入。但是如果資料庫的資料非常多,資料檔案 尺寸很大,那麼在匯出匯入的過程就很可能會出現問題,並且漫長的過程也是我們無法容忍的。在這種情況下,我們可以簡單地使用作業系統的copy命令,直接 進行資料庫的轉移。
以下樣本均在Redhat Fedora Core 1上的Oracle9.2.0.1中操作,其它作業系統和Oracle版本同樣適用。
假設我們的資料庫在伺服器A上,$ORACLE_BASE是/oracle,$ORACLE_HOME是/oracle/product /9.2.0。現在我們要將此資料庫轉移到伺服器B上,並且新的$ORACLE_BASE是/u01/oracle,$ORACLE_HOME是/u01 /oracle/product/9.2.0。SID是oralinux。
操作步驟如下: 一.在伺服器B上安裝Oracle,安裝過程中不要建立資料庫。使用者的profile直接從伺服器A上copy過來即可,注意需要修改原先的$ORACLE_HOME到現在的位置。
二.如果伺服器A上的Oracle使用的是spfile,那麼根據此spfile建立pfile:
create pfile from spfile;
三.關閉伺服器A上的資料庫,shutdown immediate。如果資料庫不允許關閉,那麼可以使用聯機備份,這種情況資料庫必須處於archivelog模式,轉移的原理和允許關閉的情況一樣,此處不作討論。
四.備份伺服器A上的所有資料檔案,包括以下:
a)所有的datafile(臨時檔案可以不copy,比如temp01.dbf)
b)所有的online redo log
c)所有的archive redo log
d)所有的control file
e)$ORACLE_HOME/dbs/init<SID>;.ora(此檔案是在上面第二步中建立的)
f)$ORACLE_HOME/dbs/orapw<SID>;(這是password file)
g)$ORACLE_HOME/network/listener.ora(這步可以省略,以後重建也可以)
h)$ORACLE_BASE/admin/<SID>;/下的所有目錄,一般是udump, cdump, bdump(這步可以省略,以後手工建立目錄也可以)
五. 通過FTP或者別的工具將上述的備份檔案,全部上傳到伺服器B的相應目錄中。比如說原來在伺服器A上$ORACLE_BASE/oradata /<SID>;/system01.dbf,現在就上傳到伺服器B上$ORACLE_BASE/oradata/<SID>; /system01.dbf,保證目錄的邏輯結構一樣,實際上物理結構已經發生了變化(A上$ORACLE_BASE是/oracle,而B上是/u01 /oracle)。其它的檔案均作相同處理,如果伺服器B上還沒有相應的目錄,那麼就手工建立。
六.編輯上傳到伺服器B上的init<SID>;.ora檔案,將其中涉及的目錄結構全部改為B中目前的目錄結構,比如本例中就是將/oracle改為/u01/oracle。
七.在伺服器B上,sqlplus “/ as sysdba”,提示進入空閑進程。
八.根據修改過的pfile建立spfile,create spfile from pfile;
九.啟動資料庫到mount狀態,startup mount;
十.修改control file中所有資料檔案的位置,可以通過spool產生所有的SQL:
SQL>; alter database rename file '/oracle/oradata/oralinux/system01.dbf'
2 to '/u01/oracle/oradata/oralinux/system01.dbf';
按照以上文法修改所有的資料檔案位置。
十一.此時資料庫已經可以使用了,alter database open;
十二.將臨時檔案添加到TEMP資料表空間中:
alter tablespace TEMP add tempfile ‘'/u01/oracle/oradata/oralinux/temp01.dbf’ size 20M;
十三. 還有一些後續工作,包括更新資料庫B上的監聽設定檔(其實可以不用管,因為9i的執行個體已經可以自動註冊到監聽程式上了,如果是先起監聽再起資料庫,那麼 立刻就會註冊,如果是先起資料庫再起監聽,那麼會稍微有些延時才註冊),修改/etc/oratab檔案,以能夠使用dbstart和dbshut指令碼。 這樣資料庫就算完全轉移了,如果有什麼問題,可以給我發郵件。 eagle_fan 回複於:2004-01-05 13:06:10有個疑問:
如果不shutdown資料庫,online redo log可以備份嗎? seraphim 回複於:2004-01-05 17:45:46沒問題,只要全部online都在,但是因為是online備份,所以如果業務繁忙,缺少一些資料是無法避免的。
如果是線上備份需要先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, Oracle Corporation. All rights reserved. Connected to an idle instance. SQL>; startup
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: '/oracle/oradata/orcl/system01.dbf' SQL>; recover database
Media recovery complete. SQL>; shutdown
ORA-01109: database not open Database dismounted.
ORACLE instance shut down.
SQL>; startup
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>; OCPHUI 回複於:2004-01-05 19:40:45用rman duplicate database 更方便哦。 而且不用shutdown。 melonm 回複於:2004-01-06 10:54:19對於OracleDatabase Backup而言,**不要備份Online Redo Log**。 SQL>; recover database
Media recovery complete. 這是從archive logs裡恢複。 當Cold/Offline 備份,備份兩類Oracle檔案:
* Database files
* Control files 當Hot/Online備份,備份三類Oracle檔案:
* Database files
* Control Files
* Archive logs seraphim 回複於:2004-01-06 12:29:53引用:原帖由 "melonm" 發表:
對於OracleDatabase Backup而言,**不要備份Online Redo Log**。 SQL>; recover database
Media recovery complete. 這是從archive logs裡恢複。 當Cold/Offline 備份,備份兩類Oracle檔案:
* Databas.......... 對於備份來說確實不應該備份Online Redo,原因在於避免誤將備份的Online Redo在恢複的時候覆蓋了當前的online Redo,這是意義所在。
本例中主旨在於移動資料庫,和備份沒有關係,所以copy了online redo。
另外recover database不僅僅是從archive中恢複,如果需要恢複的SCN在online redo中,自然也同樣會用到online redo,否則不是archivelog模式的怎麼recover? paulyang88 回複於:2004-01-26 17:34:09我們能夠恢複各種原因造成的SQL SERVER資料庫損壞,詳細請看http://www.haou.net/sqlother/ ms sql server database recover I can recover all type of ms sql server database losing.please contact me at cn9526@163.net or contact me with msn: paulyang8848@hotmail.com I can chat with u.thanks! |