启动ASM 实例 报错 先启动LISTENER 在启动 ASM

本文详细记录了在Oracle RAC环境下调整ASM、监听器等资源状态的过程,包括启动、停止、依赖分析和错误排查。通过命令行操作,确保资源在不同节点间的正确运行与管理。

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

 

[oracle@node2 bin]$ ./crs_stat -t
Name           Type           Target    State     Host       
------------------------------------------------------------
ora....B1.inst application    ONLINE    ONLINE    node1      
ora....B2.inst application    ONLINE    OFFLINE              
ora.RACDB.db   application    ONLINE    ONLINE    node2      
ora....SM1.asm application    ONLINE    ONLINE    node1      
ora....E1.lsnr application    ONLINE    UNKNOWN   node1      
ora.node1.gsd  application    ONLINE    ONLINE    node1      
ora.node1.ons  application    ONLINE    ONLINE    node1      
ora.node1.vip  application    ONLINE    ONLINE    node1      
ora....SM2.asm application    ONLINE    UNKNOWN   node2      
ora....E2.lsnr application    ONLINE    UNKNOWN   node2      
ora.node2.gsd  application    ONLINE    ONLINE    node2      
ora.node2.ons  application    ONLINE    ONLINE    node2      
ora.node2.vip  application    ONLINE    ONLINE    node2      
[oracle@node2 bin]$ ./crs_stat
NAME=ora.RACDB.RACDB1.inst
TYPE=application
TARGET=ONLINE
STATE=ONLINE on node1

NAME=ora.RACDB.RACDB2.inst
TYPE=application
TARGET=ONLINE
STATE=OFFLINE

NAME=ora.RACDB.db
TYPE=application
TARGET=ONLINE
STATE=ONLINE on node2

NAME=ora.node1.ASM1.asm
TYPE=application
TARGET=ONLINE
STATE=ONLINE on node1

NAME=ora.node1.LISTENER_NODE1.lsnr
TYPE=application
TARGET=ONLINE
STATE=UNKNOWN on node1

NAME=ora.node1.gsd
TYPE=application
TARGET=ONLINE
STATE=ONLINE on node1

NAME=ora.node1.ons
TYPE=application
TARGET=ONLINE
STATE=ONLINE on node1

NAME=ora.node1.vip
TYPE=application
TARGET=ONLINE
STATE=ONLINE on node1

NAME=ora.node2.ASM2.asm
TYPE=application
TARGET=ONLINE
STATE=UNKNOWN on node2

NAME=ora.node2.LISTENER_NODE2.lsnr
TYPE=application
TARGET=ONLINE
STATE=UNKNOWN on node2

NAME=ora.node2.gsd
TYPE=application
TARGET=ONLINE
STATE=ONLINE on node2

NAME=ora.node2.ons
TYPE=application
TARGET=ONLINE
STATE=ONLINE on node2

NAME=ora.node2.vip
TYPE=application
TARGET=ONLINE
STATE=ONLINE on node2

[oracle@node2 bin]$ pwd
/opt/ora10g/product/10.2.0/crs_1/bin
[oracle@node2 bin]$ srvctl start ora.node2.ASM2.asm
/opt/ora10g/product/10.2.0/db_1/jdk/jre/bin/java: error while loading shared libraries: libpthread.so.0: cannot open shared object file: No such file or directory
[oracle@node2 bin]$ ./crs_start ora.node2.ASM2.asm
CRS-1028: Dependency analysis failed because of:
'Resource in UNKNOWN state: ora.node2.ASM2.asm'

CRS-0223: Resource 'ora.node2.ASM2.asm' has placement error.

[oracle@node2 bin]$ ./crs_start ora.node1.LISTENER_NODE1.lsnr
CRS-1028: Dependency analysis failed because of:
'Resource in UNKNOWN state: ora.node1.LISTENER_NODE1.lsnr'

CRS-0223: Resource 'ora.node1.LISTENER_NODE1.lsnr' has placement error.

