怎样在Oracle 19c RAC中重置丢失的Grid用户密码与权限

星强小哥_2702

星强小哥_2702

2026-11-14

518人浏览

原创

Grid用户密码丢失但可SSH登录时,应直接用sqlplus / as sysasm执行ALTER USER sys IDENTIFIED BY 新密码修改ASM实例SYS用户密码;若SSH也无法登录,则需root权限重建grid用户、重置密码、修复权限并重启CRS。

怎样在oracle 19c rac中重置丢失的grid用户密码与权限

Grid用户密码丢失,但还能用grid用户ssh登录节点

这种情况最常见:你人在RAC节点上,ssh grid@node1能进系统,只是忘了sqlplus / as sysasm或crsctl操作时的密码。根本不用碰密码文件,直接改ASM实例口令即可。

关键点在于:Grid Infrastructure的SYSASM密码和Oracle数据库的SYS密码是两套体系,改的是+ASM实例里的SYS用户(它在ASM中等价于Grid用户身份)。

  • 先确认当前ASM实例名:crsctl stat res -t | grep asm,通常叫ora.asm,对应实例名是+ASM1、+ASM2等
  • 用grid用户连本地ASM:export ORACLE_SID=+ASM1; sqlplus / as sysasm
  • 执行:ALTER USER sys IDENTIFIED BY ;——注意必须带as sysasm,否则报ORA-01031
  • 改完后所有节点都要同步验证:sqlplus sys/@+ASM2 as sysasm(替换为对应实例名)

连grid用户SSH都登不进去,但有root权限

这是真断联场景:grid账号被锁、密码全忘、甚至用户被删。此时必须靠root提权重建grid OS用户,并恢复其对GI的控制权。

Grid用户本质是OS级账户,它的权限靠UID/GID和/etc/group中的oinstall、asmadmin、asmdba、asmoper组成员关系决定,不是数据库里某条记录。

  • 用root创建grid用户:useradd -u 1100 -g oinstall -G asmadmin,asmdba,asmoper grid(UID和组名需与原环境一致,查/etc/passwd和/etc/group备份)
  • 重置密码:echo "" | passwd --stdin grid(Linux)或passwd grid(交互式,Windows类系统不适用)
  • 检查$ORACLE_HOME归属:chown -R grid:oinstall $ORACLE_HOME,尤其$ORACLE_HOME/bin/oracle必须属grid且setuid位开启(chmod 6751)
  • 最关键的一步:运行roothas.sh或rootcrs.sh(取决于单节点HAS还是完整CRS),它会重新校验grid用户权限并注册服务

RAC环境下orapw文件不在本地磁盘,而在ASM中

19c RAC默认把密码文件放在ASM磁盘组里,路径是+GRID/orapw,不是$ORACLE_HOME/dbs/。想用orapwd直接覆盖?行不通——orapwd只能写文件系统,不能写ASM。

QuantOracle
QuantOracle

63个确定性量化金融计算器 + 10个通过MCP的复合工作流。期权定价、Greeks、奇异衍生品、风险指标、投资组合优化……

下载

必须走ASM命令链,且所有节点都要操作,漏一个节点,那个节点就永远认不出新密码。

  • 先用已有凭证(如root或另一个可用grid用户)连ASM:asmcmd -p
  • 删旧密码文件:rm +GRID/orapw+ASM1(按实际ASM实例名替换)
  • 生成新密码文件:orapwd file='+GRID/orapw+ASM1' password= format=12.2——format=12.2是19c必需参数,漏了会报ORA-15173
  • 强制所有节点重新读取:crsctl stop crs; crsctl start crs(在每个节点依次执行)
  • 验证:sqlplus sys/@+ASM1 as sysasm,再换节点试+ASM2

改完还是ORA-01017或ORA-01031?盯死这三个位置

