当前位置: 代码迷 >> Oracle管理 >> 关于linux上oracle数据库os认证的有关问题
  详细解决方案

关于linux上oracle数据库os认证的有关问题

热度:50   发布时间:2016-04-24 04:18:01.0
关于linux上oracle数据库os认证的问题
小弟按照oralce的安装手册在redhat 6.1上安装的oracle 11g数据库。
在安装数据库的时候按照手册建立了oinstall dba两个组和oracle用户,并且把oracle用户添加到了oinstall 和 dba两个用户组。
安装完毕数据库之后,想做数据库随服务器自动启动。
1 已经编辑了dbstart中的 ORACLE_HOME_LISTNER=$ORACLE_HOME

2 已经编辑/etc/oratab 中的
DB1:/u01/app/oracle/product/11.2.0/dbhome_1:Y
DB2:/u01/app/oracle/product/11.2.0/dbhome_1:Y
DB3:/u01/app/oracle/product/11.2.0/dbhome_1:Y

3 编辑了/etc/rc.local
su oracle -lc  /u01/oracle/bin/dbstart
su oracle -lc  /u01/oracle/bin/lsnrctl start

重启oracle还是没有启动

然后直接尝试dbstart 
提示ORA-01031 权限不足。

我估计是没有启用OS严重的关系,
然后编辑:
SQLNET.AUTHENTICATION_SERVICES = (ALL)
重启服务器后,使用sqlplus / as sysdba
提示:
[oracle@oracleDB1 admin]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on Tue Jun 24 11:08:55 2014

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

ERROR:
ORA-01031: insufficient privileges


Enter user-name: 
还是要输入用户名和密码。

默认的sys 改成 change_on_install 初始密码还是不行。

请问各位大哥,我应该如何解决?


------解决方案--------------------
表示按照安装步骤,未遇到过此问题。帮顶!
------解决方案--------------------
是否忘记编辑 oracle 用户的 .bash_profile 文件了?

echo $ORACLE_SID
echo $ORACLE_BASE
echo $ORACLE_HOME
echo $PATH
... ....
 


一、确定 oracle 用户属于 dba 组 (id 命令)
二、确定 oracle 用户对 $ORACLE_HOME 路径有读写权限。(ls -l 命令)


------解决方案--------------------
Troubleshooting ORA-1031 when connecting as SYSDBA using OS Authentication

1. Check whether the OS user is part of the OSDBA group.

A. See what are the groups of the user:

[oracle@seclin4 ~]$ id
uid=500(oracle) gid=500(oinstall) groups=500(oinstall),501(dba) context=user_u:system_r:unconfined_t

B. See what is the OSDBA group defined in file $ORACLE_HOME/rdbms/lib/config.[cs]

Example for Linux:

[oracle@seclin4 ~]$ cat $ORACLE_HOME/rdbms/lib/config.c

/* SS_DBA_GRP defines the UNIX group ID for sqldba adminstrative access. */
/* Refer to the Installation and User's Guide for further information. */

/* IMPORTANT: this file needs to be in sync with
rdbms/src/server/osds/config.c, specifically regarding the
number of elements in the ss_dba_grp array.
*/

#define SS_DBA_GRP "dba"
#define SS_OPER_GRP "dba"
#define SS_ASM_GRP ""

char *ss_dba_grp[] = {SS_DBA_GRP, SS_OPER_GRP, SS_ASM_GRP};



In the above examples we see that the user is a member of the "dba" group which matches the value of  SS_DBA_GRP in config.c. If the groups seem to be correctly configured but the connection is still failing use the script from Note 67984.1  to see whether Oracle evaluates correctly the group membership.

Intermittent ora-1031 errors for sysdba OS authentication can occur because of the nscd service that caches information from the /etc/passwd and /etc/group as configured in /etc/nscd.conf, if stopping this service makes the problem go away then please refer to the OS vendor.







2. Check the value of the SQLNET.AUTHENTICATION_SERVICES parameter in file $ORACLE_HOME/network/admin/SQLNET.ORA

 

On Unix

This parameter should not be set if no strong authentication method is used. If such a method is being used then set the parameter to one of the following values: 

 

SQLNET.AUTHENTICATION_SERVICES = (ALL)
 

or

 

SQLNET.AUTHENTICATION_SERVICES = (BEQ,<the strong auth method>)

Where  <the strong auth method> can be any combination of the following values: TCPS, KERBEROS5, RADIUS

NOTE: If the definition of SQLNET.AUTHENTICATION_SERVICES is preceded by a leading blank space, an ORA-1031 error may occur

------解决方案--------------------
引用:
  相关解决方案