当前位置:  数据库>oracle

Oracle的密码文件及远程SYSDBA登录

    来源: 互联网  发布时间:2017-06-25

    本文导语: 密码文件(password file)是一个可选的文件,允许远程SYSDBA或管理员访问数据库。 启动Oracle时,还没有数据库可以用来验证密码。在本地系统上启动Oracle时,Oracle会利用操作系统来执行这种认证。安装Oracle时,会要求完成完成的人...

密码文件(password file)是一个可选的文件,允许远程SYSDBA或管理员访问数据库。

启动Oracle时,还没有数据库可以用来验证密码。在本地系统上启动Oracle时,Oracle会利用操作系统来执行这种认证。安装Oracle时,会要求完成完成的人指定管理员“组”。在Unix/Linux上,这个组一般默认为dba,在Windows上默认为OSDBA,不过也可以是平台上任何合法的组名。这个组很特殊,因为这个组中的任何用户都可以作为SYSDBA连接Oracle,而无需指定用户名或密码。

[root@rhel6 ~]# id mysql
uid=496(mysql) gid=495(mysql) groups=495(mysql),500(oinstall)
[root@rhel6 ~]# su - mysql
-bash-4.1$ export ORACLE_HOME=/u02/app/oracle/product/11.2.4/db1
-bash-4.1$ export ORACLE_SID=orcl
-bash-4.1$ cd $ORACLE_HOME/bin
-bash-4.1$ ./sqlplus / as sysdba
 
SQL*Plus: Release 11.2.0.4.0 Production on Thu Dec 15 21:32:05 2016
 
Copyright (c) 1982, 2013, Oracle.  All rights reserved.
 
ERROR:
ORA-01017: invalid username/password; logon denied
 
 
Enter user-name: ^C
-bash-4.1$ su
Password:
[root@rhel6 bin]# usermod -G dba mysql
[root@rhel6 bin]# id mysql
uid=496(mysql) gid=495(mysql) groups=495(mysql),501(dba)
[root@rhel6 bin]# exit
exit
-bash-4.1$ ./sqlplus / as sysdba
 
SQL*Plus: Release 11.2.0.4.0 Production on Thu Dec 15 21:32:36 2016
 
Copyright (c) 1982, 2013, Oracle.  All rights reserved.
 
 
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
 
sys@ORCL>show user
USER is "SYS"

现在可以连接数据库做管理工作,或启动关闭数据库。如果要从另外一台机器通过网络完成这个操作会怎么样呢?下面我使用@连接串来连接:

C:Usersvictor>sqlplus /@orcl as sysdba
 
SQL*Plus: Release 12.1.0.1.0 Production on 星期四 12月 15 21:42:04 2016
 
Copyright (c) 1982, 2013, Oracle.  All rights reserved.
 
ERROR:
ORA-01017: invalid username/password; logon denied

在网络上,对于SYSDBA的操作系统认证不再奏效,即使把很不安全的REMOTE_OS_AUTHENT参数设置为TRUE也不例外。所以操作系统认证不可行。因此密码文件应运而生了。

密码文件保存了一个用户名和密码列表,这些用户名和密码分别对应于通过网络远程认证为SYSDBA的用户。Oracle必须使用这个文件来认证用户,而不是数据库中存储的正常密码列表。

下面验证这种情况。首先,设置REMOTE_LOGIN_PASSWORDFILE,有三个值:NONE,意味着没有密码文件,不存在“远程SYSDBA登录”、SHARED,多个数据库可以使用同样的密码文件、EXCLUSIVE,只有一个数据库使用一个给定的密码文件。这里设置为EXCLUSIVE。

alter system set remote_login_passwordfile=exclusive scope=spfile;

修改这个参数需要重启数据库。

使用orapwd创建和填写这个初始的密码文件,密码文件位于$ORACLE_HOME/dbs目录中。

[oracle@rhel6 dbs]$ which orapwd
/u02/app/oracle/product/11.2.4/db1/bin/orapwd
[oracle@rhel6 dbs]$ orapwd
Usage: orapwd file= entries= force= ignorecase= nosysdba=
 
  where
    file - name of password file (required),
    password - password for SYS will be prompted if not specified at command line,
    entries - maximum number of distinct DBA (optional),
    force - whether to overwrite existing file (optional),
    ignorecase - passwords are case-insensitive (optional),
    nosysdba - whether to shut out the SYSDBA logon (optional Database Vault only).
   
  There must be no spaces around the equal-to (=) character.
[oracle@rhel6 dbs]$ pwd
/u02/app/oracle/product/11.2.4/db1/dbs
[oracle@rhel6 dbs]$ orapwd file=orapw$ORACLE_SID password=oracle entries=20
[oracle@rhel6 dbs]$ ls -l orapw$ORACLE_SID
-rw-r----- 1 oracle oinstall 3584 Dec 15 21:55 orapworcl

