分享

Oracle的连接和验证方式

 wghbeyond 2010-12-29

连接权限
要连接oracle数据库的用户必须有create session系统权限或CONNECT角色。
连接方式
1. 本地连接
$ sqlplus user/password
2. 远程连接,service即tnsnames.ora中配置的服务
$ sqlplus user/password@service

SQL*PLUS连接方法
1. $ sqlplus "user/password[@service] [as sysdba]"
2. $ sqlplus /nolog
SQL> conn user/password[@service] [as sysdba]
连接oracle实例时的验证方式
对于sysdba和sysoper来说,验证方式为:
1. 口令文件验证,必须要有口令文件
2. 操作系统验证,用户必须为dba组
对于普通数据库用户(口令文件中没有的用户)来说,验证方式为:
1. 数据字典验证,数据库为open状态
2. 操作系统验证,操作系统用户为对应的数据库externally认证用户。由于不能将sysdba或sysoper权限赋予使用externally认证的oracle数据库用户,所以也要求数据库为open状态。
验证相关配置和参数
1. sqlnet.ora的配置
参数SQLNET.AUTHENTICATION_SERVICES,设置为none时为口令文件验证,设置为all支持所有验证方式,设置为nts支持Windows NT操作系统认证。
删除这个参数时,Windows下为口令文件认证,Unix/Linux下为操作系统认证。
2. 参数remote_login_passwordfile
remote_login_passwordfile设置为none时,为操作系统验证,设置为shared或exclusive时为口令文件验证。在oracle 10g中,设置为shared或exclusive时,都会按照orapwSID、orapw的顺序查找口令文件,即优先使用orapwSID文件。但设置为shared时无法修改口令文件中的密码,会报错。
ORA-01999: password file cannot be updated in SHARED mode
口令文件与sysdba
1. 口令文件默认路径为$ORACLE_HOME/dbs,文件名为orapwSID,二进制文件,修改将导致文件无效。
2. 若口令文件丢失,可以使用orapwd命令新建,参数指定口令文件的路径,密码,允许作为sysdba或sysoper连接的不同用户的最大数目。如果超过该值,则必须创建一个新的口令文件。口令文件默认只有一个用户SYS。
3. 使用SYS用户赋予其他oracle数据库用户sysdba或sysoper权限,其实是将该数据库用户的用户名和密码添加到口令文件中。
5. DBA角色不拥有sysdba和sysoper权限。
4. 不能将sysdba或sysoper权限赋予角色,也不能赋予使用externally认证的oracle数据库用户。
6. SYS用户只能以sysdba或sysoper登陆。
7. 默认情况下SYSTEM用户拥有DBA角色,但是没有sysdba和sysoper权限。
SYSOPER和SYSDBA的区别
以sysdba登陆时schema为sys,以sysoper登陆时schema为public

SYSOPER

RECOVER DATABASE
ALTER DATABASE BACKUP CONTROLFILE TO
ALTER DATABASE OPEN | MOUNT
SHUTDOWN
STARTUP
ALTER DATABASE ARCHIVELOG
RESTRICTED SESSION

SYSDBA

SYSDBA SYSOPER PRIVILEGES WITH ADMIN OPTION
CREATE DATABASE
ALTER TABLESPACE BEGIN/END BACKUP
RESTRICTED SESSION
RECOVER DATABASE UNTIL


SQL*PLUS不同的连接和验证方式
1. $ sqlplus "user/password@service as sysdba"
作为sysdba远程连接,口令文件验证,要求监听已经启动。
若数据库在该监听中进行了静态注册,即通过SID,实例任何状态都可以连接,使用TCP协议。
若为动态注册,即通过service_name连接,则无法作为sysdba远程连接到idle或nomount状态的实例。
2. $ sqlplus "user/password as sysdba"
非操作系统dba组用户,作为sysdba本地连接,口令文件验证,使用IPC协议,无需监听器。
3. $ sqlplus "/as sysdba"
操作系统dba组用户,作为sysdba本地连接,操作系统验证,使用IPC协议,无需监听器。
dba组用户无论输入什么用户和密码,都将验证通过。
4. $ sqlplus "user/password@service"
普通数据库用户远程连接,数据字典验证,要求监听已经启动,数据库为open状态,使用TCP协议。
5. $ sqlplus "user/password"
普通数据库用户本地连接,数据字典验证,要求数据库为open状态,使用IPC协议,无需监听器。
6. $ sqlplus "/ @service"
普通数据库用户远程连接,操作系统验证,要求监听已经启动,数据库为open状态,使用TCP协议。
7. $ sqlplus "/"
普通数据库用户本地连接,操作系统验证,要求数据库为open状态,使用IPC协议,无需监听器。
普通用户的操作系统验证配置
  实例参数remote_os_authent默认为false。这个参数控制某个用户是否能够在不需要给出口令的情况下从远程计算机上连接数据库。现代计算机系统不再需要执行这种操作,但是仍然保留了改功能。
  无论是本地的还是远程的身份验证都涉及到os_authent_prefix实例参数。默认值为"ops$"的os_authent_prefix参数指定了一个前缀,操作系统用户名在被映射为oracle数据库用户名之前必须应用这个前缀。

  使用下面的语句可以修改remote_os_authent参数,重新启动数据库后生效。
SQL> alter system set remote_os_authent=true scope=spfile;

  除非将os_authent_prefix参数设置为空,否则在建立需要操作系统验证的数据库用户时,需要加上os_authent_prefix前缀。
SQL> create user ops$ocean identified externally;
SQL> grant create session to ops$ocean;

  然后,无论远程或本地,非DBA组的操作系统用户ocean,不用输入用户名和密码就可以连接到oracle实例
SQL> conn / @test02
SQL> show user
USER is "OPS$OCEAN"

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多