[oracle@node2 bin]$ ./crs_stop ora.node1.LISTENER_NODE1.lsnr
Attempting to stop `ora.node1.LISTENER_NODE1.lsnr` on member `node1`
Stop of `ora.node1.LISTENER_NODE1.lsnr` on member `node1` succeeded.
[oracle@node2 bin]$ ./crs_start ora.node1.LISTENER_NODE1.lsnr
Attempting to start `ora.node1.LISTENER_NODE1.lsnr` on member `node1`
Start of `ora.node1.LISTENER_NODE1.lsnr` on member `node1` succeeded.
[oracle@node2 bin]$ ./crs_stop ora.node2.ASM2.asm
Attempting to stop `ora.node2.ASM2.asm` on member `node2`
Stop of `ora.node2.ASM2.asm` on member `node2` succeeded.
CRS-1016: Resources depending on 'ora.node2.ASM2.asm' are running

CRS-0223: Resource 'ora.node2.ASM2.asm' has placement error.

[oracle@node2 bin]$ ./crs_stop ora.node2.LISTENER_NODE2.lsnr
Attempting to stop `ora.node2.LISTENER_NODE2.lsnr` on member `node2`
Stop of `ora.node2.LISTENER_NODE2.lsnr` on member `node2` succeeded.
[oracle@node2 bin]$ ./crs_start ora.node2.LISTENER_NODE2.lsnr
Attempting to start `ora.node2.LISTENER_NODE2.lsnr` on member `node2`
Start of `ora.node2.LISTENER_NODE2.lsnr` on member `node2` succeeded.
[oracle@node2 bin]$ ./crs_stop ora.node2.ASM2.asm
`ora.node2.ASM2.asm` is already OFFLINE.
CRS-0216: Could not stop resource 'ora.node2.ASM2.asm'.

[oracle@node2 bin]$ ./crs_start ora.node2.ASM2.asm
Attempting to start `ora.node2.ASM2.asm` on member `node2`
Start of `ora.node2.ASM2.asm` on member `node2` succeeded.

