密码文件的使用示例

长平狐 发布于 2013/09/17 15:11
阅读 32
收藏 0

如启用ORACLE的OS认证默认是OS认证,则从服务器登陆时不需要验证(用户需要在DBA用户组中)

在ORACLE启动过程中,会在$ORACLE_HOME、DATABASE下查找 口令文件,查找顺序是orapwSID文件,如果不存在则查找orapw文件,如果orapw不存在,报错。

是否使用口令文件,是通过oracle提供的一个参数remote_login_passwordfile来控制的,remote_login_passwordfile有none,shared,exclusive3个值,none表示不使用口令文件exclusive表示实例独占使用口令文件,也就是各自实例使用单独的口令文件,shared表示多个实例共享一个口令文件,缺省情况下,win下口令文件的格式是pwdsid.ora,unix下的格式是orapwSID(大小写敏感),

LINUX下寻找口令文件的顺序是:

oracle_home\dbs\orapwSID,如果找不到,会在dbs目录想寻找orapw文件,10g后open数据库时不在检查口令文件。win下如果在oracle_home/database/下找不到pwdsid.ora文件,不会寻找任何文件。

这里所说的win下如果找不到PWDsid.ora文件之后不会寻找任何文件其实是相对unix下如果找不到orapwSID文件之后会寻找orapw文件而言的。其实win下寻找口令文件也是有顺序的。寻找顺序是这样的:首先寻找注册表中ora_sid_pwfile环境变量所指向的口令文件,其次寻找ora_pwfile执行的口令文件,最后才寻找$ORACLE_HOME/database/PWDsid.ora

建立密码文件后要重新启动数据库,因为内存中保留有原来的密码

例子:

创建密码文件,指定密码是oraclebys,force=y是如已经存放指定名字的密码文件,则覆盖。

file= password=p 这两个参数是强制性的,entries是可以保存的记录个数,每个具有sysdba或sysoper权限的用户算一个记录,

如果一个用户同时具有sysdba和sysoper的权限,则只占一个记录。

注意:WINDOWS下密码文件格式为:PWDorcl.ORA   LINUX下为orapwbysrac1

C:\Documentsand Settings\Administrator>orapwd file=G:\dbhome_1\database\PWDorcl.ORA password=oraclebys entries=3 force=y

修改参数启用密码文件

首先需要修改参数,才能使用口令文件。不然如禁用OS认证,此参数又不对,无法STARTUP数据库,因为不能以SYSDBA身份连接到空闲进程。

SQL>show parameter pass
NAME                                 TYPE        VALUE
----------------------------------------------- ------------------------------
remote_login_passwordfile            string      NONE
SQL>alter system set remote_login_passwordfile=exclusive scope=spfile;
系统已更改。
SQL>shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE例程已经关闭。
此时,修改OS认证方式为NONE。下面是使用口令文件启动的
SQL>startup;
ORACLE例程已经启动。
TotalSystem Global Area  535662592 bytes
FixedSize                  1375792 bytes
VariableSize             322961872 bytes
DatabaseBuffers          205520896 bytes
RedoBuffers                5804032 bytes
数据库装载完毕。
数据库已经打开。

验证是否通过口令文件启动???

事实是只能验证是否存在PWFILE及PEFILE里有哪些用户及权限。
SQL> select * from v$pwfile_users;
USERNAME                      SYSDB SYSOP SYSAS
------------------------------ ----- ----- -----
SYS                            TRUE TRUE  FALSE
SQL>shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE例程已经关闭。
SQL>startup;
ORA-01031:insufficient privileges
SQL>conn sys/oraclebys as sysdba
已连接到空闲例程。


原文链接:http://blog.csdn.net/q947817003/article/details/11210681
加载中
返回顶部
顶部