ORA-01031: insufficient privileges 解决方法(linux)

本文详细阐述了解决SQL Plus登录权限不足问题的方法,包括检查密码文件、远程登录密码文件设置以及修正SQLNet配置,最终成功实现登录。

今天早上装了两台虚拟机,使用sqlplus /as sysdba 登录的时候出现

 

ORA-01031:insufficient privileges

输入用户密码依然出现错误



ERROR:
ORA-01031: insufficient privileges


使用sqlplus sys/oracle as sysdba登录检查


检查1、密码文件



SQL> select * from v$pwfile_users
  2  ;


USERNAME                       SYSDB SYSOP SYSAS
------------------------------ ----- ----- -----
SYS                            TRUE  TRUE  FALSE

如果为空值,那么手动创建密码文件

orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SID password=oracleentries=5

force=y

注意sid是区分大小写的

 

2、

SQL> show parameter password


NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
remote_login_passwordfile            string      EXCLUSIVE

总共三个值,exclusive独占模式,shared,none

修改方法

alter system set remote_login_passwordfile=EXCLUSIVE scope=spfile;

 

3、检查sqlnet.ora

[oracle@oracle1 admin]$ cat sqlnet.ora
SQLNET.AUTHENTICATION_SERVICES=(NTS)
NAMES.DIRECTORY_PATH=(TNSNAMES,EZCONNECT)

 

3个点都没有问题,为什么还是不能os登录呢?

 

回想之前的各项操作,发现sqlnet.ora被改动过,NTS的设置在windows是可以直接登录的,但linux和windows恰恰相反,linux设置的值为ALL或者直接将该行注释。

测试:

[oracle@oracle1 admin]$ cat sqlnet.ora
SQLNET.AUTHENTICATION_SERVICES=(ALL)
NAMES.DIRECTORY_PATH=(TNSNAMES,EZCONNECT)

 

[oracle@oracle1 admin]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.3.0 Production on Mon Apr 18 19:30:05 2016


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




Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, Oracle Label Security, OLAP, Data Mining,
Oracle Database Vault and Real Application Testing options


SQL>

登录成功。

 

Sqlnet的说明详情请查看oracle官方说明

 

 

 

### Linux环境下解决Oracle数据库ORA-01031错误 #### 错误描述 在Linux环境中遇到`ORA-01031: insufficient privileges`错误意味着当前用户尝试执行的操作缺乏必要的权限。此问题可能发生在启动实例、连接到数据库或运行特定存储过程时。 #### 权限验证与调整 为了确保有足够的权限来操作Oracle数据库,在命令行下切换至具有适当权限的账户非常重要。通常情况下,安装和管理Oracle数据库的服务账号名为`oracle`[^1]。 对于文件系统的访问控制列表(ACL),应确认如下路径下的配置文件拥有正确的读写权限: ```bash cd $ORACLE_HOME/network/admin/ chmod 644 sqlnet.ora tnsnames.ora listener.ora ls -l sqlnet.ora tnsnames.ora listener.ora ``` 上述命令会设置这些重要网络配置文件为只读模式给其他用户组成员,并允许所有者完全控制它们[^3]。 #### 数据库对象权限授予 如果问题是由于试图调用某个PL/SQL包而引发,则可能是该程序单元本身存在安全限制。此时可以考虑通过DBA角色向目标用户授予权限: ```sql GRANT EXECUTE ON REPORT.SP_CREATETABLE TO your_user; ``` 这条语句赋予指定用户执行特定存储过程的能力,从而避免因缺少特权而导致的异常终止。 #### 验证操作系统级身份认证 有时即使是在正确设置了环境变量之后仍然无法正常工作,这往往是因为OS级别的认证机制出现了偏差。可以通过编辑`$ORACLE_HOME/dbs/orapw<sid>`文件的方式重新初始化密码文件,或者利用`orapwd`工具创建新的口令表单以恢复默认行为[^4]。 最后提醒一点,任何涉及修改系统核心组件的行为都应当谨慎行事并做好充分备份准备!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值