工作目标:主备switchover切换,并将新主库IP更换成旧主库IP,旧主库不再使用.
环境介绍:
主库(rhel 6.5 + 实例名(orcl) + IP 192.168.133.120 + 主机名hisdb)
备库(AnolisOS 7.9 + 实例名(orcldg) + IP 192.168.133.125 + 主机名 hisdbdg)
1、Switchover切换
1.1、主切备
SQL> show parameter db_uni
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_unique_name string orcl
SQL> select name,log_mode,open_mode,database_role,switchover_status,db_unique_name from v$database
NAME LOG_MODE OPEN_MODE DATABASE_ROLE SWITCHOVER_STATUS DB_UNIQUE_NAME
--------- ------------ -------------------- ---------------- -------------------- ------------------------------
ORCL ARCHIVELOG READ WRITE PRIMARY SESSIONS ACTIVE orcl
SQL> alter database commit to switchover to physical standby with session shutdown;
Database altered.
SQL> shutdown immediate
ORA-01012: not logged on
SQL> shutdown abort
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.
Total System Global Area 2.5388E+10 bytes
Fixed Size 2265056 bytes
Variable Size 3892314144 bytes
Database Buffers 2.1475E+10 bytes
Redo Buffers 18096128 bytes
Database mounted.
SQL> select name, LOG_MODE, OPEN_MODE, database_role, SWITCHOVER_STATUS, db_unique_name from v$database;
NAME LOG_MODE OPEN_MODE DATABASE_ROLE SWITCHOVER_STATUS DB_UNIQUE_NAME
--------- ------------ -------------------- ---------------- -------------------- ------------------------------
ORCL ARCHIVELOG MOUNTED PHYSICAL STANDBY RECOVERY NEEDED orcl
1.2、备切主
SQL> select name, LOG_MODE, OPEN_MODE, database_role, SWITCHOVER_STATUS, db_unique_name from v$database
NAME LOG_MODE OPEN_MODE DATABASE_ROLE SWITCHOVER_STATUS DB_UNIQUE_NAME
--------- ------------ -------------------- ---------------- -------------------- ------------------------------
ORCL ARCHIVELOG READ ONLY WITH APPLY PHYSICAL STANDBY TO PRIMARY orcldg
SQL> alter database commit to switchover to primary with session shutdown;
Database altered.
SQL> alter database open;
Database altered.
SQL> select name, LOG_MODE, OPEN_MODE, database_role, SWITCHOVER_STATUS, db_unique_name from v$database;
NAME LOG_MODE OPEN_MODE DATABASE_ROLE SWITCHOVER_STATUS DB_UNIQUE_NAME
--------- ------------ -------------------- ---------------- -------------------- ------------------------------
ORCL ARCHIVELOG READ WRITE PRIMARY RESOLVABLE GAP orcldg
2、IP修改
切换后关闭新备库(orcl)服务器,接下来将新主库服务器IP由192.168.133.125更换为192.168.133.120。
2.1、关实例及监听
SQL> shutdown immediate
[oracle@ hisdbdg ~]$ lsnrctl stop
2.2、修改hosts
[root@ hisdbdg ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
#192.168.133.125 hisdbdg
192.168.133.120 hisdbdg
说明:将原IP 192.168.133.125注释掉,并将192.168.133.120对应的主机名由hisdb修改为hisdbdg.
[root@ hisdbdg ~]# cat /etc/sysconfig/network
# Created by anaconda
2.3、修改ens32
[root@ hisdbdg ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens32
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens32
UUID=6afa8502-f6d9-4541-b973-95f201e87075
DEVICE=ens32
ONBOOT=yes
IPADDR=192.168.133.120
PREFIX=24
GATEWAY=192.168.10.254
说明:将IPADDR=192.168.133.125修改为IPADDR=192.168.133.120
2.4、重启network
[root@hisdbdg network-scripts]# service network restart
Restarting network (via systemctl):
若不行,使用下面指令.
[root@ hisdbdg ~]# systemctl restart network
注意:重启network后SecureCRT需要使用IP 192.168.133.120重新连接新主库.
2.5、修改监听
[oracle@hisdbdg admin]$ cat listener.ora
# listener.ora Network Configuration File: /home/oracle/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(ORACLE_HOME = /home/oracle/app/oracle/product/11.2.0/db_1)
(SID_NAME = orcl)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.133.120)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
ADR_BASE_LISTENER = /home/oracle/app/oracle
说明:将HOST = 192.168.133.125修改为HOST = 192.168.133.120, GLOBAL_DBNAME = orcldg修改为GLOBAL_DBNAME = orcl,SID_NAME = orcldg修改为SID_NAME = orcl,如此修改保证客户端此前连接串不用做修改便可连接数据库. SID_NAME的修改做过测试,将db_unique_name修改为orcl就可以.
2.6、修改TNS
[oracle@hisdbdg admin]$ cat tnsnames.ora
# tnsnames.ora Network Configuration File: /home/oracle/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
#ORCL =
# (DESCRIPTION =
# (ADDRESS = (PROTOCOL = TCP)(HOST = hisdb)(PORT = 1521))
# (CONNECT_DATA =
# (SERVER = DEDICATED)
# (SERVICE_NAME = orcl)
# )
# )
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.133.120)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
说明:将HOST = 192.168.133.125修改为HOST = 192.168.133.120,将SERVICE_NAME =orcldg修改为SERVICE_NAME =orcl,连接服务名由ORCLDG修改为ORCL.如此修改保证此前连接串不用做修改便可连接数据库.
2.7、修改db_unique_name
a、spfile生成pfile,然后将*.db_unique_name='orcldg'修改为*.db_unique_name='orcl'
b、用修改后的pfile生成spfile,关库促使下次启动数据库自动使用spfile.(说明:生成spfile前,对spfile做个备份)
2.8、重启服务
[oracle@hisdbdg admin]$ lsnrctl start
[oracle@hisdbdg admin]$ sqlplus / as sysdba
SQL> startup
2.9、验证监听
[oracle@hisdbdg ~]$ lsnrctl status
LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 24-AUG-2022 09:26:42
Copyright (c) 1991, 2013, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.133.120)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.4.0 - Production
Start Date 23-AUG-2022 20:28:52
Uptime 0 days 12 hr. 57 min. 49 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /home/oracle/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
Listener Log File /home/oracle/app/oracle/diag/tnslsnr/hisdbdg/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.133.120)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
Services Summary...
Service "orcl" has 2 instance(s).
Instance "orcl", status UNKNOWN, has 1 handler(s) for this service...
Instance "orcldg", status READY, has 1 handler(s) for this service...
Service "orclXDB" has 1 instance(s).
Instance "orcldg", status READY, has 1 handler(s) for this service...
The command completed successfully
说明:pl sql测试正常连接.
3、报错处理
主备切换后,执行以下语句消除主库报警.
SQL> alter system set log_archive_config='' scope=both;
SQL> alter system set log_archive_dest_2='' scope=both;
SQL> alter system set fal_server='' scope=both;
SQL> alter system set fal_client='' scope=both;
SQL> alter system set log_archive_dest_1=’location=/home/oracle/app/oracle/archivelog’ scope=both;