تغییر Hostname در Oracle Linux 8.10 با Oracle Restart و ASM (AFD)

در این مقاله، فرآیند تغییر hostname در سروری با Oracle Linux 8.10 و Oracle Database نسخه 19.25 که از Oracle Restart و دیسک‌های AFD استفاده می‌کند، مرحله به مرحله شرح داده شده است. این سناریو در محیط مجازی تست و اجرا شده و تمام جزئیات و دستورات واقعی ارائه شده‌اند. دلیل نیاز من به این موضوع این بود که احتیاج به چند سرور دیتابیس داشتم که برای صرفه جویی در زمان، از یکی از آنها که بصورت کامل نصب شده بود clone گرفتم و چندین سرور با hostname های مستقل ساختم.

مرحله اول: ذخیره اطلاعات پیش از تغییر

قبل از هرگونه تغییر، اطلاعات مربوط به دیتابیس و ASM را ذخیره می‌کنیم. در داکیومنت اوراکل که کمی بعد به آن اشاره میکنم، در اواسط داکیومنت دستوراتی وجود دارد که نیازمند این است که از پیش اطلاعات آنها را ذخیره کرده باشیم.

[oracle@oracle8101924 ~]$ . oraenv
ORACLE_SID = [oracle] ? orcl
The Oracle base has been set to /u01/app/oracle

[oracle@oracle8101924 ~]$ srvctl config database -d orcl
Database unique name: orcl
Database name: orcl
Oracle home: /u01/app/oracle/product/19c/dbhome
Oracle user: oracle
Spfile: +DATA/ORCL/PARAMETERFILE/spfile.270.1184680669
Password file:
Domain: vahiddb.com
Start options: open
Stop options: immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Disk Groups: DATA
Services:
OSDBA group:
OSOPER group:
Database instance: orcl

 

و برای asm نیز اینکار را انجام می دهیم:

[oracle@oracle8101924 ~]$ . oraenv
ORACLE_SID = [orcl] ? +ASM
[oracle@oracle8101924 ~]$ sqlplus / as sysasm

create pfile from spfile;

بررسی محتویات:

cd /u01/app/19c/grid/dbs/

[oracle@oracle8101924 dbs]$ cat init+ASM.ora
*.asm_diskstring='/dev/nv*','AFD:*'
*.asm_power_limit=1
*.large_pool_size=12M
*.remote_login_passwordfile='EXCLUSIVE'

مرحله دوم: حذف Oracle Restart قدیمی

طبق مستند Oracle Doc ID 1552810:

با کاربر root و با تنظیم ORACLE_HOME بر روی Grid:

[root@oracle8101924 ~]# . oraenv
ORACLE_SID = [orcl] ? +ASM

$ORACLE_HOME/crs/install/roothas.pl -deconfig -force

با اجرای این دستور احتمالا به خطای زیر برخورد میکنید:

./roothas.pl: line 8: =head1: command not found
...

به این معنی‌ست که perl نصب نیست. راه‌حل:

export PATH=$ORACLE_HOME/perl/bin:$PATH
perl $ORACLE_HOME/crs/install/roothas.pl -deconfig -force

من از خود perl موجود در oracle_home استفاده کردم

مرحله سوم: تغییر Hostname

hostnamectl set-hostname nearguard.vahiddb.com

در یک سشن جدید بررسی می کنیم و کار را ادامه می دهیم:

[root@nearguard ~]# . oraenv
ORACLE_SID = [root] ? +ASM

مرحله چهارم: اجرای مجدد Oracle Restart

[root@nearguard ~]# cd $ORACLE_HOMEcrs/install/

[root@nearguard install]# ./roothas.sh

خروجی دستور:

Using configuration parameter file: /u01/app/19c/grid/crs/install/crsconfig_params
The log of current session can be found at:
  /u01/app/oracle/crsdata/nearguard/crsconfig/roothas_2025-06-30_03-24-31AM.log
Redirecting to /bin/systemctl restart rsyslog.service
LOCAL ADD MODE
Creating OCR keys for user 'oracle', privgrp 'oinstall'..
Operation successful.
LOCAL ONLY MODE
Successfully accumulated necessary OCR keys.
Creating OCR keys for user 'root', privgrp 'root'..
Operation successful.
CRS-4664: Node nearguard successfully pinned.
2025/06/30 03:24:48 CLSRSC-330: Adding Clusterware entries to file 'oracle-ohasd.service'

nearguard     2025/06/30 03:25:39     /u01/app/oracle/crsdata/nearguard/olr/backup_20250630_032539.olr     760403972
2025/06/30 03:25:40 CLSRSC-327: Successfully configured Oracle Restart for a standalone server

 

مرحله پنجم: افزودن مجدد دیتابیس

با اطلاعاتی که از قبل ذخیره کردیم دیتابیس را مجدداً اضافه می کنیم:
srvctl add database -db orcl -oraclehome $ORACLE_HOME -spfile +DATA/ORCL/PARAMETERFILE/spfile.270.1184680669 -domain vahiddb.com -startoption open -stopoption immediate -role primary -policy AUTOMATIC -dbname orcl