目前该文件中只有一个用户,也就是用户SYS,尽管数据库上还有其他SYSDBA账户,但它们还不在密码文件中。不过基于以上设置我们可以作为SYSDBA通过网络连接Oracle,即使Oracle没有启动,并且可以远程启动Oracle。

C:Usersvictor>sqlplus sys/oracle@orcl as sysdba
 
SQL*Plus: Release 12.1.0.1.0 Production on 星期四 12月 15 22:00:24 2016
 
Copyright (c) 1982, 2013, Oracle.  All rights reserved.
 
已连接到空闲例程。
 
SQL> startup
ORACLE 例程已经启动。
 
Total System Global Area  784998400 bytes
Fixed Size                  2257352 bytes
Variable Size            754978360 bytes
Database Buffers          20971520 bytes
Redo Buffers                6791168 bytes
数据库装载完毕。
数据库已经打开。

注意:如果上边这一步遇到ORA-12505 "TNS:listener does not currently know of SID given in connect descriptor"说明没有配置数据库实例的静态监听。

创建了密码文件,那我们能不能看看密码文件里到底记录了什么内容呢,会不会把我们的密码泄漏呢?

密码文件是一个二进制文件是不能直接查看的,Linux上可以使用strings命令查看

[oracle@rhel6 dbs]$ strings orapworcl
][Z
ORACLE Remote Password file
INTERNAL
AB27B53EDC5FEF41
8A8F025737A9097A
mHD2

从输出可以看出密码文件中没有使用明文记录我们的密码而是记录了一些串码。

其实这个密码文件还和数据库中的一个视图v$pwfile_users有一些关系

V$PWFILE_USERS lists all users in the password file, and indicates whether the user has been granted the SYSDBA, SYSOPER, and SYSASM privileges.
USERNAME VARCHAR2(30) Name of the user that is contained in the password file
SYSDBA VARCHAR2(5) Indicates whether the user can connect with SYSDBA privileges (TRUE) or not (FALSE)
SYSOPER VARCHAR2(5) Indicates whether the user can connect with SYSOPER privileges (TRUE) or not (FALSE)
SYSASM VARCHAR2(5) Indicates whether the user can connect with SYSASM privileges (TRUE) or not (FALSE)
sys@ORCL>select * from v$pwfile_users;
 
USERNAME                                          SYSDBA      SYSOPER      SYSASM
------------------------------------------------------------------------------------------ --------------- --------------- ---------------
SYS                                            TRUE        TRUE        FALSE
--给用户zx赋予SYSDBA权限可以看到v$pwfile_users多了一条记录,而密码文件orapworcl也多了一行串码。
sys@ORCL>grant sysdba to zx;
 
Grant succeeded.
 
sys@ORCL>select * from v$pwfile_users;
 
USERNAME                                          SYSDBA      SYSOPER      SYSASM
------------------------------------------------------------------------------------------ --------------- --------------- ---------------
SYS                                            TRUE        TRUE        FALSE
ZX                                            TRUE        FALSE    FALSE
 
sys@ORCL>!strings /u02/app/oracle/product/11.2.4/db1/dbs/orapworcl
][Z
ORACLE Remote Password file
INTERNAL
AB27B53EDC5FEF41
8A8F025737A9097A
mHD2
7B06550956254585
--给用户zx赋予SYSOPER的权限,可以看到v$pwfile_users的zx行状态发生了变化,但是orapworcl没有变化
sys@ORCL>grant sysoper to zx;
 
Grant succeeded.
 
sys@ORCL>select * from v$pwfile_users;
 
USERNAME                                          SYSDBA      SYSOPER      SYSASM
------------------------------------------------------------------------------------------ --------------- --------------- ---------------
SYS                                            TRUE        TRUE        FALSE
ZX                                            TRUE        TRUE        FALSE
 
sys@ORCL>!strings /u02/app/oracle/product/11.2.4/db1/dbs/orapworcl
][Z
ORACLE Remote Password file
INTERNAL
AB27B53EDC5FEF41
8A8F025737A9097A
mHD2
7B06550956254585
--移除密码文件再移回来,移除密码文件后v$pwfile_users变为空,移回后v$pwfile_users又有记录。
sys@ORCL>! mv /u02/app/oracle/product/11.2.4/db1/dbs/orapworcl /u02/app/oracle/product/11.2.4/db1/dbs/orapworcl_orcl
 
sys@ORCL>select * from v$pwfile_users;
 
no rows selected
 
sys@ORCL>! mv /u02/app/oracle/product/11.2.4/db1/dbs/orapworcl_orcl /u02/app/oracle/product/11.2.4/db1/dbs/orapworcl
 
sys@ORCL>select * from v$pwfile_users;
 
USERNAME                                          SYSDBA      SYSOPER      SYSASM
------------------------------------------------------------------------------------------ --------------- --------------- ---------------
SYS                                            TRUE        TRUE        FALSE
ZX                                            TRUE        TRUE        FALSE
--测试zx用户远程以SYSDBA登录
C:Usersvictor>sqlplus zx/zx@orcl as sysdba
 
SQL*Plus: Release 12.1.0.1.0 Production on 星期四 12月 15 22:34:09 2016
 
Copyright (c) 1982, 2013, Oracle.  All rights reserved.
 
 
连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
 
SQL> show user;
USER 为 "SYS"
--回收用户zx的SYSDBA和SYSOPER权限,v$pwfile_users中的zx记录行没有了,密码文件orapworcl没有变化
sys@ORCL>revoke sysdba,sysoper from zx;
 
Revoke succeeded.
 
sys@ORCL>select * from v$pwfile_users;
 
USERNAME                                          SYSDBA      SYSOPER      SYSASM
------------------------------------------------------------------------------------------ --------------- --------------- ---------------
SYS                                            TRUE        TRUE        FALSE
 
sys@ORCL>!strings /u02/app/oracle/product/11.2.4/db1/dbs/orapworcl
][Z
ORACLE Remote Password file
INTERNAL
AB27B53EDC5FEF41
8A8F025737A9097A
mHD2
7B06550956254585
--再次测试zx用户远程以SYSDBA登录,现在无法登录
C:Usersvictor>sqlplus zx/zx@orcl as sysdba
 
SQL*Plus: Release 12.1.0.1.0 Production on 星期四 12月 15 22:35:17 2016
 
Copyright (c) 1982, 2013, Oracle.  All rights reserved.
 
ERROR:
ORA-01017: invalid username/password; logon denied


    
 
 

您可能感兴趣的文章:

  • Linux平台下Oracle 密码文件重建
  • ORACLE 中修改用户密码的方法
  • 安装Oracle 10g忘记sys密码
  • 登录oracle数据库时密码忘记的解决方法
  • Oracle 忘记密码的找回方法
  • Linux下修改Oracle用户密码
  • 修改Oracle默认用户密码有效期时间
  • Oracle密码文件的使用和维护第1/3页
  • oracle修改scott密码与解锁的方法详解
  • oracle 重置sys密码的方法介绍
  • Oracle 11G密码180天过期后的修改方法
  • 将oracle用户密码设置成只有数字的
  • Oracle用户密码含特殊字符时登陆失败问题
  • Oracle数据库密码文件的使用与维护
  • oracle忘记sys/system/scott用户密码的解决方法
  • oracle中不知道某数据库用户密码的情况下也能登陆
  • Oracle 密码丢失解决方法祥述
  • 怎样拒绝Oracle数据库的密码出现@符号
  • Oracle数据库密码出现@符号的解决
  • Oracle用户密码含有特殊字符导致无法登陆解决方法
  • Oracle 10g各个帐号的访问权限、登录路径、监控状态命令查询等等
  • 学习登录oracle数据库时常用的操作命令
  • asp.net使用ODP即oracle连接方式的的防注入登录验证程序
  • Oracle限制IP登录
  • Oracle 10g的DBA无法登录解决方案
  • [Oracle] 如何使用触发器实现IP限制用户登录
  • Linux下安装Metasploit破解Oracle登录用户名密码
  • Oracle 登录产生了01033错误
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Oracle数据库访问参数文件的顺序
  • Oracle 对数据文件大小的限制
  • Oracle移动数据文件到新分区步骤分析
  • 在jsp文件中怎么设置oracle的路径:很简单的,只是因为我不会;
  • Oracle的spfile参数文件
  • linux下通过对文件读取方式查询oracle的版本信息
  • 求高手指点shell导入.dat文件到ORACLE数据库
  • jsp文件连接oracle失败
  • linux 安装 oracle 运行./runinstall 提示没有这个文件
  • oracle删除文件后数据库启动不了的处理方法
  • 请教:为什么删除不掉?我用超级用户删除某一文件夹rm -R oracle失败。
  • Oracle控制文件多元化处理
  • Oracle数据库逻辑备份的SH文件
  • 利用多个转储文件导出大量Oracle数据
  • 50分的题:如何给oracle减肥?在linux多目录的环境下查找体积最大的单个文件??
  • 用oracle pl/sql 从A unix机器,去读取B unix机器上的一个文件,怎么实现?
  • 读取oracle数据库表写文件慢
  • 如何向oracle中写入一个大文件?谢谢!
  • jsp文件上传smartupload到oracle数据库中没有longblob的数据类型如何处理的?
  • 用Jbuilder编译文件,提示找不到oracle驱动?
  • Oracle 12c发布简单介绍及官方下载地址
  • 在linux下安装oracle,如何设置让oracle自动启动!也就是让oracle那个服务自动启动,不是手动的
  • oracle 11g最新版官方下载地址
  • 请问su oracle 和su - oracle有什么不同?
  • mysql iis7站长之家
  • 虚拟机装Oracle R12与Oracle10g
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍
  • Oracle 数据库开发工具 Oracle SQL Developer
  • 如何设置让Oracle SQL Developer显示的时间包含时分秒
  • Oracle EBS R12 支持 Oracle Database 11g
  • Oracle 10g和Oracle 11g网格技术介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3