1. 程式人生 > 其它 >直接拷貝資料檔案實現Oracle資料遷移

直接拷貝資料檔案實現Oracle資料遷移

轉貼來源:https://www.jb51.net/article/104377.htm

背景介紹

由於機房伺服器變更,需要將 Oracle 遷移到一臺新伺服器上去。

以下是環境說明:

  • 原伺服器地址: 192.168.1.15
  • 新伺服器地址: 192.168.1.18
  • 作業系統:都是 CentOS 6.5
  • 資料庫版本: 都是 11.2.0.1

新伺服器上安裝和配置 Oracle

  • 192.168.1.18

在新伺服器(192.168.1.18)上安裝了Oracle,為了保險,主機名、資料庫例項名、安裝目錄都和原資料庫保持一致。具體安裝方法可參考:centos 6.5下安裝oracle 11gR2與Oracle自動啟動的配置

查詢需要拷貝的檔案

  1. 192.168.1.15
  2. 需要切換到 oracle 使用者
  3. 使用 sqlplus 登入進 Oracle 資料庫
1 sqlplus / as sysdba
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 SQL> show parameter pfile NAME TYPE VALUE ------------------------------------ ----------- ------------------------------
spfile string /u01/app/oracle/product/11.2.0/dbhome_1/dbs/spfileorcl.ora SQL> show parameter control NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ control_file_record_keep_time integer 7 control_files string /u01/app/oracle/oradata/orcl/control01.ctl, /u01/app/oracle/recovery_area/orcl/control02.ctl
control_management_pack_access string DIAGNOSTIC+TUNING SQL> select * from v$logfile; GROUP# STATUS TYPE MEMBER IS_RECOVERY_DEST_FILE ---------- ------- ------- -------------------------------------------------------------------------------- --------------------- 3 ONLINE /u01/app/oracle/oradata/orcl/redo03.log NO 2 ONLINE /u01/app/oracle/oradata/orcl/redo02.log NO 1 ONLINE /u01/app/oracle/oradata/orcl/redo01.log NO SQL> select name from v$datafile; NAME -------------------------------------------------------------------------------- /u01/app/oracle/oradata/orcl/system01.dbf /u01/app/oracle/oradata/orcl/sysaux01.dbf /u01/app/oracle/oradata/orcl/undotbs01.dbf /u01/app/oracle/oradata/orcl/users01.dbf /u01/app/oracle/oradata/orcl/users02.dbf SQL> select name from v$tempfile; NAME -------------------------------------------------------------------------------- /u01/app/oracle/oradata/orcl/temp01.dbf

根據以上查詢結果,發現有以下檔案需要拷貝:

1 2 3 4 5 6 7 8 9 10 11 12 13 /u01/app/oracle/product/11.2.0/dbhome_1/dbs/spfileorcl.ora /u01/app/oracle/oradata/orcl/control01.ctl /u01/app/oracle/recovery_area/orcl/control02.ctl /u01/app/oracle/oradata/orcl/redo03.log /u01/app/oracle/oradata/orcl/redo02.log /u01/app/oracle/oradata/orcl/redo01.log /u01/app/oracle/oradata/orcl/system01.dbf /u01/app/oracle/oradata/orcl/sysaux01.dbf /u01/app/oracle/oradata/orcl/undotbs01.dbf /u01/app/oracle/oradata/orcl/users01.dbf /u01/app/oracle/oradata/orcl/users02.dbf /u01/app/oracle/oradata/orcl/users03.dbf /u01/app/oracle/oradata/orcl/temp01.dbf

停掉原資料庫與新資料庫

  • 192.168.1.15 和 192.168.1.18
  • 使用 root 使用者
1 service oracle stop

使用scp拷貝檔案到新伺服器

  • 192.168.1.15
  • scp 命令可以把檔案複製到遠端 Linux 伺服器,可以參考:scp 命令
1 2 3 4 5 6 7 8 9 10 11 12 13 scp /u01/app/oracle/product/11.2.0/dbhome_1/dbs/spfileorcl.ora [email protected]:/u01/app/oracle/product/11.2.0/dbhome_1/dbs/spfileorcl.ora scp /u01/app/oracle/oradata/orcl/control01.ctl [email protected]:/u01/app/oracle/oradata/orcl/control01.ctl scp /u01/app/oracle/recovery_area/orcl/control02.ctl [email protected]:/u01/app/oracle/recovery_area/orcl/control02.ctl scp /u01/app/oracle/oradata/orcl/redo03.log [email protected]:/u01/app/oracle/oradata/orcl/redo03.log scp /u01/app/oracle/oradata/orcl/redo02.log [email protected]:/u01/app/oracle/oradata/orcl/redo02.log scp /u01/app/oracle/oradata/orcl/redo01.log [email protected]:/u01/app/oracle/oradata/orcl/redo01.log scp /u01/app/oracle/oradata/orcl/system01.dbf [email protected]:/u01/app/oracle/oradata/orcl/system01.dbf scp /u01/app/oracle/oradata/orcl/sysaux01.dbf [email protected]:/u01/app/oracle/oradata/orcl/sysaux01.dbf scp /u01/app/oracle/oradata/orcl/undotbs01.dbf [email protected]:/u01/app/oracle/oradata/orcl/undotbs01.dbf scp /u01/app/oracle/oradata/orcl/users01.dbf [email protected]:/u01/app/oracle/oradata/orcl/users01.dbf scp /u01/app/oracle/oradata/orcl/users02.dbf [email protected]:/u01/app/oracle/oradata/orcl/users02.dbf scp /u01/app/oracle/oradata/orcl/users03.dbf [email protected]:/u01/app/oracle/oradata/orcl/users03.dbf scp /u01/app/oracle/oradata/orcl/temp01.dbf [email protected]:/u01/app/oracle/oradata/orcl/temp01.dbf

等待拷貝完成

嘗試啟動新資料庫

  1. 192.168.1.18
  2. 使用 oracle 使用者

dba 登入進行啟動資料庫

1 2 3 4 5 6 7 8 9 10 11 12 13 [oracle@oracle ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.1.0 Production on Thu Sep 17 09:26:11 2015 Copyright (c) 1982, 2009, Oracle. All rights reserved. Connected to an idle instance. SQL> startup ORACLE instance started. Total System Global Area 6747725824 bytes Fixed Size 2213976 bytes Variable Size 5100275624 bytes Database Buffers 1610612736 bytes Redo Buffers 34623488 bytes Database mounted. Database opened.

注意最後一句,到這裡就啟動成功了。這次很順利,沒有出現意外。也可以通過以下語句檢測資料庫的狀態:

1 2 3 4 SQL> select status from v$instance; STATUS ------------ OPEN

如果Database mounted成功後報錯,也就是資料庫最終不是 open 狀態,只是 mounted 狀態, 可以嘗試恢復資料庫。

1 recover database;

完成後,再開啟資料庫,一般可以成功。

1 alter database open;

驗證兩個庫的資料

根據自己的實際情況進行驗證, 這裡不再贅述.

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。