天天看點

主備switchover切換,并将新主庫IP更換成舊主庫IP

工作目标:主備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;