مرحله ششم: فعال‌سازی CSS و HAS

$ORACLE_HOME/bin/crsctl modify resource "ora.cssd" -init -attr "AUTO_START=1" -unsupported
crsctl stop has
crsctl start has
crsctl check has
crsctl check css

crsctl stat resource

خروجی دستور:

NAME=ora.cssd
TYPE=ora.cssd.type
TARGET=ONLINE
STATE=ONLINE on nearguard

NAME=ora.diskmon
TYPE=ora.diskmon.type
TARGET=OFFLINE
STATE=OFFLINE

NAME=ora.driver.afd
TYPE=ora.driver.afd.type
TARGET=ONLINE
STATE=ONLINE on nearguard

NAME=ora.evmd
TYPE=ora.evm.type
TARGET=ONLINE
STATE=ONLINE on nearguard

NAME=ora.ons
TYPE=ora.ons.type
TARGET=OFFLINE
STATE=OFFLINE

NAME=ora.orcl.db
TYPE=ora.database.type
TARGET=OFFLINE
STATE=OFFLINE

سپس دستور زیر را برای چک کردن می زنیم:

crsctl stat res -t

خروجی دستور:

--------------------------------------------------------------------------------
Name           Target  State        Server                   State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.ons
               OFFLINE OFFLINE      nearguard                STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.cssd
      1        ONLINE  ONLINE       nearguard                STABLE
ora.diskmon
      1        OFFLINE OFFLINE                               STABLE
ora.driver.afd
      1        ONLINE  ONLINE       nearguard                STABLE
ora.evmd
      1        ONLINE  ONLINE       nearguard                STABLE
ora.orcl.db
      1        OFFLINE OFFLINE                               STABLE
--------------------------------------------------------------------------------

مرحله هفتم: افزودن Listener

srvctl add listener
srvctl start listener
lsnrctl status

 

خروجی دستور:

LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 30-JUN-2025 03:57:36

Copyright (c) 1991, 2024, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Start Date                30-JUN-2025 03:57:22
Uptime                    0 days 0 hr. 0 min. 14 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/19c/grid/network/admin/listener.ora
Listener Log File         /u01/app/oracle/diag/tnslsnr/nearguard/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.188.4)(PORT=1521)))
The listener supports no services
The command completed successfully

 

مرحله هشتم: آماده‌سازی ASM

بازنویسی فایل init+ASM.ora یا استفاده از بکاپی که تهیه کرده بودیم.

cat init+ASM.ora
*.asm_diskstring='/dev/nv*','AFD:*'
*.asm_power_limit=1
*.large_pool_size=12M

افزودن ASM:

srvctl add asm
crsctl modify resource "ora.asm" -init -attr "AUTO_START=1" -unsupported

 

بررسی دیسک‌ها:

kfod asm_diskstring='/dev/nv*','AFD:*' disks=all

خروجی دستور:

--------------------------------------------------------------------------------
 Disk          Size Path                                     User     Group
================================================================================
   1:      20479 MB AFD:DATA02
   2:      20479 MB AFD:DATA1
KFOD-00313: No ASM instances available. CSS group services were successfully initialized by kgxgncin.
KFOD-00312: Error discovering diskstring /dev/nvme0n3p1
ORA-27041: unable to open file
KFOD-00312: Error discovering diskstring /dev/nvme0n2p1
ORA-27041: unable to open file
KFOD-00312: Error discovering diskstring /dev/nvme0n3
ORA-27041: unable to open file
KFOD-00312: Error discovering diskstring /dev/nvme0n2
ORA-27041: unable to open file
KFOD-00312: Error discovering diskstring /dev/nvme0n1p2
ORA-27041: unable to open file
KFOD-00312: Error discovering diskstring /dev/nvme0n1p1
ORA-27041: unable to open file
KFOD-00312: Error discovering diskstring /dev/nvme0n1
ORA-27041: unable to open file
KFOD-00312: Error discovering diskstring /dev/nvme0
ORA-27041: unable to open file
KFOD-00312: Error discovering diskstring /dev/nvram
ORA-27041: unable to open file

 

مرحله نهم: راه‌اندازی ASM

sqlplus / as sysasm
SQL> startup pfile=init+ASM.ora
SQL> alter diskgroup data mount;
SQL> select path from v$asm_disk;
SQL> create spfile from pfile;
SQL> shut immediate;

 

خروجی های دستور:

[oracle@nearguard dbs]$ sqlplus / as sysasm

SQL*Plus: Release 19.0.0.0.0 - Production on Mon Jun 30 04:18:37 2025
Version 19.25.0.0.0

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

Connected to an idle instance.

idle> startup pfile=init+ASM.ora
ASM instance started

Total System Global Area 1976086808 bytes
Fixed Size                  8958232 bytes
Variable Size            1941962752 bytes
ASM Cache                  25165824 bytes
ORA-15110: no diskgroups mounted