Grid密码问题的失败,90%不是命令输错,而是环境状态没对齐。别信“执行完了”,得亲眼看到证据。

  • crsctl check cluster -all输出里每个节点的“CRS active”和“CSS active”必须都是YES;任一NO,sysasm认证直接失效
  • asmcmd ls +GRID/能看到orapw+ASM1,且ls -l显示大小>0;如果文件不存在或为0字节,说明orapwd根本没写进ASM
  • ps -ef | grep pmon确认+ASM1进程确实跑在grid用户下,不是root或oracle;用户错了,权限校验直接绕过

真正卡住人的,从来不是语法,而是ASM磁盘组是否在线、CSS守护进程是否同步、grid用户的GID是否和asmadmin组定义一致——这些都得手动敲命令看输出,不能跳步。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

oracle oracle 19c rac

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
oracle清空表数据
oracle清空表数据

当表中的数据不需要时,则应该删除该数据并释放所占用的空间。本专题为大家提供oracle清空表数据的相关文章,帮助大家解决该问题。

2023.08.16

1161

5

Oracle中declare的使用
Oracle中declare的使用

Oracle DECLARE语句是PL/SQL编程语言中用于声明变量、常量、游标或异常的关键字。它的主要作用是在程序中定义这些对象,以便在后续的代码中使用。DECLARE语句的语法简单明了,可以根据需要声明多个对象。通过使用这些声明的对象,可以进行各种操作,如计算、查询数据库、处理异常等 。

2023.09.15

3453

5

oracle怎么分页
oracle怎么分页

实现分页的步骤:1、使用ROWNUM进行分页查询;2、在执行查询之前进行设置分页参数;3、使用"COUNT(*)"函数来获取总行数,并使用"CEIL"函数来向上取整计算总页数;4、在外部查询中使用"WHERE"子句来筛选出特定的行号范围,以实现分页查询。想了解更多oracle怎么分页的文章,可以来阅读本专题先的文章。

2023.09.18

3470

5

Oracle查看表操作历史记录
Oracle查看表操作历史记录

查看操作历史记录的方法:1、使用Oracle内置的审计功能,可以记录数据库中发生的各种操作,包括登录、DDL语句、DML语句等;2、使用Oracle日志文件,其中包含了数据库中发生的各种操作,可以通过查看日志文件来获取操作历史记录;3、使用Oracle的Flashback功能,可以查看数据库在某个时间点的操作历史记录;4、使用第三方工具等。本专题还提供其他查看表操作的文章,大家可以免费阅读。

2023.09.19

1969

3

Oracle中RAC的用法
Oracle中RAC的用法

Oracle中RAC的用法:1、通过在多个服务器上运行数据库实例来提供高可用性;2、允许在需要时增加或减少节点数量;3、通过将工作负载分布到多个节点上来实现负载均衡;4、使用共享存储来实现多个节点之间的数据共享;5、允许多个节点同时处理数据库请求,从而实现并行处理;6、提供了透明故障切换功能;7、使用了一些技术来确保数据的一致性;8、提供了管理工具来简化RAC环境的管理和维护。本专题还提供RAC相关的其他文章,大家可以免费阅读。

2023.09.19

2573

7

oracle imp
oracle imp

imp是Oracle数据库中的一个命令行工具,用于将导出的数据和对象从一个数据库实例导入到另一个数据库实例。imp命令的一般语法为“imp username/password@connect_string file=file_name [options]”。

2023.09.19

3629

4

常用的数据库软件
常用的数据库软件

常用的数据库软件有MySQL、Oracle、SQL Server、PostgreSQL、MongoDB、Redis、Cassandra、Hadoop、Spark和Amazon DynamoDB。更多关于数据库软件的内容详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.02

4969

19

oracle通配符有哪些
oracle通配符有哪些

oracle通配符有“%”、“_”、“[]”和“[^]"。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.11.08

257

5

oracle四舍五入怎么操作
oracle四舍五入怎么操作

oracle四舍五入操作可以使用ROUND函数来实现,其语法为“ROUND(number, decimal_places)”,其中,number是要进行四舍五入的数值,decimal_places是指定的小数位数。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.11.14

946

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程