<think>嗯,用户问的是ASM实例报ORA-01017的问题。首,我需要回忆一下ORA-01017错误的一般原因。这个错误通常和认证有关,比如用户名或密码错误。但ASM实例的情况可能有点不同,因为通常ASM实例的登录是通过操作系统认证或者密码文件来完成的。 接下来,我应该考虑ASM实例的特殊性。ASM实例的默认登录方式可能不是通过普通用户,比如SYS用户,但有时候可能需要使用SYSDBA权限。这时候,如果密码错误或者密码文件有问题,就会导致这个错误。 然后,用户提到的是ASM实例,所以需要检查ASM实例的认证方式。可能的情况包括操作系统组权限是否正确,比如用户是否属于dba组或者asmdba组。另外,ORACLE_SID是否正确设置,如果设置成了数据库实例而不是ASM实例,也会导致登录失败。 另外,密码文件的位置和状态也很重要。ASM实例需要有密码文件,并且密码文件应该存放在正确的目录下,比如$ORACLE_HOME/dbs目录。如果密码文件丢失或者损坏,或者使用了错误的密码,就会报错。 还有,需要检查sqlnet.ora文件中的SQLNET.AUTHENTICATION_SERVICES参数是否设置了正确的认证方式,比如NTS(Windows)或者ALL(Linux/Unix)。如果这个参数设置不正确,可能会禁用操作系统认证,导致必须使用密码文件,这时候如果密码文件有问题就会出现错误。 另外,用户可能在尝试远程连接ASM实例,这时候需要确认监听器是否配置正确,ASM实例是否注册到了监听器,并且远程登录是否被允许。如果远程登录需要密码文件认证,而密码文件不存在或权限不对,也会导致ORA-01017。 还有可能的问题是,ASM实例和数据库实例ORACLE_HOME是否不同,导致环境变量设置混乱。比如,如果用户切换到ASM实例ORACLE_HOME,但环境变量没有正确设置,可能会引用错误的密码文件或者配置。 总结一下,可能的解决步骤包括: 1. 确认使用正确的用户名和密码,尤其是SYS用户和SYSDBA权限。 2. 检查操作系统用户是否属于必要的组,如asmdba。 3. 确认ORACLE_SID是否正确设置为ASM实例的SID。 4. 检查密码文件是否存在,位置是否正确,权限是否合适。 5. 检查sqlnet.ora和listener.ora的配置是否正确。 6. 尝试本地连接和远程连接的不同情况,确定问题范围。 7. 重新生成密码文件,并确保密码与远程登录时使用的密码一致。 可能还需要检查ASM实例的状态是否正常,是否处于开放状态,允许连接。如果ASM实例没有启动或者处于限制模式,也可能导致认证失败。 最后,要确保用户了解ASM实例和普通数据库实例在管理上的不同,比如启动和关闭的方式,以及认证机制的区别。可能需要指导用户一步步检查这些配置,或者提供具体的命令示例,比如使用orapwd创建密码文件,或者检查用户组权限的命令。</think>当ASM实例报错ORA-01017(无效的用户名/口令;登录被拒绝)时,通常与身份验证或权限配置相关。以下是逐步排查和解决的思路: --- ### **1. 确认基础连接信息** - **检查ORACLE_SID** 确保环境变量`ORACLE_SID`正确设置为ASM实例的SID(如`+ASM`或`+ASM1`): ```bash echo $ORACLE_SID ``` - **确认连接语法** ASM实例默认仅允许`SYS`用户以`SYSDBA`/`SYSOPER`权限登录: ```bash sqlplus / as sysdba # 本地操作系统认证 sqlplus sys@+ASM as sysdba # 远程密码文件认证 ``` --- ### **2. 操作系统认证问题** - **用户组权限** ASM实例要求操作系统用户属于`asmdba`组(或`dba`组,具体取决于安装配置): ```bash id -a # 查看当前用户所属组 groups oracle # 查看oracle用户所属组 ``` 若未加入正确组,需联系系统管理员调整。 - **禁用操作系统认证** 检查`$ORACLE_HOME/network/admin/sqlnet.ora`: ```ini SQLNET.AUTHENTICATION_SERVICES = (NTS) # Windows SQLNET.AUTHENTICATION_SERVICES = (ALL) # Linux/Unix ``` 若设置为`NONE`,将强制使用密码文件认证,可能导致本地`/ as sysdba`失败。 --- ### **3. 密码文件问题** - **密码文件存在性** ASM实例的密码文件默认位于`$ORACLE_HOME/dbs/orapw+ASM`(Linux/Unix)或`%ORACLE_HOME%\database\PWD+ASM.ora`(Windows)。 若文件丢失,需重新生成: ```bash orapwd file=$ORACLE_HOME/dbs/orapw+ASM password=<密码> entries=10 ``` - **密码一致性** 确保远程连接时输入的密码与密码文件中的`SYS`用户密码一致。可通过以下命令修改密码: ```sql SQL> ALTER USER SYS IDENTIFIED BY <新密码>; ``` --- ### **4. 监听器配置(远程连接)** - **检查监听状态** 确保ASM实例已注册到监听器: ```bash lsnrctl status ``` 输出中应包含`Service "+ASM"`的状态为`READY`。 - **确认TNS配置** 检查`tnsnames.ora`中ASM实例的条目(示例): ```ini +ASM = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = <主机名>)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = +ASM) ) ) ``` --- ### **5. 其他可能原因** - **ASM实例启动** 检查ASM实例状态: ```bash srvctl status asm ``` 若未启动,尝试启动: ```bash srvctl start asm ``` - **权限冲突** 若同时存在多个Oracle软件安装(如Grid Infrastructure和RDBMS),确保`ORACLE_HOME`和`PATH`变量指向正确的ASM实例路径。 --- ### **6. 总结步骤** 1. 本地连接测试:`sqlplus / as sysdba` 2. 检查操作系统用户组权限 3. 验证密码文件存在性及权限 4. 检查`sqlnet.ora`和监听器配置 5. 重启ASM实例或监听服务 通过以上步骤,可逐步定位并解决ORA-01017错误。如问题仍未解决,建议检查`alert_+ASM.log`日志获取更详细错误信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值