天天看點

Oracle9i資料庫移動過程

資料庫移動,在項目實施過程中,經常會發生,對于有經驗的DBA來說,資料庫移動是十分容易。但對于一些隻了解系統,對資料庫不是十分懂的人員來說,oracle的移動就不是那麼容量了。

  例如當系統安裝完成以後,存儲空間擴容了,需要對原對ORACLE進行移動,需要進行資料移動。以前在ORACLE8I FOR WINDOWS 2000中是可以進行移動的。現在ORACLE9I FOR AIX 5L 的移動如何做呢???其實經對各種不同的平台,操作過程完全一樣。

  一、複制移動資料檔案

  1)、擷取資料庫相關資訊

  首先要檢視一下資料庫的檔案内容:

  sqlplus “ / as sysdba”

  ? select * from v$datafile;

  ? select * from v$controlfile

  ? select * from v$logfile;

  2)、移動應用資料檔案

  shutdown immediate關閉資料庫,拷貝資料檔案到另外一個目錄下。需要copy 的檔案有:

  system01.dbf

  indx01.dbf

  temp01.dbf

  users01.dbf

  應用資料檔案

  3)、 修改資料庫檔案的位置

  啟動MOUNT模式

  ? startup mount;

  ? alter database rename file ‘oracleoradataocpsystem01.dbf' to ‘oradataocpsystem01.dbf”

  ? alter database rename file ‘oracleoradataocpindx01.dbf' to ‘oradataocpindx01.dbf';

  注意隻能進行更改移動的資料庫檔案,不包括控制檔案與日志檔案,TEMP檔案。

  二. 移動控制檔案

  (1)備份SPFILE中的内容:

  再重新啟動資料庫:

  ? startup;

  ? create pfile='c:init.ora' from spfile;

  (2)修改init.ora檔案中的内容:

  *.control_files='oradataocpcontrol01.ctl','oradataocpcontrol02.ctl','oradataocpcontrol03.ctl'

  進行更改已經複制的目錄位置。

  Shutdown 資料庫

  (3)将控制檔案複制過去,

  将三個控制檔案移動到上面所修改的的目錄下。

  (4) 倒入參數檔案

  以init.ora參數方式啟動:

  ? startup pfile='oracleinit.ora';

  ? create spfile from pfile='oracleinit.ora';

  ? shutdown immediate;

  ? startup; 從spfile中進行啟動。

  這樣控制檔案移動工作就結束了。

  三、 重建或重定位LOG檔案

  解決日志檔案的移動方式有兩種,一種是移動(RENAME方式)另一種是重新建立。

  (1)移動LOG檔案

  重新移動資料庫檔案與移動系統資料庫檔案是一樣的方法,隻是要求資料庫必須是“startup mount”方式進行。

  ? startup mount

  ? alter database rename file ‘oracleoradataoralog1.ora' to ‘oradataocporalog1.dbf'

  樣

  (2)重建LOG檔案

  先重建一個組GROUP ,并添加一個LOG檔案作為交換檔案。

  ALTER DATABASE ADD LOGFILE GROUP 4 ('$HOME/ORADATA/u01/log4.rdo','$HOME/ORADATA/u02/log4.rdo') SIZE 1M;

  然後再删除其它的LOG組,要求必須保持有兩個LOG檔案組在系統中。

  Alter database drop logfile member ‘oracleoradataocporalog01.ora'

  四、重建系統監時(temp)檔案系統

  在移動資料表空間時,TEMP檔案是不能被移動的,這裡要求可以進行重建一個TEMP表空間,并設定為系統預設的TEMP檔案系統。然後再冊除原來的TEMP表空間,達到移動表空間的過程。

  > create temporary tablespace “temp02” tempfile ‘oradataocptemp02.dbf' size 500m extent management local uniform size 10m;

  然後再删除原來的TEMP檔案就可以了。

  五、測試資料庫

  進行重新開機動ORACLE資料

  $ sqlplus “/as sysdba”

  ? show sga;

  ?