Linux同平台数据库整体物理迁移
需求:A机器不再使用,要将A机器的Oracle迁移到B机器。
之前写过类似需求的文章: http://www.cnblogs.com/jyzhao/p/3968504.html
本文这次旨在更多用到自动化通用的整合脚本去实现同平台的数据库整体迁移。
[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
select status from v$instance union all select open_mode from v$database union all select * from v$version where rownum = 1;
show parameter pfile show parameter control_files
这里需要根据当前的spfile创建pfile文件,后面要用到。
create pfile from spfile;
set linesize 140 pagesize 100 select name from v$datafile union all select name from v$tempfile union all select member from v$logfile;
shutdown immediate;
echo $ORACLE_BASE /ora/app/oracle tar -zcvf /tmp/oracle.tar.gz /ora/app/oracle
将打包的Oracle软件目录以及所有的参数文件,控制文件,数据文件,临时文件,重做日志文件都拷贝到B机器。
[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
略。可参考: http://www.cnblogs.com/jyzhao/p/3891769.html
tar zxvf oracle.tar.gz
解压后的oracle目录直接mv到/u01/app下
根据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
SQL> alter database mount; Database altered.
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
SQL> alter database open;