oracle sysdba级用户的认证方式

时间:2023-01-21 04:07:51 Oracle认证 我要投稿
  • 相关推荐

oracle sysdba级用户的认证方式

  经过系统化的实训,让这部分人群能够迅速掌握Oracle最新的核心技术,并能胜任企业大型数据库管理、维护、开发工作。下面是小编整理的关于oracle sysdba级用户的认证方式,欢迎大家参考!

  Oracle对于普通账户和超级管理员(指sysdba和sysoper)的认证机制不一样,前者是通过数据字典,后者主要是通过操作系统验证和密码文件验证。因此一般提到操作系统认证或密码文件认证,针对的都是超级管理员的认证。

  操作系统认证

  对于操作系统认证,其实蛮简单的,只需要将该用户添加到dba(针对sysdba权限)或oper(针对sysoper权限)组中,就可以使用 "sqlplus / as sysdba"方式登陆

  在Linux环境下,可通过以下命令添加属组:usermod -g dba test -->>test是用户名

  能否使用操作系统身份认证,取决于$ORACLE_HOME/network/admin/sqlnet.ora中SQLNET.AUTHENTICATION_SERVICES的取值。

  SQLNET.AUTHENTICATION_SERVICES = none | all | ntf(windows)

  none : 表示关闭操作系统认证,只能密码认证。

  all : 操作系统认证和密码认证均可。

  nts : 用于windows平台。

  当 SQLNET.AUTHENTICATION_SERVICES = none时,会报以下错误:

  [oracle@node1 admin]$ sqlplus / as sysdba

  SQL*Plus: Release 11.2.0.4.0 Production on Fri Jan 9 23:14:18 2015

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

  ERROR:

  ORA-01017: invalid username/password; logon denied

  若用密码登陆则没有问题

  [oracle@node1 admin]$ sqlplus sys/oracle as sysdba

  SQL*Plus: Release 11.2.0.4.0 Production on Fri Jan 9 23:17:31 2015

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

  Connected to:

  Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - Production

  With the Partitioning, Automatic Storage Management, OLAP, Data Mining

  and Real Application Testing options

  SQL>

  密码文件认证

  这种方式在实际环境中较为普遍,利用的是orapwd工具创建密码文件。

  在密码文件认证中,有一个参数十分重要:remote_login_passwordfile,该参数有三个值,默认为exclusive

  none----不使用密码文件认证

  exclusive---需要密码文件认证 自己独占使用

  shared ---需要密码文件认证 不同实例dba用户可以共享密码文件

  密码文件的默认位置为:$ORACLE_HOME/dbs

  密码文件的查找顺序:orapw --> orapw --> Failure

  所以在创建密码文件时filename只能为orapw或者orapw

  外部认证(External Authentication)

  若对用户采用外部认证,则只有用户的账号由Oracle管理,密码和用户登录的认证则通过外部服务来管理。外部认证常见的有操作系统认证和网络认证。

  外部认证之操作系统身份验证

  此技术使用与操作系统用户同样的名称创建Oracle用户,但前面加上了os_authent_prefix参数指定的字符串,默认为ops$,下面我们来看看官档对该参数的说明:

  OS_AUTHENT_PREFIX specifies a prefix that Oracle uses to authenticate users attempting to connect to the server. Oracle concatenates the value of this parameter to the beginning of the user's operating system account name. When a connection request is attempted, Oracle compares the prefixed username with Oracle usernames in the database.

  The default value of this parameter is OPS$ for backward compatibility with previous versions. However, you might prefer to set the prefix value to "" (a null string), thereby eliminating the addition of any prefix to operating system account names.

  可见,用ops$只是为了向前兼容。

  下面,我们来实验一下。

  一、创建操作系统用户

  [root@node1 ~]# useradd test

  二、创建Oracle用户并授予相应的权限

  SQL> create user ops$test identified externally;

  SQL> grant create session to ops$test;

  三、用test用户登录数据库

  [test@node1 ~]$ /u01/app/oracle/product/11.2.0.4/db_1/bin/sqlplus /

  Error 6 initializing SQL*Plus

  SP2-0667: Message file sp1.msb not found

  SP2-0750: You may need to set ORACLE_HOME to your Oracle software directory

  报以上错误,根据提示,我们为ORACLE_HOME设置相应的值

  在/home/test/.bash_profile中添加如下值:

  export ORACLE_BASE=/u01/app/oracle

  export ORACLE_HOME=$ORACLE_BASE/product/11.2.0.4/db_1

  重新用test用户登录数据库

  [test@node1 ~]$ /u01/app/oracle/product/11.2.0.4/db_1/bin/sqlplus /

  SQL*Plus: Release 11.2.0.4.0 Production on Sat Jan 10 01:14:53 2015

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

  ERROR:

  ORA-12162: TNS:net service name is incorrectly specified

  Enter user-name:

  又报TNS:net service name is incorrectly specified错误。

  怀疑没有指定相应的SID,在/home/test/.bash_profile中添加如下值:

  export ORACLE_SID=orcl

  重新用test用户登录

  [test@node1 ~]$ /u01/app/oracle/product/11.2.0.4/db_1/bin/sqlplus /

  SQL*Plus: Release 11.2.0.4.0 Production on Sat Jan 10 01:18:22 2015

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

  Connected to:

  Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - Production

  With the Partitioning, Automatic Storage Management, OLAP, Data Mining

  and Real Application Testing options

  SQL> show user

  USER is "OPS$TEST"

  终于成功登录!

  这个是在本地环境下的操作系统认证,即test与oracle数据库在同一个主机上。

  倘若不在同一个主机上,必须将remote_os_authent设置为TRUE。

  外部认证之网络认证

  Network authentication is performed using Oracle Advanced Security, which can be configured to use a third-party service such as Kerberos. If you are using Oracle Advanced Security as your only external authentication service, then the REMOTE_OS_AUTHENT parameter setting is irrelevant, becauseOracle Advanced Security only allows secure connections.

  关于外部认证,我们来看看官方文档的说明

  1> More choices of authentication mechanism are available, such as smart cards, fingerprints, Kerberos, or the operating system.

  2> Many network authentication services, such as Kerberos support single sign-on, enabling users to have fewer passwords to remember.

  3> If you are already using some external mechanism for authentication, such as one of those listed earlier, then there may be less administrative overhead to use that mechanism with the database as well.

  Easy Connect

  [oracle@node3 ~]$ sqlplus system/oracle@192.168.2.12:1521/sz.being.com

  其中,192.168.2.12是数据库所在主机的IP,1521是数据库所在主机的监听端口,sz.being.com是数据库提供的服务名

【oracle sysdba级用户的认证方式】相关文章:

Oracle认证:Oracle避免全表扫描方式08-26

Oracle认证考试06-05

Oracle认证:ORACLE绑定变量BINDPEEKING08-26

Oracle认证考试科目06-05

Oracle认证报考流程06-03

Oracle认证考试介绍06-20

oracle认证考试详情06-20

Oracle认证:Oracle内存结构研究-PGA篇08-26

Oracle认证考试指南08-26