orapwd是Oracle用来生成密码文件的工具, 可以用来重新设置SYS用户的密码。在UNIX系统上密码文件一般放在$ORACLE_HOME/dbs目录下, 文件名称为orapw$ORACLE_SID. 比如说数据库实例名为ocm11g, 那么密码文件名应为orapwocm11g.
实例初始化参数REMOTE_LOGIN_PASSWORDFILE可以用来控制密码文件是否被多个实例共享,缺省值为EXCLUSIVE。
SQL> show parameter REMOTE_LOGIN_PASSWORDFILE
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
remote_login_passwordfile string EXCLUSIVE
该参数有以下三个值可以选择:
NONE: 禁止密码文件使用.
EXCLUSIVE: (缺省值) 密码文件只被数据库的一个实例使用. 只有在EXCLUSIVE时,密码文件的内容才可以被修改。
SHARED: 密码文件可以被多个数据库的实例或者RAC数据库的多个实例共享使用。
密码文件中最初只有SYS用户一个条目。当其他用户被授予SYSDBA, SYSOPER或者SYSASM系统权限时,该用户会被作为一个条目加入到密码文件中。当数据库关闭后,如果一个拥有SYSDBA或者SYSOPER权限的用户要启动数据库,那么这个用户是不能通过数据库进行验证的,因此才需要这个放在数据库之外的密码文件。
使用视图 v$pwfile_users可以看到哪些用户被授予SYSDBA, SYSOPER或者SYSASM系统权限。
SQL> select * from v$pwfile_users;
USERNAME SYSDBA SYSOPER SYSASM
------------------------------ ---------- ---------- ----------
SYS TRUE TRUE FALSE
授权sysdba, sysoper权限给其他用户
SQL> grant sysoper to george;
Grant succeeded.
SQL> grant sysdba to george;
Grant succeeded.
SQL> select * from v$pwfile_users;
USERNAME SYSDBA SYSOPER SYSASM
------------------------------ ---------- ---------- ----------
SYS TRUE TRUE FALSE
GEORGE TRUE TRUE FALSE
查找所有被授予SYSDBA权限的用户
SQL> SELECT USERNAME FROM V$PWFILE_USERS WHERE USERNAME != 'SYS' AND SYSDBA='TRUE';
USERNAME
------------------------------
GEORGE
查找所有被授予SYSOPER权限的用户
SQL> SELECT USERNAME FROM V$PWFILE_USERS WHERE USERNAME != 'SYS' AND SYSOPER='TRUE';
USERNAME
------------------------------
GEORGE
如果把REMOTE_LOGIN_PASSWORDFILE初始化参数由NONE改成EXCLUSIVE 或者SHARED, 或者用不同的SYS密码重新创建了密码文件, 那么你必须保证数据词典中的SYS密码与密码文件的密码是一致的. 使用ALTER
USER语句来修改SYS密码,它会同步更新数据字典和密码文件。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29960937/viewspace-1355518/ ,如需转载,请注明出处,否则将追究法律责任。