温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2021-11-04 17:47:09 来源:亿速云 阅读:236 作者:柒染 栏目:建站服务器

本篇文章为大家展示了初始化参数REMOTE_LOGIN_PASSWORDFILE设置Oracle数据库的密码验证方式是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

初始化参数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方式启动,那么没有数据库可以修改这个密码文件了。

 

上述内容就是初始化参数REMOTE_LOGIN_PASSWORDFILE设置Oracle数据库的密码验证方式是什么,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI