1 文档描述
这是一篇为修改单机oracle ASM 环境主机hostname 提供参考的文档。
事件的起因是自己oracle 数据库虚拟机,里面安装了10g 到18c 各个版本的单机数据库以及oracle 18c 的ASM 。因为做环境时此虚拟机并没有联网,所以主机名IP 就从没有配置过,主机名使用的默认名localhost.localdomain 。当某天将此虚拟机连接外网后,发现主机名变成了bogon ,并且oracle GI 环境启动不起来了。 问了下昕宇,主机名修改为bogon 是因为DNS 服务器无法解析到IP 地址对应的主机名,因此会返回bogon (含义是“ 虚拟的、虚伪的” ),如果不想被DNS 修改主机名,在/etc/hosts 文件中添加上对应IP 的解析即可。
比如原/etc/hosts 文件中内容:
[root@bogon ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
添加IP 解析后如下:
[root@bogon ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.8.128 localhost
再重启,主机名就会回到原名 localhost 。 (注意因为/etc/nsswitch.conf 文件中默认的解析顺序配置是 hosts: files dns , hosts 文件优先于dns 解析)
或者断网启动操作系统(断网启动系统,主机名依然是localhost ),在操作系统和ASM 实例都启动后,再接通网线, 接通网线后,主机名会被变更为bogon ,但此时ASM 实例已经启动完成了。
既然是实验环境,那就做一下oracle ASM 环境的主机名修改操作。留下参考文档。
2 操作环境
操作系统:OEL7.2
GI :grid 用户,oracle 18c ASM ,ORACLE_HOME = /u01/app/product/grid/18.0.0.0.0 , +ASM
Database: oracle 用户,Oracle 18c database , ORACLE_HOME = /u01/app/product/database/18.0.0.0.0 , S18000A
3 操作过程
重新命名单机ASM 环境的主机名,如果前期能收集一些信息,后续修改会更方便一些。预收集的信息如下:
1 使用grid 用户收集ASM 信息样例 $ srvctl config asm -detail ASM home: <CRS home> Password file: Backup of Password file: ASM listener: Spfile: /u01/app/product/grid/18.0.0.0.0/dbs/spfile+ASM.ora ASM diskgroup discovery string: /dev/asm_* ASM is enabled. ASM is individually enabled on nodes: ASM is individually disabled on nodes: [grid@oracle 18.0.0.0.0:(+ASM) dbs ] $
2 使用grid 用户收集数据库信息样例: $ srvctl config database -d S18000A Database unique name: S18000A Database name: S18000A Oracle home: /u01/app/product/database/18.0.0.0.0 Oracle user: oracle Spfile: +ORADATA/S18000A/PARAMETERFILE/spfile.266.992860735 Password file: Domain: Start options: open Stop options: immediate Database role: PRIMARY Management policy: AUTOMATIC Disk Groups: ORADATA Services: OSDBA group: OSOPER group: Database instance: S18000A 3 收集 ASM disk 在磁盘中的位置
3.1 重新配置CSS&OHAS服务,修改主机名
修改主机名前,以root 用户执行如下命令重新配置CSS&OHAS 服务 # /u01/app/product/grid/18.0.0.0.0/crs/install/roothas.pl -deconfig -force 如果主机并没有安装perl 环境,可以使用ORACLE_HOME 下自带的perl 环境 #/u01/app/product/grid/18.0.0.0.0/perl/bin/perl /u01/app/product/grid/18.0.0.0.0/crs/install/roothas.pl -deconfig -force
[root@localhost ~]# /u01/app/product/grid/18.0.0.0.0/perl/bin/perl /u01/app/product/grid/18.0.0.0.0/crs/install/roothas.pl -deconfig -force Using configuration parameter file: /u01/app/product/grid/18.0.0.0.0/crs/install/crsconfig_params The log of current session can be found at: /u01/app/product/crsdata/localhost/crsconfig/hadeconfig.log CRS-2791: Starting shutdown of Oracle High Availability Services-managed resources on 'localhost' CRS-2673: Attempting to stop 'ora.evmd' on 'localhost' CRS-2677: Stop of 'ora.evmd' on 'localhost' succeeded CRS-2793: Shutdown of Oracle High Availability Services-managed resources on 'localhost' has completed CRS-4133: Oracle High Availability Services has been stopped. 2022/10/10 09:16:16 CLSRSC-337: Successfully deconfigured Oracle Restart stack 运行完成后,修改主机名,注意也需要添加IP 主机名解析 [root@bogon ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.8.128 bogon
主机名修改完成后,以root 用户运行: # /u01/app/product/grid/18.0.0.0.0/crs/install/roothas.sh
[root@bogon ~]# /u01/app/product/grid/18.0.0.0.0/crs/install/roothas.sh Using configuration parameter file: /u01/app/product/grid/18.0.0.0.0/crs/install/crsconfig_params The log of current session can be found at: /u01/app/product/crsdata/bogon/crsconfig/roothas_2022-10-10_09-52-08AM.log LOCAL ADD MODE Creating OCR keys for user 'grid', 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 bogon successfully pinned. 2022/10/10 09:52:14 CLSRSC-330: Adding Clusterware entries to file 'oracle-ohasd.service' CRS-2791: Starting shutdown of Oracle High Availability Services-managed resources on 'bogon' CRS-2673: Attempting to stop 'ora.evmd' on 'bogon' CRS-2677: Stop of 'ora.evmd' on 'bogon' succeeded CRS-2793: Shutdown of Oracle High Availability Services-managed resources on 'bogon' has completed CRS-4133: Oracle High Availability Services has been stopped. CRS-4123: Oracle High Availability Services has been started. bogon 2022/10/10 09:53:15 /u01/app/product/grid/18.0.0.0.0/cdata/bogon/backup_20221010_095315.olr 70732493 2022/10/10 09:53:15 CLSRSC-327: Successfully configured Oracle Restart for a standalone server
3.2 修改GI的ora.cssd资源
使用 grid 用户执行如下命令修改 ora.cssd 资源 :
$/u01/app/product/grid/18.0.0.0.0/bin/crsctl modify resource "ora.cssd" -init -attr "AUTO_START=1" -unsupported
运行正常无结果返回
3.3 重新启动OHAS
使用 grid 用户重新启动 OHAS:
$/u01/app/product/grid/18.0.0.0.0/bin/crsctl stop has
$/u01/app/product/grid/18.0.0.0.0/bin/crsctl start has
[grid@bogon 18.0.0.0.0:(+ASM) ~ ] $ /u01/app/product/grid/18.0.0.0.0//bin/crsctl stop has
CRS-2791: Starting shutdown of Oracle High Availability Services-managed resources on 'bogon'
CRS-2673: Attempting to stop 'ora.evmd' on 'bogon'
CRS-2677: Stop of 'ora.evmd' on 'bogon' succeeded
CRS-2793: Shutdown of Oracle High Availability Services-managed resources on 'bogon' has completed
CRS-4133: Oracle High Availability Services has been stopped.
[grid@bogon 18.0.0.0.0:(+ASM) ~ ] $ /u01/app/product/grid/18.0.0.0.0//bin/crsctl start has
CRS-4123: Oracle High Availability Services has been started.
3.4 检查CSS&OHAS状态
使用grid 用户检查CSS&OHAS 的状态: $/u01/app/product/grid/18.0.0.0.0//bin/crsctl check has $/u01/app/product/grid/18.0.0.0.0//bin/crsctl check css $/u01/app/product/grid/18.0.0.0.0//bin/crsctl stat resource $/u01/app/product/grid/18.0.0.0.0//bin/crsctl stat res -t
[grid@bogon 18.0.0.0.0:(+ASM) ~ ] $ /u01/app/product/grid/18.0.0.0.0//bin/crsctl start has CRS-4123: Oracle High Availability Services has been started. [grid@bogon 18.0.0.0.0:(+ASM) ~ ] $ /u01/app/product/grid/18.0.0.0.0//bin/crsctl check has CRS-4638: Oracle High Availability Services is online [grid@bogon 18.0.0.0.0:(+ASM) ~ ] $ /u01/app/product/grid/18.0.0.0.0//bin/crsctl check css CRS-4529: Cluster Synchronization Services is online [grid@bogon 18.0.0.0.0:(+ASM) ~ ] $ /u01/app/product/grid/18.0.0.0.0//bin/crsctl stat resource NAME=ora.cssd TYPE=ora.cssd.type TARGET=ONLINE STATE=ONLINE on bogon NAME=ora.diskmon TYPE=ora.diskmon.type TARGET=OFFLINE STATE=OFFLINE NAME=ora.evmd TYPE=ora.evm.type TARGET=ONLINE STATE=ONLINE on bogon NAME=ora.ons TYPE=ora.ons.type TARGET=OFFLINE STATE=OFFLINE [grid@bogon 18.0.0.0.0:(+ASM) ~ ] $ /u01/app/product/grid/18.0.0.0.0//bin/crsctl stat res -t -------------------------------------------------------------------------------- Name Target State Server State details -------------------------------------------------------------------------------- Local Resources -------------------------------------------------------------------------------- ora.ons OFFLINE OFFLINE bogon STABLE -------------------------------------------------------------------------------- Cluster Resources -------------------------------------------------------------------------------- ora.cssd 1 ONLINE ONLINE bogon STABLE ora.diskmon 1 OFFLINE OFFLINE STABLE ora.evmd 1 ONLINE ONLINE bogon STABLE -------------------------------------------------------------------------------- [grid@bogon 18.0.0.0.0:(+ASM) ~ ] $
注意如果服务没有启动,可以试着重启操作系统。
3.5 重建默认监听
利用netca,netmgr 工具,或手动创建监听,然后将监听添加进GI 资源管理: 样例如下: $ srvctl add listener -listener LISTENER -o $ORACLE_HOME -endpoints tcp:1521
$srvctl add listener
$srvctl start listener 注意:添加进资源组时监听服务应该是关闭状态,否则会添加不成功,报如下错误。
[grid@bogon 18.0.0.0.0:(+ASM) ~ ] $ srvctl add listener
PRCN-2061 : Failed to add listener ora.LISTENER.lsnr
PRCN-2065 : Ports 1521 are not available on the nodes given
PRCN-2067 : Port 1521 is not available on nodes: bogon
3.6 重建ASM参数文件
使用grid 用户在ORACLE_HOME/dbs 目录下创建文本ASM 参数文件init+ASM.ora ,内容如下: 我的实验环境中,仅使用了/dev/asm_01 这一个磁盘给ASM 实例使用。
[grid@bogon 18.0.0.0.0:(+ASM) ~ ] $ cat $ORACLE_HOME/dbs/init+ASM.ora
asm_diskgroups= 'ORADATA'
asm_diskstring= '/dev/asm_*'
instance_type='asm'
large_pool_size=12M
3.7 将ASM实例添加进GI
以grid 用户执行命令,将ASM 实例添加进GI 资源组:
$/u01/app/product/grid/18.0.0.0.0/bin/srvctl add asm 无执行结果返回 添加完成之后可以查看ASM 信息,以未添加前是不能查看ASM 信息的。
[grid@bogon 18.0.0.0.0:(+ASM) ~ ] $ srvctl config asm -detail
ASM home: <CRS home>
Password file:
Backup of Password file:
ASM listener: LISTENER
Spfile:
ASM diskgroup discovery string: ++no-value-at-resource-creation--never-updated-through-ASM++
ASM is enabled.
ASM is individually enabled on nodes:
ASM is individually disabled on nodes:
[grid@bogon 18.0.0.0.0:(+ASM) ~ ] $
3.8 设置ASM随GI自动启动
使用grid 用户,执行命令让ASM 自动启动:
$/u01/app/product/grid/18.0.0.0.0//bin/crsctl modify resource "ora.asm" -init -attr "AUTO_START=1" -unsupported 命令执行无结果返回
3.9 检查操作系统asm disk状态
在启动ASM 实例前,确认ASM disk 能够被发现。使用grid 用户执行检查命令:Example:
$/u01/app/product/grid/18.0.0.0.0//bin/kfod asm_diskstring='/dev/asm_*' disks=all
3.10 启动ASM实例
使用grid 用户启动ASM 实例:
$ export ORACLE_SID=+ASM
$ cd $ORACLE_HOME/dbs
$ /u01/app/product/grid/18.0.0.0.0/bin/sqlplus "/as sysasm"
SQL> startup pfile=init+ASM.ora
SQL> show parameter asm
[grid@bogon 18.0.0.0.0:(+ASM) ~ ] $ cd $ORACLE_HOME/dbs
[grid@bogon 18.0.0.0.0:(+ASM) dbs ] $ /u01/app/product/grid/18.0.0.0.0/bin/sqlplus "/as sysasm"
SQL*Plus: Release 18.0.0.0.0 - Production on Mon Oct 10 12:26:28 2022
Version 18.3.0.0.0
Copyright (c) 1982, 2018, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup pfile=init+ASM.ora
ASM instance started
Total System Global Area 1136934472 bytes
Fixed Size 8666696 bytes
Variable Size 1103101952 bytes
ASM Cache 25165824 bytes
ASM diskgroups mounted
SQL> set lines 200
SQL> show parameter asm
NAME TYPE VALUE
------------------------------------ --------------------------------- ------------------------------
asm_diskgroups string ORADATA
asm_diskstring string /dev/asm_*
asm_power_limit integer 1
asm_preferred_read_failure_groups string
SQL>
3.11 验证ASM磁盘
验证所有磁盘是否被发现了: SQL> select path from v$asm_disk;
3.12 创建ASM spfile
目前ASM 实例是使用的pfile 启动,利用pfile 创建spfile : SQL> create spfile from pfile; 注意此时创建的spfile 是放了$ORACLE_HOME/dbs 目录下面。 在修改主机名前的ASM 实例的spfile 是存储在ASM 实例中的。如需要将spfile 存储在ASM 中,使用如下命令: SQL> create spfile='+ORADATA' from pfile; 使用grid 用户,利用asmcmd 工具查看spfile 在ASM 实例中的位置 ASMCMD> ls -l Type Redund Striped Time Sys Name ASMPARAMETERFILE UNPROT COARSE OCT 10 12:00:00 Y REGISTRY.253.1117715893 ASMCMD> pwd +ORADATA/ASM/ASMPARAMETERFILE
3.13 将ASM spfile和LISTENER添加进ASM resource
使用grid 用户执行srvctl config asm -detail 查看详细信息:
$ srvctl config asm -detail
如asm信息中并未添加spfile及LISTEER信息。可使用如下命令添加。
$ /u01/app/product/grid/18.0.0.0.0//bin/srvctl modify asm -p <spfile full path> $ /u01/app/product/grid/18.0.0.0.0//bin/srvctl modify asm -l LISTENER
[grid@bogon 18.0.0.0.0:(+ASM) ~ ] $ srvctl config asm -detail
ASM home: <CRS home>
Password file:
Backup of Password file:
ASM listener: LISTENER
Spfile: +ORADATA/ASM/ASMPARAMETERFILE/registry.253.1117715893
ASM diskgroup discovery string: /dev/asm_*
ASM is enabled.
ASM is individually enabled on nodes:
ASM is individually disabled on nodes:
[grid@bogon 18.0.0.0.0:(+ASM) ~ ] $
3.14 验证OHAS服务
使用grid 用户测试验证OHAS 服务重启效果:
$ /u01/app/product/grid/18.0.0.0.0/bin/crsctl stop has
$ /u01/app/product/grid/18.0.0.0.0/bin/crsctl start has
$ /u01/app/product/grid/18.0.0.0.0/bin/crsctl stat res
$ /u01/app/product/grid/18.0.0.0.0/bin/crsctl stat res -t
[grid@bogon 18.0.0.0.0:(+ASM) ~ ] $ /u01/app/product/grid/18.0.0.0.0//bin/crsctl stop has CRS-2791: Starting shutdown of Oracle High Availability Services-managed resources on 'bogon' CRS-2673: Attempting to stop 'ora.LISTENER.lsnr' on 'bogon' CRS-2673: Attempting to stop 'ora.evmd' on 'bogon' CRS-2673: Attempting to stop 'ora.ORADATA.dg' on 'bogon' CRS-2677: Stop of 'ora.ORADATA.dg' on 'bogon' succeeded CRS-2673: Attempting to stop 'ora.asm' on 'bogon' CRS-2677: Stop of 'ora.LISTENER.lsnr' on 'bogon' succeeded CRS-2677: Stop of 'ora.evmd' on 'bogon' succeeded CRS-2677: Stop of 'ora.asm' on 'bogon' succeeded CRS-2673: Attempting to stop 'ora.cssd' on 'bogon' CRS-2677: Stop of 'ora.cssd' on 'bogon' succeeded CRS-2793: Shutdown of Oracle High Availability Services-managed resources on 'bogon' has completed CRS-4133: Oracle High Availability Services has been stopped.
[grid@bogon 18.0.0.0.0:(+ASM) ~ ] $ /u01/app/product/grid/18.0.0.0.0//bin/crsctl start has CRS-4123: Oracle High Availability Services has been started.
[grid@bogon 18.0.0.0.0:(+ASM) ~ ] $ /u01/app/product/grid/18.0.0.0.0/bin/crsctl stat res NAME=ora.LISTENER.lsnr TYPE=ora.listener.type TARGET=ONLINE STATE=ONLINE on bogon NAME=ora.ORADATA.dg TYPE=ora.diskgroup.type TARGET=ONLINE STATE=ONLINE on bogon NAME=ora.asm TYPE=ora.asm.type TARGET=ONLINE STATE=ONLINE on bogon NAME=ora.cssd TYPE=ora.cssd.type TARGET=ONLINE STATE=ONLINE on bogon NAME=ora.diskmon TYPE=ora.diskmon.type TARGET=OFFLINE STATE=OFFLINE NAME=ora.evmd TYPE=ora.evm.type TARGET=ONLINE STATE=INTERMEDIATE on bogon NAME=ora.ons TYPE=ora.ons.type TARGET=OFFLINE STATE=OFFLINE
[grid@bogon 18.0.0.0.0:(+ASM) ~ ] $ /u01/app/product/grid/18.0.0.0.0/bin/crsctl stat res -t -------------------------------------------------------------------------------- Name Target State Server State details -------------------------------------------------------------------------------- Local Resources -------------------------------------------------------------------------------- ora.LISTENER.lsnr ONLINE ONLINE bogon STABLE ora.ORADATA.dg ONLINE ONLINE bogon STABLE ora.asm ONLINE ONLINE bogon Started,STABLE ora.ons OFFLINE OFFLINE bogon STABLE -------------------------------------------------------------------------------- Cluster Resources -------------------------------------------------------------------------------- ora.cssd 1 ONLINE ONLINE bogon STABLE ora.diskmon 1 OFFLINE OFFLINE STABLE ora.evmd 1 ONLINE ONLINE bogon STABLE -------------------------------------------------------------------------------- [grid@bogon 18.0.0.0.0:(+ASM) ~ ] $
3.15 添加数据库到ASM resource
如果数据库的spfile 存储在ASM 实例中,使用grid 用户执行asmcmd 查找数据库spfile 位置。
ASMCMD> ls
spfile.266.992860735
ASMCMD> pwd
+ORADATA/S18000A/PARAMETERFILE
ASMCMD>
使用oracle 用户执行srvctl 添加数据库到ASM 资源中
[oracle@bogon 18.0.0.0.0:(S18000A) ~ ] $ srvctl add database -db S18000A -dbname S18000A -o /u01/app/product/database/18.0.0.0.0 -spfile +ORADATA/S18000A/PARAMETERFILE/spfile.266.992860735
检查数据库添加状态 [oracle@bogon 18.0.0.0.0:(S18000A) ~ ] $ srvctl config database -d S18000A
Database unique name: S18000A
Database name: S18000A
Oracle home: /u01/app/product/database/18.0.0.0.0
Oracle user: oracle
Spfile: +ORADATA/S18000A/PARAMETERFILE/spfile.266.992860735
Password file:
Domain:
Start options: open
Stop options: immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Disk Groups:
Services:
OSDBA group:
OSOPER group:
Database instance: S18000A
[oracle@bogon 18.0.0.0.0:(S18000A) ~ ] $
3.16 启动数据库
使用grid 用户或者oracle 用户,启动数据库 $ srvctl start database -db S18000A
3.17 检查所有服务状
检查所有服务状态 $ crsctl stat res -t [grid@bogon 18.0.0.0.0:(+ASM) ~ ] $ crsctl stat res -t -------------------------------------------------------------------------------- Name Target State Server State details -------------------------------------------------------------------------------- Local Resources -------------------------------------------------------------------------------- ora.LISTENER.lsnr ONLINE ONLINE bogon STABLE ora.ORADATA.dg ONLINE ONLINE bogon STABLE ora.asm ONLINE ONLINE bogon Started,STABLE ora.ons OFFLINE OFFLINE bogon STABLE -------------------------------------------------------------------------------- Cluster Resources -------------------------------------------------------------------------------- ora.cssd 1 ONLINE ONLINE bogon STABLE ora.diskmon 1 OFFLINE OFFLINE STABLE ora.evmd 1 ONLINE ONLINE bogon STABLE ora.s18000a.db 1 ONLINE ONLINE bogon Open,HOME=/u01/app/p roduct/database/18.0 .0.0.0,STABLE --------------------------------------------------------------------------------
4 个人总结
涉及的一些命令: $ crsctl stop has $ crsctl start has $ srvctl add asm $ srvctl add listener $ srvctl add database -db S18000A -dbname S18000A -o /u01/app/product/database/18.0.0.0.0 -spfile +ORADATA/S18000A/PARAMETERFILE/spfile.266.992860735 $ srvctl config asm -detail $ srvctl config database -d S18000A $ srvctl config listener $ crsctl modify resource "ora.cssd" -init -attr "AUTO_START=1" -unsupported $ crsctl modify resource "ora.asm" -init -attr "AUTO_START=1" -unsupported $ crsctl status resource $ crsctl status resrouce <resource_name> -p $ crsctl config has -- Display OHAS autostart config on this server $ crsctl enable has -- Enable OHAS autostart on this server $ crsctl disable has -- Disable OHAS autostart on this server
5 资料参考引用
How to change Hostname IP for a Grid Infrastructure Oracle Restart Standalone Configuration (SIHA) 11.2 and Later (Doc ID 1552810.1)
