直接拷貝資料檔案實現Oracle資料遷移
阿新 • • 發佈:2021-06-22
轉貼來源: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自動啟動的配置
查詢需要拷貝的檔案
- 192.168.1.15
- 需要切換到 oracle 使用者
- 使用 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
|
等待拷貝完成
嘗試啟動新資料庫
- 192.168.1.18
- 使用 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;
|
驗證兩個庫的資料
根據自己的實際情況進行驗證, 這裡不再贅述.
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。