Oracle 10g的ASM实例的sys密码有时候需要修改。它的修改方法是直接修改ASM实例的密码文件,和数据库实例中用户的密码修改方式是不一样的。
我们不能通过alter user 命令修改ASM数据库的sys用户密码。ASM的sys密码只能被密码文件提供,并且ASM实例的REMOTE_LOGIN_PASSWORDFILE的值设置为EXCLUSIVE。
(miki西游 @mikixiyou 原文链接: http://mikixiyou.iteye.com/blog/1725711 )
如果使用alter user命令修改,将出现ORA-01031错误。操作如下所示:
SQL> select INSTANCE_NAME from v$instance; INSTANCE_NAME ---------------- +ASM SQL> ALTER USER sys IDENTIFIED BY <new_password> REPLACE <old_password>; ALTER USER sys IDENTIFIED BY <new_password> REPLACE <old_password> * ERROR at line 1: ORA-01109: database not open The following error also might occur: SQL> alter user sys identified by ; alter user sys identified by * ERROR at line 1: ORA-01031: insufficient privileges
我们修改密码文件中的信息实现密码修改操作。而操作方法是使用orapwd重建密码文件。
1、设置ORACLE_HOME和ORACLE_SID匹配ASM实例
2、使用sqlplus / as sysdba连接ASM实例
3、如果remote_login_passwordfile的值为EXCLUSIVE,ASM实例必须关闭
4、备份现在的密码文件PWD<SID>.ora( In Windows) / orapw<SID> ( in UNIX)后,删除。
5、执行下列重建密码文件命令
WINDOWS:
orapwd file=<ORACLE_HOME>/database/PWD<SID>.ora password=<sys_password>
UNIX:
orapwd file=<ORACLE_HOME>/dbs/orapw<SID> password=<sys_password>
虽然密码文件可以在ASM实例处于启动状态重建,但Oracle建议还是关闭掉数据库实例和ASM实例后再重建。
如果环境是ORACLE RAC,那么每个节点下的密码文件都需要重新生成。
在Oracle 11.2中,可以使用asmcmd工具修改单个实例的sys密码。
$ export ORACLE_SID=+ASM $ asmcmd ASMCMD> passwd sys Enter old password (optional): ****** Enter new password: ******
也可以使用asmcmd工具修改RAC的sys密码
ASMCMD> orapwusr --modify --password sys Enter password: ****** ASMCMD> exit
关键是10g下修改sys密码需要关闭数据库实例和ASM实例,修改方法是重建密码文件。