ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 初始化参数REMOTE_LOGIN_PASSWORDFILE

初始化参数REMOTE_LOGIN_PASSWORDFILE

原创 Linux操作系统 作者:yangtingkun 时间:2009-04-16 20:33:50 0 删除 编辑

初始化参数REMOTE_LOGIN_PASSWORDFILE设置Oracle数据库的密码验证方式。

 

 

这个参数最常见的设置为EXCLUSIVE,这也是数据库的默认设置:

bash-3.00$ ls -l orapwtest1
-rw-r-----   1 oracle   oinstall    1536 Apr 14 14:12 orapwtest1
bash-3.00$ export ORACLE_SID=test1
bash-3.00$ sqlplus "/ as sysdba"

SQL*Plus: Release 11.1.0.6.0 - Production on 星期四 4 16 17:23:32 2009

Copyright (c) 1982, 2007, Oracle.  All rights reserved.


连接到:
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP, Data Mining
and Real Application Testing options

SQL> show parameter remote_login

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
remote_login_passwordfile            string      EXCLUSIVE
SQL> grant sysdba to test;

授权成功。

SQL> host
$ cd $ORACLE_HOME/dbs
$ ls -l orapwtest1
-rw-r-----   1 oracle   oinstall    1536 Apr 16 17:24 orapwtest1
$ strings orapwtest1
Z[\]
ORACLE Remote Password file
INTERNAL
8D7F004CD7D32C58
D3CE9AB10E42F19D
TEST
7A0F2B316C212D67

如果将REMOTE_LOGIN_PASSWORDFILE设置为NONE,则禁止密码文件验证方式,添加SYSDBA权限的时候系统会报错:

$ exit

SQL> conn test/test@test1 as sysdba
已连接。
SQL> alter system set remote_login_passwordfile = none scope = spfile sid = 'test1';

系统已更改。

SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE
例程已经关闭。
SQL> conn test/test@test1 as sysdba
ERROR:
ORA-12514: TNS:
监听程序当前无法识别连接描述符中请求的服务


SQL> conn / as sysdba
已连接到空闲例程。
SQL> startup
ORACLE
例程已经启动。

Total System Global Area  776896512 bytes
Fixed Size                  2098776 bytes
Variable Size             212523432 bytes
Database Buffers          557842432 bytes
Redo Buffers                4431872 bytes
数据库装载完毕。
数据库已经打开。
SQL> grant sysoper to test;
grant sysoper to test
*
1 行出现错误:
ORA-01994: GRANT
失败: 口令文件缺失或已禁用


SQL> show parameter remote_login

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
remote_login_passwordfile            string      NONE

可以看到将REMOTE_LOGIN_PASSWORDFILE设置为NONE,尝试使用密码文件验证方式登陆会失败,且授权或回收SYSDBASYSOPER权限会失败。

如果将REMOTE_LOGIN_PASSWORDFILE设置为SHARED,则任何使用这个密码文件的数据库都不能进行授权回收SYSDBASYSOPER权限的操作,但是这些数据库可以使用这个密码文件来进行验证。

这种方式一般用于管理RAC数据库,或者同一台服务器上的多个不同数据库实例。

下面看一下将REMOTE_LOGIN_PASSWORDFILE设置为SHARED的情况:

SQL> alter system set remote_login_passwordfile = shared scope = spfile sid = 'test1';

系统已更改。

SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE
例程已经关闭。
SQL> conn / as sysdba
已连接到空闲例程。
SQL> startup
ORACLE
例程已经启动。

Total System Global Area  776896512 bytes
Fixed Size                  2098776 bytes
Variable Size             212523432 bytes
Database Buffers          557842432 bytes
Redo Buffers                4431872 bytes
数据库装载完毕。
数据库已经打开。
SQL> conn test/test@test1 as sysdba
已连接。
SQL> grant sysoper to test;
grant sysoper to test
*
1 行出现错误:
ORA-01999:
口令文件不能在 SHARED 模式下更新


SQL> show parameter remote_login

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
remote_login_passwordfile            string      SHARED
SQL> exit
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP, Data Mining
and Real Application Testing options
断开
bash-3.00$ mv orapwractest1 orapwractest1.bak
bash-3.00$ ln orapwtest1 orapwractest1    
bash-3.00$ ls -l orapwractest1
-rw-r-----   2 oracle   oinstall    1536 Apr 16 17:24 orapwractest1
bash-3.00$ export ORACLE_SID=ractest1
bash-3.00$ sqlplus "/ as sysdba"

SQL*Plus: Release 11.1.0.6.0 - Production on 星期四 4 16 18:07:35 2009

Copyright (c) 1982, 2007, Oracle.  All rights reserved.

已连接到空闲例程。

SQL> startup
ORACLE
例程已经启动。

Total System Global Area 1603887104 bytes
Fixed Size                  2095208 bytes
Variable Size             741722008 bytes
Database Buffers          855638016 bytes
Redo Buffers                4431872 bytes
数据库装载完毕。
数据库已经打开。
SQL> conn test/test@ractest1 as sysdba
已连接。
SQL> grant sysoper to test1;
grant sysoper to test1
                 *
1 行出现错误:
ORA-01917:
用户或角色 'TEST1' 不存在


SQL> grant sysoper to test;

授权成功。

SQL> conn test/test@test1 as sysoper
已连接。

可以看到使用SHARED方式启动的数据库,可以利用密码文件进行验证,但是不能授权或回收SYSDBASYSOPER权限。

随后,启动另一个数据库,且将这个数据库的密码文件指向刚才test数据库所使用的密码文件,这样两个数据库就共享了同一个密码文件了。

不过对于TEST数据库,采用了SHARED方式,因此不能执行SYSDBASYSOPER的授权,而对于RACTEST数据库,采用了默认的REMOTE_LOGIN_PASSWORDFILE设置,因此可以对这个密码文件进行修改,而这个修改在另外的数据库中,可以马上生效。

如果将RACTEST数据库也设置为SHARED方式启动,那么没有数据库可以修改这个密码文件了。

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/4227/viewspace-590690/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
暂无介绍

注册时间:2007-12-29

  • 博文量
    1955
  • 访问量
    10488533