把 Oracle 数据库从 Windows 系统迁移到 Linux Oracle Rac 集群环境(4)—— 修改 oracle11g rac 集群的 scanIP

本文档详细介绍了如何在将Oracle数据库从Windows环境迁移到Linux Oracle RAC集群后,如何修改并配置RAC集群的SCAN IP,以保持与原系统相同的访问方式。涉及步骤包括查看和停止scan_listener、修改hosts和DNS配置、更新SCAN名称,以及解决可能出现的ORA-12514错误。整个过程旨在确保客户端能无缝访问新的数据库集群。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

把 Oracle 数据库从 Windows 系统迁移到 Linux Oracle Rac 集群环境(4)—— 修改 oracle11g rac 集群的 scanIP

在生产环境中迁移数据时,需要先创建目标数据库集群,数据迁移成功后还需要使用原来的 IP 地址访问 oracle 数据库,这样原来的客户端不需要做任何改变。此时,需要改变目标数据库集群的 scanIP 为源数据库的 IP 地址。

当客户端应用程序使用 scanIP 访问数据库时,scan listener 会将连接转发到 local listener 上。 节点 rac1 的本地监听内容如下:

LISTENER_RAC1=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=rac1-vip)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.101)(PORT=1521)
(IP=FIRST))))		# line added by Agent

一、查看scan ip的状态信息

[grid@rac1 ~]$ srvctl config scan
SCAN name: rac-scan, Network: 1/192.168.1.0/255.255.255.0/ens34
SCAN VIP name: scan1, IP: /rac-scan/192.168.1.201

二、停止 scan_listener 和 scan

# 停止 scan_listener 和 scan 
srvctl stop scan_listener
srvctl stop scan
# ---------------------------------------------------------------------
[grid@rac1 ~]$ srvctl stop scan_listener
[grid@rac1 ~]$ srvctl stop scan

# 查看 scan_listener 和 scan 的状态
[grid@rac1 ~]$ srvctl status scan_listener
SCAN Listener LISTENER_SCAN1 is enabled
SCAN listener LISTENER_SCAN1 is not running

[grid@rac1 ~]$ srvctl status scan
SCAN VIP scan1 is enabled
SCAN VIP scan1 is not running

[grid@rac1 ~]$ crs_stat -t | grep  scan
ora.scan1.vip  ora....ip.type OFFLINE   OFFLINE               

[grid@rac1 ~]$ crs_stat -t | grep  lsnr
ora....ER.lsnr ora....er.type ONLINE    ONLINE    rac1        
ora....N1.lsnr ora....er.type OFFLINE   OFFLINE               
ora....C1.lsnr application    ONLINE    ONLINE    rac1        
ora....C2.lsnr application    ONLINE    ONLINE    rac2     

三、修改 /etc/hosts 文件中的 scanIP(所有节点)

# 切换到 root 用户,节点1 和 节点2 同时修改 scan IP
[root@rac1 ~]# vi /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

#Public Network (bond1)——公用IP

192.168.1.101 rac1
192.168.1.102 rac2

#Private Interconnect (bond2)——私有IP

10.1.1.101 rac1-priv
10.1.1.102 rac2-priv

#Virtual IP——虚拟 IP,与 bond1 必须在同一网段
192.168.1.111 rac1-vip
192.168.1.112 rac2-vip

#scan IP
192.168.1.221 my-racscan  # 原来是:192.168.1.201

四、修改 DNS 服务的配置信息

[root@rac1 ~]# vi /var/named/chroot/var/named/1.168.192.local 

$TTL 86400
@       IN SOA  dns.oracle.com.     root.oracle.com. (
                                        19997022700 ; serial
                                        28800       ; refresh
                                        14400       ; retry
                                        3600000     ; expire
                                        86400 )     ; minimum
@          IN        NS      dns.oracle.com.
101        IN        PTR     dns.oracle.com.
101        IN        PTR     rac1.oracle.com.
102        IN        PTR     rac2.oracle.com.
221        IN        PTR     scan.oracle.com.   # 原来是:201

[root@rac1 ~]# vi /var/named/chroot/var/named/oracle.com.zone 

$TTL 86400
@       IN SOA  dns.oracle.com.     root.oracle.com. (
                                        42      ; serial
                                        3H      ; refresh
                                        15M     ; retry
                                        1W      ; expire
                                        1D )    ; minimum
