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"
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/23754390/viewspace-670054/
,如需转载,请注明出处,否则将追究法律责任。