Oracle数据库(数据泵)迁移方案(下)

时间:2021-06-03 00:57:04

第三部分  源端执行数据导出

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 等工作。

第1部分 

第2部分 

第3部分 

第4部分 

第5部分 

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

注:由于老生产库环境未作任何变更,因此在极端情况下,可以直接拉起数据库实例和监听,恢复业务。