注册
主备集群,切换为单机 后 SYSDBA密码过期, 解决方法
培训园地/ 文章详情 /

主备集群,切换为单机 后 SYSDBA密码过期, 解决方法

fyu 2023/07/17 1206 0 0

问题现象

主备集群要改为单机, 但SYSDBA用户密码已经过期, 启动数据库后发现数据库一直处于MOUNT 状态 无法open, 强制 open 无效, 所以无法修改密码

问题复现

1、搭建主备集群

具体搭建步骤请参考 我得另一篇博文:https://eco.dameng.com/community/training/22c2c077f5c2c5febc6021252edbf8d6

2、修改 SYSDBA 用户密码过期

SQL> ALTER USER SYSDBA PASSWORD EXPIRE; 操作已执行 已用时间: 5.321(毫秒). 执行号:603. SQL> EXIT [dmdba@itsapp1 bin]$ ./disql disql V8 用户名: 密码: 服务器[LOCALHOST:5236]:处于主库打开状态 登录使用时间 : 2.261(ms) 口令剩余有效时间(天) : 0 口令是否过期 : 过期 SQL>

3、主备变为单机

### 3.1、关闭主备集群
参考链接 https://eco.dameng.com/community/training/22c2c077f5c2c5febc6021252edbf8d6
### 3.2、修改主库参数
-- dm.ini MAL_INI = 0 #dmmal.ini ALTER_MODE_STATUS = 1 #Whether to permit database user to alter database mode and status by SQLs, 1: yes, 0: no ENABLE_OFFLINE_TS = 1 #Whether tablespace can be offline -- dmarch.ini 删除实时归档部分 [ARCHIVE_REALTIME] ARCH_TYPE = REALTIME # 实时归档类型 ARCH_DEST = DM02 # 实时归档目标实例名, 对应备库的数据库实例名 [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL # 本地归档类型 ARCH_DEST = /dmarch # 本地归档文件存放路径 ARCH_FILE_SIZE = 128 # 单位MB, 本地单个归档文件最大值 ARCH_SPACE_LIMIT = 0 # 单位MB, 0表示无限制范围1024~2147483647M

4、启动单机主库

[dmdba@itsapp1 bin]$ ./dmserver /dmdata/dmtest/dm.ini file dm.key not found, use default license! version info: develop DM Database Server 64 V8 03134283968-20230206-181022-20033 startup... Normal of FAST Normal of DEFAULT Normal of RECYCLE Normal of KEEP Normal of ROLL Database mode = 1, oguid = 453331 License will expire on 2024-02-06 file lsn: 38853 ndct db load finished ndct second level fill fast pool finished ndct third level fill fast pool finished ndct second level fill fast pool finished ndct third level fill fast pool finished ndct fill fast pool finished nsvr_startup end. aud sys init success. aud rt sys init success. systables desc init success. ndct_db_load_info success. SYSTEM IS READY.

5、登录数据库

[dmdba@itsapp1 bin]$ ./disql disql V8 用户名: 密码: 服务器[LOCALHOST:5236]:处于主库配置状态 -- 提示处于MOUNT状态 登录使用时间 : 3.067(ms) 口令剩余有效时间(天) : 0 口令是否过期 : 过期 -- SYSDBA 用户密码过期 SQL> SQL> SQL> ALTER DATABASE OPEN; -- 修改数据库状态 无效 提示密码过期 ALTER DATABASE OPEN; [-2503]:登录密码过期. 已用时间: 0.256(毫秒). 执行号:0. SQL> ALTER DATABASE OPEN FORCE; ALTER DATABASE OPEN FORCE; [-2503]:登录密码过期. 已用时间: 0.111(毫秒). 执行号:0. SQL>

由于数据库处于 MOUNT 状态无法打开数据库, 所以无法修改密码, 这里想了一下那些地方会记录数据库状态信息, 尝试修改控制文件看看是否可以启动

7、关闭数据库, 修改控制文件

[dmdba@itsapp1 bin]$ ./dmctlcvt type=1 src=/dmdata/dmtest/dm.ctl dest=/dmdata/dmtest/dm.ctl.txt DMCTLCVT V8 convert ctl to txt success! [dmdba@itsapp1 bin]$ [dmdba@itsapp1 bin]$ vi /dmdata/dmtest/dm.ctl.txt -- 在控制文件中有一行 svr_mode 改字段是修改数据库模式信息 -- svr_mode: 输出参数,输出库模式(Normal/Primary/Standby)。 # server mode svr_mode=1 -- 目前是 1 主库模式 尝试修改为 0

8、替换控制文件

[dmdba@itsapp1 bin]$ ./dmctlcvt type=2 src=/dmdata/dmtest/dm.ctl.txt dest=/dmdata/dmtest/dm.ctl DMCTLCVT V8 convert txt to ctl success! [dmdba@itsapp1 bin]$

9、启动数据库

[dmdba@itsapp1 bin]$ ./disql disql V8 用户名: 密码: 服务器[LOCALHOST:5236]:处于普通打开状态 -- 启动后 数据库变为了 open 登录使用时间 : 2.487(ms) 口令剩余有效时间(天) : 0 口令是否过期 : 过期 SQL> SQL> ALTER USER SYSDBA IDENTIFIED BY 123456789; -- 修改用户密码成功 操作已执行 已用时间: 7.111(毫秒). 执行号:500. SQL>

更多内容请访问 https://eco.dameng.com/

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服