Oracle SYS用户无法登录数据库ORA-12162的解决方法

 更新时间:2025年08月23日 11:57:00   作者:Albert Tan  
文章解析Oracle SYSDBA用户OS登录错误(ORA-12162)原因及解决方法,指出未设置ORACLE_HOME和ORACLE_SID环境变量导致系统无法识别实例,进而无法连接数据库,同时介绍了SYS用户权限、数据字典管理及两种登录认证方式(操作系统认证和数据库认证)

错误详情

[Oracle@orcl bin]$ ./sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Mon Aug 18 08:12:04 2025
Copyright (c) 1982, 2013, Oracle.  All rights reserved.
ERROR:
ORA-12162: TNS:net service name is incorrectly specified

OS登录解析

注意:Oracle 数据库使用SYSDBA用户在OS级别登录时,需要满足最基本的两个条件

  1. 必须设置ORACLE_HOME路径,并将其加入到PATH变量中
  2. 必须设置ORACLE_SID变量,ORACLE_SID表明需要登录的数据库

错误原因

  1. 虽然此处报错显示未指定正确监听名称,但是SYSDBA用户是通过操作系统认证的,无需通过监听识别即可直接登录数据库。当前库并未设置ORACLE_HOME和ORACLE_SID变量,导致无法程序无法识别实例,从而无法连接数据库。
  2. 将ORACLE_HOME添加到PATH中的目的是可以直接运行Oracle的相关程序,如:sqlplus、lsnrctl、tnsping等常用工具。无需再进入到文件夹中调用执行。

解决方案

1、设置变量

$ export ORACLE_BASE=/u01/db/11.2.0.4
$ export ORACLE_HOME=$ORACLE_BASE/orcl
$ export PATH=$ORACLE_HOME/bin:$PATH
$ export ORACLE_SID=ORCL

2、登录即可

[oracle@orcl ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Fri Aug 22 20:48:44 2025
Copyright (c) 1982, 2013, Oracle.  All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL>

理解SYS用户

1、介绍
Oracle数据库中的 SYS用户 是系统内置的超级管理员账户,具有最高权限,所有Oracle的数据字典的基表和视图都存放在SYS用户中,承担数据库核心管理任务。重点:不受数据库的限制访问和管理整个数据库的能力。

2、特点

  1. 最高权限:SYS用户拥有DBA、SYSDBA、SYSOPER等角色或权限。SYS用户可以进行创建/删除用户、表空间、数据库实例、备份和恢复等高级操作,是Oracle权限最高的用户。
  2. 数据字典:所有Oracle的数据字典的基表和视图都存放在SYS用户中,这些基表和视图对于Oracle的运行至关重要。
  3. 密码管理:SYS用户通过OS级别的密码文件对其密码进行管理,虽然可以通过SQL语法直接修改密码,但前提是OS级别的密码文件必须先存在,否则无法通过SQL语法直接修改SYS用户的密码。默认密码是change_on_install
  4. 登录方式:SYS用户必须以SYSDBA身份登录。

3、SYS登录认证方式

  1. 操作系统认证:当完成数据库安装后,可直接通过sysdba用户登录数据库,而不会验证用户名和密码,该认证方式的用户称为特权用户。操作系统认证主要通过sqlnet.ora文件控制,一旦取消该认证,sys用户将无法直接登录数据库,需要校验其密码正确才可以登录。
# 取消操作系统认证
$ cd $ORACLE_HOME/network/admin
$ vi sqlnet.ora
SQLNET.AUTHENTICATION_SERVICE=NONE  -- 默认不存在该参数,设置为NTS即开启
[oracle@orcl ~]$  sqlplus / as sysdba  -- 登录
SQL*Plus: Release 11.2.0.4.0 Production on Fri Aug 22 20:48:44 2025
Copyright (c) 1982, 2013, Oracle.  All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL>
  1. 数据库认证:该方式一般针对普通用户而言,主要是将密码记录在数据库的表中,但用户需要登录时必须输入正确的用户名和密码加监听服务连接到数据库中进行校验,校验正确方可登录。
[oracle@orcl ~]$ sqlplus apps/apps@orcl  -- 普通用户登录方式
SQL*Plus: Release 11.2.0.4.0 Production on Fri Aug 22 20:52:50 2025
Copyright (c) 1982, 2013, Oracle.  All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL>

到此这篇关于Oracle SYS用户无法登录数据库-ORA-12162的文章就介绍到这了,更多相关Oracle SYS用户无法登录内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Oracle date如何比较大小分析

    Oracle date如何比较大小分析

    本文将详细介绍Oracle date如何比较大小,需要了解更多的朋友可以参考下
    2012-11-11
  • Oracle中BLOB、CLOB的读取和写入方式

    Oracle中BLOB、CLOB的读取和写入方式

    Oracle数据库中,大类型字段(LOB)用于存储大量数据,包括文本、图像、视频等,主要类型有CLOB、BLOB、NCLOB和BFILE,CLOB用于存储大段文本,BLOB用于存储二进制数据,NCLOB适用于多国语言文本,而BFILE存储外部文件的引用
    2024-10-10
  • Oralce数据库健康和性能巡检监控的25个SQL脚本

    Oralce数据库健康和性能巡检监控的25个SQL脚本

    Oracle日常检查项的SQL脚本:涵盖表空间状态、日志、锁、缓存命中率、SQL性能、死锁处理等,确保数据库稳定运行,关键指标如缓冲区、数据字典命中率需达标,及时处理失效索引、僵死进程及扩展异常对象
    2025-05-05
  • Oracle数据库TNS常见错误的解决方法汇总

    Oracle数据库TNS常见错误的解决方法汇总

    这篇文章主要介绍了Oracle数据库TNS常见错误的解决方法,需要的朋友可以参考下
    2014-07-07
  • Oracle数据库系统紧急故障处理方法

    Oracle数据库系统紧急故障处理方法

    Oracle数据库系统紧急故障处理方法...
    2007-03-03
  • 详解Oracle在out参数中访问光标

    详解Oracle在out参数中访问光标

    这篇文章主要介绍了详解Oracle在out参数中访问光标的相关资料,这里提供实例代码帮助大家学习理解这部分内容,希望能帮助到大家,需要的朋友可以参考下
    2017-08-08
  • Oracle逗号分隔列转行实现方法

    Oracle逗号分隔列转行实现方法

    在做系统时,经常会遇到在一个字段中,用逗号或其他符号分隔存储多个信息,例如保存某个用户的一对多权限时,在权限组这个字段中,就会逗号分隔保存多个权限编号。
    2010-12-12
  • PLSQL环境配置详细图文步骤

    PLSQL环境配置详细图文步骤

    PL/SQL是Oracle对行业标准SQL的过程性扩展,下面这篇文章主要给大家介绍了关于PLSQL环境配置的详细图文步骤,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2024-03-03
  • ORACLE 如何查询被锁定表及如何解锁释放session

    ORACLE 如何查询被锁定表及如何解锁释放session

    后台数据库操作某一个表时发现一直出于假死状态,可能是该表被某一用户锁定,接下来为你详细介绍下查询被锁定表及如何解锁,感兴趣的你可以参考下,希望可以帮助到你
    2013-03-03
  • oracle行转列方法集合汇总(推荐!)

    oracle行转列方法集合汇总(推荐!)

    工作中我们经常会碰到行转列的情况,下面这篇文章主要给大家介绍了关于oracle行转列方法集合的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-04-04

最新评论