第三部分 源端执行数据导出
3.1 源端生产库运行状态确认
为保证 数据严格一致性 , 关闭监听,重启数据库 。
Shell> su - oracle Shell> lsnrctl stop SQL> shutdown immediate SQL> startup
确认 没有 活动 客户端连接,确认监听已经停止 。
Shell> ps -ef | grep tns Shell> ps -ef | grep LOCAL=NO | grep -v grep | wc -l
3.2 目标端挂载 N FS 至生产端
目标端( Linux )开启 NFS 服务
Shell> su - root Shell> vi /etc/exports /backup {源端IP**.**}(rw,async,no_root_squash) Shell> /etc/rc.d/init.d/portmap start Shell> /etc/init.d/nfs start #启动NFS服务端进程 Shell> exportfs -a #输出配置信息命令 Shell> chkconfig nfs on #增加到自启动脚本中 Shell> chkconfig portmap on #增加到自启动脚本中
源端挂载 N FS 文件系统
su - root mkdir -p /backup mount {目标端IP**.**}:/backup /backup
注: Linux 不同操作系统版本, N FS 服务配置有差异,需要根据实际版本做调整。
3.3 源端查询数据库对象数量
比对 表格的创建,方便后期的数据比对 :
create table object_tmp_201702 as select * from dba_objects ;
标 红部分 ,需要 按照 迁移时 具体 业务 用户 做替换,如下:
SELECT D.OWNER,COUNT(1) FROM dba_objects d WHERE d.OWNER in ('SJZLCK', 'YDJW_ZP', 'HZ2004','TEST','DRB','RMAN','MOCHA','CZRKRZSJ','ZJCONN','CZRKTJXX','OGGADMIN','ZJGAZHCX') and d.OWNER not in ('PUBLIC') AND NOT EXISTS (SELECT 1 FROM DBA_RECYCLEBIN B WHERE B.object_name=D.OBJECT_NAME AND D.OWNER=B.owner) GROUP BY D.OWNER ORDER BY D.OWNER ;
3.4 逻辑导出生产端数据
通过挂载 的NFS 目录,将 源端 数据 导出到 对应的NFS 文件系统上 ,如下:
Shell> expdp \'/ as sysdba\' directory=dump_dir dumpfile=JKfull.dmp logfile=JKfull.log full=y
第四部分 目标端执行数据导入
4.1 目标端创建业务表空间
根据 2.1 节生成的创建 语句, 在目标库 创建对应的 业务 表空间 ,要注意表空间预分配大小,建议直接分配(非自动扩展)提高导入性能 。
SQL> @/home/oracle/tts_create_ts.sql
4.2 目标端数据逻辑导入
Shell> impdp \'/ as sysdba\' directory=dump_dir dumpfile=JKfull.dmp logfile=JKfull.log full=y
4.3 目标端启动监听服务
拷贝源端生产库的 tnsnames.ora 文件到新环境目标端,并且开启数据库监听文件,确保数据库实例信息已经注册到监听中。
4.4 编译无 效对象并确认
手动编译目标库 无 效对象:
@?/rdbms/admin/utlrp.sql
编译完成之后,再确认 不存在无 效对象:
select a.owner, a.object_name, a.OBJECT_TYPE from dba_objects a, object_201702 b where a.OBJECT_NAME = b.OBJECT_NAME and a.STATUS = 'INVALID' and b.STATUS = 'VALID';
第五部分 应用测试部分
首先, 由 业务开发人员 进行 应用全模块通测 , 业务全生命周期测试 没有问题后 ,将生产主机替换成临时 IP 地址 ,将目标端 ip 改成老生产端的 ip 接管业务。
第六部分 R AC 集群 I P 修改
与最终客户确认,是否需要将目标端的 I P 地址替换成老生产环境 I P 地址,如果需要,则手动进行修改源端和目标端 R AC SCAN 、 VIP 和 Pu blic IP 等工作。
6.1 修改 R AC 两节点 / etc/ hosts
1 节点:
Vi /etc/hosts 10.10.17.101 host-fefcfedb0f4f 10.10.17.13 host-fefcfedb0f4f-vip 10.253.253.101 host-fefcfedb0f4f-priv 10.10.17.102 host-fefcfebc5b0d 10.10.17.14 host-fefcfebc5b0d-vip 10.253.253.102 host-fefcfebc5b0d-priv 10.10.17.15 orcl-scan
2 节点:
Vi /etc/hosts 10.10.17.101 host-fefcfedb0f4f 10.10.17.13 host-fefcfedb0f4f-vip 10.253.253.101 host-fefcfedb0f4f-priv 10.10.17.102 host-fefcfebc5b0d 10.10.17.14 host-fefcfebc5b0d-vip 10.253.253.102 host-fefcfebc5b0d-priv 10.10.17.15 orcl-scan
6.2 先停SCAN 监听,再停 SCAN VIP
[grid@host-fefcfebc5b0d ~]$/u01/app/12.2/grid/bin/srvctl stop scan_listener [grid@host-fefcfebc5b0d ~]$/u01/app/12.2/grid/bin/srvctl stop scan [grid@host-fefcfebc5b0d ~]$/u01/app/12.2/grid/bin/srvctl status scan
6.3 先停本地监听,再停本地VIP
[grid@host-fefcfebc5b0d ~]$ srvctl stop listener [grid@host-fefcfebc5b0d ~]$ srvctl stop vip -n host-fefcfedb0f4f [grid@host-fefcfebc5b0d ~]$ srvctl stop vip -n host-fefcfebc5b0d
6.4 修改 R AC 两节点 PUBLIC IP
[root@host-fefcfedb0f4f ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0 IPADDR=10.10.17.101 GATEWAY=10.10.17.254 [root@host-fefcfedb0f4f ~]# ifdown eth0 [root@host-fefcfedb0f4f ~]# ifup eth0 [root@host-fefcfedb0f4f ~]# ip a [root@host-fefcfebc5b0d ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0 IPADDR=10.10.17.102 GATEWAY=10.10.17.254 [root@host-fefcfebc5b0d ~]# ifdown eth0 [root@host-fefcfebc5b0d ~]# ifup eth0 [root@host-fefcfebc5b0d ~]# ip a
6.5 修改 R AC 集群 PUBLIC 注册信息
[root@host-fefcfedb0f4f ~]# /u01/app/12.2/grid/bin/oifcfg delif -global eth0 [root@host-fefcfedb0f4f ~]# /u01/app/12.2/grid/bin/oifcfg setif -global eth0/10.10.17.0:public
6.6 修改 R AC 两节点 V IP
[root@host-fefcfedb0f4f ~]# /u01/app/12.2/grid/bin/srvctl modify nodeapps -n host-fefcfedb0f4f -A 10.10.17.13/255.255.255.0/eth0 [root@host-fefcfedb0f4f ~]# /u01/app/12.2/grid/bin/srvctl modify nodeapps -n host-fefcfebc5b0d -A 10.10.17.14/255.255.255.0/eth0 [root@host-fefcfedb0f4f ~]# /u01/app/12.2/grid/bin/srvctl config vip -n host-fefcfedb0f4f VIP exists: /host-fefcfedb0f4f-vip/10.10.17.13/192.168.0.0/255.255.255.0/eth0, hosting node host-fefcfedb0f4f [root@host-fefcfedb0f4f ~]# /u01/app/12.2/grid/bin/srvctl config vip -n host-fefcfebc5b0d VIP exists: /host-fefcfebc5b0d-vip/10.10.17.14/192.168.0.0/255.255.255.0/eth0, hosting node host-fefcfebc5b0d
6.7 修改 R AC 集群 SCAN VIP
[root@host-fefcfedb0f4f ~]# /u01/app/12.2/grid/bin/srvctl modify scan -n 10.10.17.15
6.8 先启本地VIP ,再启本地监听
[root@host-fefcfedb0f4f ~]# /u01/app/12.2/grid/bin/srvctl start vip -n host-fefcfedb0f4f [root@host-fefcfedb0f4f ~]# /u01/app/12.2/grid/bin/srvctl start vip -n host-fefcfebc5b0d [root@host-fefcfedb0f4f ~]# /u01/app/12.2/grid/bin/srvctl start listener
6.9 先启SCAN VIP ,再启 SCAN 监听
[root@host-fefcfedb0f4f ~]#/u01/app/12.2/grid/bin/srvctl start scan [root@host-fefcfedb0f4f ~]#/u01/app/12.2/grid/bin/srvctl start scan_listener
第七部分 迁移失败回退方案
7.1 关闭目标端数据库或主机
SQL> shutdown immediate 或者 Shell> shutdown -h now
7.2 启动老生产数据库和监听
Shell> lsnrctl start Shell> sqlplus / as sysdba SQL> startup
注:由于老生产库环境未作任何变更,因此在极端情况下,可以直接拉起数据库实例和监听,恢复业务。