Linux同平台數據庫整體物理遷移
需求:A機器不再使用,要將A機器的Oracle遷移到B機器。
之前寫過類似需求的文章: http://www.linuxidc.com/Linux/2015-05/117556.htm
本文這次旨在更多用到自動化通用的整合腳本去實現同平台的數據庫整體遷移。
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.安裝依賴包和調整系統參數
略。可參考:http://www.linuxidc.com/Linux/2015-05/117559.htm
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;