@          IN        NS      dns.oracle.com.
dns        IN        A       192.168.1.101
rac1       IN        A       192.168.1.101
rac2       IN        A       192.168.1.102
scan       IN        A       192.168.1.221   # 原来是:192.168.1.201

# 重启 named 服务
[root@rac1 ~]# systemctl restart named

# 测试
[root@rac1 ~]# nslookup 192.168.1.221
Server:		192.168.1.101
Address:	192.168.1.101#53

221.1.168.192.in-addr.arpa	name = scan.oracle.com.

[root@rac1 ~]# nslookup scan.oracle.com
Server:		192.168.1.101
Address:	192.168.1.101#53

Name:	scan.oracle.com
Address: 192.168.1.221

五、修改 SCAN 名称

# 切换到 root 用户
[root@rac1 ~]# cd /u01/app/11.2.0/grid/bin
[root@rac1 bin]# pwd
/u01/app/11.2.0/grid/bin

[root@rac1 bin]# ./srvctl modify scan -n my-racscan

# 查看scan ip 的状态信息
[root@rac1 bin]# ./srvctl config scan
SCAN 名称: my-racscan, 网络: 1/192.168.1.0/255.255.255.0/ens34
SCAN VIP 名称: scan1, IP: /my-racscan/192.168.1.221

六、启动 scan 和 scan_listener

# 启动 scan 和 scan_listener
[grid@rac1 admin]$ srvctl start scan
[grid@rac1 admin]$ srvctl start scan_listener

# 查看 scan 和 scan_listener 的状态:
[grid@rac1 admin]$ srvctl status scan_listener
SCAN Listener LISTENER_SCAN1 is enabled
SCAN listener LISTENER_SCAN1 is running on node rac1
[grid@rac1 admin]$ srvctl status scan
SCAN VIP scan1 is enabled
SCAN VIP scan1 is running on node rac1

[grid@rac1 admin]$ crs_stat -t | grep  scan
ora.scan1.vip  ora....ip.type ONLINE    ONLINE    rac1        
[grid@rac1 admin]$ crs_stat -t | grep  lsnr
ora....ER.lsnr ora....er.type ONLINE    ONLINE    rac1        
ora....N1.lsnr ora....er.type ONLINE    ONLINE    rac1        
ora....C1.lsnr application    ONLINE    ONLINE    rac1        
ora....C2.lsnr application    ONLINE    ONLINE    rac2        

七、测试:使用新的 scanIP 访问数据库

1、测试新的 scanIP 是否能够使用
[grid@rac2 ~]$ ping 192.168.1.221
PING 192.168.1.221 (192.168.1.221) 56(84) bytes of data.
64 bytes from 192.168.1.221: icmp_seq=1 ttl=64 time=2.84 ms
64 bytes from 192.168.1.221: icmp_seq=2 ttl=64 time=0.267 ms
64 bytes from 192.168.1.221: icmp_seq=3 ttl=64 time=14.3 ms
^C
--- 192.168.1.221 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 0.267/5.827/14.374/6.134 ms
2、使用新的 scanIP 访问数据库
[oracle@rac1 ~]$ sqlplus sys/oracle@192.168.1.221/hisdb as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Sun Jun 19 10:24:11 2022

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

ERROR:
ORA-12514: TNS:listener does not currently know of service requested in connect
descriptor

-- 出现错误,错误码:ORA-12514

八、解决 ORA-12514 错误

1、在节点 rac1 执行如下操作
-- 查看参数:remote_listener
SQL> show parameter remote_listener

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
remote_listener 		     string

-- 修改参数 remote_listener 的值为空
SQL> alter system set remote_listener='';
System altered.

-- 注册
SQL> alter system register;
System altered.

-- 修改参数 remote_listener 的值
SQL> alter system set remote_listener='my-racscan:1521';
System altered.

-- 查看参数:remote_listener
SQL> show parameter remote_listener

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
remote_listener 		     string	 my-racscan:1521
2、测试:使用新的 scanIP 访问数据库
[oracle@rac2 ~]$ sqlplus sys/oracle@192.168.1.221/hisdb as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Wed Jun 22 13:57:47 2022

Copyright (c) 1982, 2013, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options

SQL> 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

睿思达DBA_WGX

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值