Linux同平台Oracle資料庫整體物理遷移
Linux同平台資料庫整體物理遷移
需求:A機器不再使用,要將A機器的Oracle遷移到B機器。
之前寫過類似需求的文章:
本文這次旨在更多用到自動化通用的整合指令碼去實現同平台的資料庫整體遷移。
1.A機器操作
2.B機器操作
A機器操作
0.系統版本:
[root@DB-A tmp]# uname -a
Linux DB-A 2.6.32-358.el6.x86_64 #1 SMP Tue Jan 29 11:47:41 EST 2013 x86_64 x86_64 x86_64 GNU/Linux
[root@DB-A tmp]# cat /etc/issue
Red Hat Enterprise Linux Server release 6.4 (Santiago)
Kernel \r on an \m
1.A資料庫當前資訊
select status from v$instance union all
select open_mode from v$database union all
select * from v$version where rownum = 1;
2.確認參數檔案、控制檔案的位置
show parameter pfile
show parameter control_files
這裡需要根據當前的spfile建立pfile檔案,後面要用到。
create pfile from spfile;
3.資料檔案、臨時檔案、重做記錄檔的位置
set linesize 140 pagesize 100
select name from v$datafile union all
select name from v$tempfile union all
select member from v$logfile;
4.乾淨關閉資料庫:
shutdown immediate;
5.確定ORACLE軟體目錄並打包傳到B機器
echo $ORACLE_BASE
/ora/app/oracle
tar -zcvf /tmp/oracle.tar.gz /ora/app/oracle
將打包的Oracle軟體目錄以及所有的參數檔案,控制檔案,資料檔案,臨時檔案,重做記錄檔都拷貝到B機器。
B機器操作
0.系統版本:
[root@DB-B irnop]# uname -a
Linux DB-B 2.6.32-431.el6.x86_64 #1 SMP Sun Nov 10 22:19:54 EST 2013 x86_64 x86_64 x86_64 GNU/Linux
[root@DB-B irnop]# cat /etc/issue
Red Hat Enterprise Linux Server release 6.5 (Santiago)
Kernel \r on an \m
1.安裝依賴包和調整系統參數
略。可參考:
2.解壓ORACLE_HOME到B機器上規劃的軟體安裝目錄:/u01/app/oracle
tar zxvf oracle.tar.gz
解壓後的oracle目錄直接mv到/u01/app下
3.修改參數檔案pfile並啟動資料庫到nomount
根據B機器實際情況修改資料庫佔用記憶體的值,並確認參數檔案中寫的路徑都是存在的。
startup nomount pfile='$ORACLE_HOME/dbs/initirnop.ora'
SQL> startup nomount pfile='$ORACLE_HOME/dbs/initirnop.ora'
ORACLE instance started.
Total System Global Area 2.3717E+10 bytes
Fixed Size 2239176 bytes
Variable Size1.3153E+10 bytes
Database Buffers 1.0536E+10 bytes
Redo Buffers 25612288 bytes
4.啟動到mount
SQL> alter database mount;
Database altered.
5.資料檔案,臨時檔案,記錄檔的rename重新導向
set linesize 140 pagesize 100
select 'alter database rename file '''||name||''' to ''/xxx'||name||''';' from v$datafile union all
select 'alter database rename file '''||name||''' to ''/xxx'||name||''';' from v$tempfile union all
select 'alter database rename file '''||member||''' to ''/xxx'||member||''';' from v$logfile;
根據實際情況將old_name替換成new_name
old_name: /xxx/oradata
new_name: /new/oradata
然後執行重新導向SQL,檢查當前路徑是否修改正確:
select name from v$datafile union all
select name from v$tempfile union all
select member from v$logfile;
修改系統的目錄許可權:
chown -R oracle:oinstall /new/oradata
6.開啟資料庫:
SQL> alter database open;