Oracle 10g的ASM实例的sys密码有时候需要修改。它的修改方法是直接修改ASM实例的密码文件,和数据库实例中用户的密码修改方式是不一样的。
我们不能通过alter user 命令修改ASM数据库的sys用户密码。ASM的sys密码只能被密码文件提供,并且ASM实例的REMOTE_LOGIN_PASSWORDFILE的值设置为EXCLUSIVE。
如果使用alter user命令修改,将出现ORA-01031错误。操作如下所示:
SQL> select INSTANCE_NAME from v$instance;
INSTANCE_NAME
----------------
+ASM
SQL> ALTER USER sys IDENTIFIED BY REPLACE ;
ALTER USER sys IDENTIFIED BY REPLACE
*
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.ora( In Windows) / orapw ( in UNIX)后,删除。
5、执行下列重建密码文件命令
WINDOWS:
orapwd file=/database/PWD.ora password=
UNIX:
orapwd file=/dbs/orapw 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实例,修改方法是重建密码文件。