这篇文章主要为大家展示了“SYS用户登录Oracle报错ORA-01031怎么办”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“SYS用户登录Oracle报错ORA-01031怎么办”这篇文章吧。

自己写了一个脚本在测试环境运行脚本的时候,导致数据库异常的宕掉之后,然后重新连接就出现了下面的问题,下面是场景还原与解决的过程:

[oracle@seiang ~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Tue Jan 30 08:39:21
2018

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

Connected.

SYS@seiang11g>shutdown immediate

ORA-24324: service handle not
initialized

ORA-24323: value not allowed

ORA-01089: immediate shutdown
in progress – no operations are permitted

1、尝试强制关闭和打开数据库,都出现报错ORA-01031: insufficient privileges

SYS@seiang11g>shutdown abort

ORA-01031: insufficient
privileges

SYS@seiang11g>startup

ORA-01031: insufficient
privileges

2、接下来尝试去查看数据库的参数,提示说没有登录

SYS@seiang11g>show parameter password

ERROR:

ORA-01012: not logged on

3、下面使用SYS连接到数据库实例,看到提示说连接到一个空闲的实例

SYS@seiang11g>conn / as sysdba

Connected to an idle
instance.

4、接下来,尝试重新启动数据库,再次提示说没有登录

SYS@seiang11g>startup

ORA-01012: not logged on

5、再次尝试强制的关闭数据库,然后在重新启动数据库,启动成功

SYS@seiang11g>shutdown abort

ORACLE instance shut down.

SYS@seiang11g>

SYS@seiang11g>startup

ORACLE instance started.

Total System Global Area 1252663296 bytes

Fixed Size                 
2252824 bytes

Variable Size            
738201576 bytes

Database Buffers         
503316480 bytes

Redo Buffers               
8892416 bytes

Database mounted.

Database opened.

数据库启动成功!

补充说明:

对于ORA-01031: insufficient privileges报错,常见的一些原因和解决思路:

1、如果是多个数据库实例时候,set ORACLE_SID= ''

2、检查sqlnet.oraWINDOWS下位于%ORACLE_HOME%NETWORKADMIN目录)是否包含这句:
SQLNET.AUTHENTICATION_SERVICES=(NTS)
,没有的话加上;

3、检查登陆windows的用户(administrator或安装oracle时候使用的用户)是不是在包含在ORA_DBA组中,域用户没有连上域服务器时就可能出现这种现象。

3、要保证 remote_login_passwordfile 参数 = EXCLUSIVE .

4、查看口令文件和数据库实例是否是对应的,如果不对应,则需要使用orapwd重新生成口令文件