问题一: 刚刚安装完毕Oracle之后,尝试sqlplus登陆报错,TNS:net service name is incorrectly specified

image

参考文章:关于环境变量ORACLE_SID简单谈下

说明:环境变量ORACLE_SID未设置正确,将环境变量ORACLE_SID设置为之前安装的数据库实例名即可;export只是当前会话环境变量生效,修改文件 .bash_profile即可

image

 

假设环境变量ORACLE_SID没有设置对,数据库实例不存在,会报这样错误:

ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file ‘/data/app/oracle/product/dbhome_1/dbs/initolcom115DB.ora’

image

 

 

问题二.Linux conn sys as sysdba 即使不输入密码、密码输入错误也能登陆进入SYS用户;或者 conn  / as sysdba 可以直接登陆数据库不用输入密码

在同事的机器Windows上测试,发现Oracle同样不需要密码、密码错误也可以登陆SYS用户;

    说明:这属于操作系统级别的认证方式,Linux下用户为Oracle(我觉得属于  数据库DBA组 的用户)的用户以SYSDBA登陆数据库不验证密码正确性;

Windows下取消操作系统认证方式:

修改$ORACLE_HOME/network/admin目录下的sqlnet.ora文件

      SQLNET.AUTHENTICATION_SERVICES= (NTS)

改为如下即可,在同事的机器上发现不用重启数据库就能生效;

    SQLNET.AUTHENTICATION_SERVICES= (NONE)

 

Linux下取消操作系统认证方式:

   我在linux下没有找到该sqlnet.ora文件,通过验证,我得出的结论是,操作系统认证  不验证用户以SYSDBA方式登陆时候的密码正确性,只有在当前用户归属于数据库DBA组的时候;

Redhat6.8安装Oracle11gR2 这是我之前记录的安装Oracle的过程,其中安装过程中指定了两个数据库DBA组 dba 以及普通用户组oinstall

新增一个用户,归属于 oinstall组,测试结果如下:

image

将其用户组改为dba组,命令 usermod –G  dba  lbb

image

 

结论,linux下操作系统认证  用户为数据库dba组才有权限 无视密码 直接conn / as sysdba登陆,这也是为啥有时候用户登陆不需要密码也能SYSDBA登陆数据库,所以Oracle安装时候还是指定两个用户组;linux下的sqlnet.ora文件我没发现哪里有。

 

问题三.  linux其他用户登陆Oracle时候lost contact问题:

image

解决方案:到$ORACLE_HOME/bin目录下执行  chmod 6751 oracle 或者  chmod +s oracle 命令即可;

非Oracle用户lost contact解决方案  非Oracle用户lost contact解决方案2

 

版权声明:本文为lvbinbin2yujie原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/lvbinbin2yujie/p/10506618.html