idle> show parameter disk

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
asm_diskgroups                       string
asm_diskstring                       string      /dev/nv*, AFD:*
idle> alter diskgroup data mount;

Diskgroup altered.

Elapsed: 00:00:06.22
idle> select path from v$asm_disk;

PATH
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
AFD:DATA1
AFD:DATA02

Elapsed: 00:00:00.02
idle> create spfile from pfile;

File created.

Elapsed: 00:00:00.03
idle> shut immediate;
ASM diskgroups volume disabled
ASM diskgroups dismounted
ASM instance shutdown
idle> exit

اعمال تغییرات در srvctl

srvctl modify asm -p /u01/app/19c/grid/dbs/spfile+ASM.ora
srvctl modify asm -l LISTENER

مرحله دهم: تست نهایی سرویس‌ها

crsctl stop has
crsctl start has
crsctl stat res
crsctl stat res -t

راه‌اندازی دیتابیس:

srvctl start database -d orcl

 خروجی دستورات:

[oracle@nearguard dbs]$ crsctl stop has
CRS-2791: Starting shutdown of Oracle High Availability Services-managed resources on 'nearguard'
CRS-2673: Attempting to stop 'ora.evmd' on 'nearguard'
CRS-2673: Attempting to stop 'ora.LISTENER.lsnr' on 'nearguard'
CRS-2677: Stop of 'ora.LISTENER.lsnr' on 'nearguard' succeeded
CRS-2677: Stop of 'ora.evmd' on 'nearguard' succeeded
CRS-2673: Attempting to stop 'ora.cssd' on 'nearguard'
CRS-2677: Stop of 'ora.cssd' on 'nearguard' succeeded
CRS-2673: Attempting to stop 'ora.driver.afd' on 'nearguard'
CRS-2677: Stop of 'ora.driver.afd' on 'nearguard' succeeded
CRS-2793: Shutdown of Oracle High Availability Services-managed resources on 'nearguard' has completed
CRS-4133: Oracle High Availability Services has been stopped.
[oracle@nearguard dbs]$ crsctl start has
CRS-4123: Oracle High Availability Services has been started.
[oracle@nearguard dbs]$ crsctl stat res
NAME=ora.DATA.dg
TYPE=ora.diskgroup.type
TARGET=ONLINE
STATE=ONLINE on nearguard

NAME=ora.LISTENER.lsnr
TYPE=ora.listener.type
TARGET=ONLINE
STATE=ONLINE on nearguard

NAME=ora.asm
TYPE=ora.asm.type
TARGET=ONLINE
STATE=ONLINE on nearguard

NAME=ora.cssd
TYPE=ora.cssd.type
TARGET=ONLINE
STATE=ONLINE on nearguard

NAME=ora.diskmon
TYPE=ora.diskmon.type
TARGET=OFFLINE
STATE=OFFLINE

NAME=ora.driver.afd
TYPE=ora.driver.afd.type
TARGET=ONLINE
STATE=ONLINE on nearguard

NAME=ora.evmd
TYPE=ora.evm.type
TARGET=ONLINE
STATE=ONLINE on nearguard

NAME=ora.ons
TYPE=ora.ons.type
TARGET=OFFLINE
STATE=OFFLINE

NAME=ora.orcl.db
TYPE=ora.database.type
TARGET=OFFLINE
STATE=OFFLINE

[oracle@nearguard dbs]$ crsctl stat res -t
--------------------------------------------------------------------------------
Name           Target  State        Server                   State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.DATA.dg
               ONLINE  ONLINE       nearguard                STABLE
ora.LISTENER.lsnr
               ONLINE  ONLINE       nearguard                STABLE
ora.asm
               ONLINE  ONLINE       nearguard                Started,STABLE
ora.ons
               OFFLINE OFFLINE      nearguard                STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.cssd
      1        ONLINE  ONLINE       nearguard                STABLE
ora.diskmon
      1        OFFLINE OFFLINE                               STABLE
ora.driver.afd
      1        ONLINE  ONLINE       nearguard                STABLE
ora.evmd
      1        ONLINE  ONLINE       nearguard                STABLE
ora.orcl.db
      1        OFFLINE OFFLINE                               STABLE
--------------------------------------------------------------------------------
[oracle@nearguard dbs]$ ps -ef | grep pmon
oracle     14091       1  0 04:26 ?        00:00:00 asm_pmon_+ASM
oracle     14219   12254  0 04:27 pts/6    00:00:00 grep --color=auto pmon
[oracle@nearguard dbs]$ srvctl start database -d orcl
[oracle@nearguard dbs]$ ps -ef | grep pmon
oracle     14091       1  0 04:26 ?        00:00:00 asm_pmon_+ASM
oracle     14280       1  0 04:27 ?        00:00:00 ora_pmon_orcl
oracle     14710   12254  0 04:28 pts/6    00:00:00 grep --color=auto pmon