扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
本篇文章为大家展示了初始化参数REMOTE_LOGIN_PASSWORDFILE设置Oracle数据库的密码验证方式是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
创新互联公司2013年成立,是专业互联网技术服务公司,拥有项目网站设计、做网站网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元昭阳做网站,已为上家服务,为昭阳各地企业和个人服务,联系电话:18982081108
初始化参数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,尝试使用密码文件验证方式登陆会失败,且授权或回收SYSDBA、SYSOPER权限会失败。
如果将REMOTE_LOGIN_PASSWORDFILE设置为SHARED,则任何使用这个密码文件的数据库都不能进行授权回收SYSDBA、SYSOPER权限的操作,但是这些数据库可以使用这个密码文件来进行验证。
这种方式一般用于管理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方式启动的数据库,可以利用密码文件进行验证,但是不能授权或回收SYSDBA和SYSOPER权限。
随后,启动另一个数据库,且将这个数据库的密码文件指向刚才test数据库所使用的密码文件,这样两个数据库就共享了同一个密码文件了。
不过对于TEST数据库,采用了SHARED方式,因此不能执行SYSDBA和SYSOPER的授权,而对于RACTEST数据库,采用了默认的REMOTE_LOGIN_PASSWORDFILE设置,因此可以对这个密码文件进行修改,而这个修改在另外的数据库中,可以马上生效。
如果将RACTEST数据库也设置为SHARED方式启动,那么没有数据库可以修改这个密码文件了。
上述内容就是初始化参数REMOTE_LOGIN_PASSWORDFILE设置Oracle数据库的密码验证方式是什么,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注创新互联行业资讯频道。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流