Oracle 常见报错问题汇总

不念不忘少年蓝@ 2023-09-25 16:58 189阅读 0赞

文章目录

  • Oracle 常见报错问题汇总
    • 一、序言
    • 二、Oracle 常见报错问题汇总
        1. 报错:ORA-00020: maximum number of processes (30) exceeded
        1. 报错:ORA-01017: invalid username/password; logon denied
        1. 报错:ORA-01031: insufficient privileges
        1. 报错:”ORA-01034: ORACLE not available” 和 “ORA-27101: shared memory realm does not exist”
        1. 报错:“ORA-00119: invalid specification for system parameter LOCAL_LISTENER” 和 “ORA-00132: syntax error or unresolved network name ‘LISTENER_ORCL’”
        1. 报错:TNS-03505: 无法解析名称
        1. 报错:ORA-12154: TNS: 无法解析指定的连接标识符
        1. 报错:ORA-12504: TNS: 监听程序在 CONNECT_DATA 中未获得 SERVICE_NAME
        1. 报错:ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务
        1. 报错:ORA-12518: TNS: 监听程序无法分发客户机连接
        1. 报错:ORA-12541: TNS: 无监听程序
        1. 报错:ORA-12520: TNS: 监听程序无法为请求的服务器类型找到可用的处理程序
        1. 报错:ORA-12523: TNS: 监听程序无法找到适用于客户机连接的例程
        1. 报错:ORA-12560: TNS: 协议适配器错误
        1. 报错:启动监听服务失败(无法成功启动监听服务,弹框提示内容:“本地计算机上的OracleOraDb11g_home1TNSListener服务启动后停止。某些服务在未由其他服务或程序使用时将自动停止。”)
        1. 报错:ORA-32002: cannot create SPFILE already being used by the instance
    • 附录

Oracle 常见报错问题汇总

一、序言

Oracle 报错问题的常规检查方向

0、检查输入

检查输入是否正确。例如:用户名和密码是否正确、命令是否正确、命令格式是否正确、是否选择了正确的数据库、数据库的连接方式是否正确、监听服务是否支持当前选择的数据库连接方式等。

1、检查服务

检查服务是否有启动。
(备注:数据库服务 OracleServiceXXX 是一定要启动的,监听服务 OracleOraDb11g_home1TNSListener 是在有远程访问需求时才要启动。)

2、检查环境变量

Path=D:\databases\oracle\oracle_11g\app\administrator\product\11.2.0\dbhome_1\bin;
TNS_ADMIN=D:\databases\oracle\oracle_client\instantclient_21_9\network\admin
NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK

3、检查 Oracle 服务端3个重要文件的配置。重点检查 listener.ora 文件。

检查 Oracle 服务端安装目录下的 NETWORK/ADMIN 子目录(如:D:\databases\oracle\oracle_11g\app\administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN)里的3个文件(listener.ora、tnsnames.ora 和 sqlnet.ora)的配置是否正确。重点检查 listener.ora 文件。

4、检查 Oracle 客户端3个重要文件的配置。重点检查 tnsnames.orasqlnet.ora 文件。

检查 Oracle 客户端目录下的 network\admin 子目录(如:D:\databases\oracle\oracle_client\instantclient_21_9\network\admin)里的3个文件(listener.ora、tnsnames.ora 和 sqlnet.ora)的配置是否正确。重点检查 tnsnames.ora和sqlnet.ora 文件。

二、Oracle 常见报错问题汇总

1. 报错:ORA-00020: maximum number of processes (30) exceeded

场景还原

在CMD窗口使用sqlplus命令

  1. set ORACLE_SID=remoteorcl
  2. sqlplus /nolog
  3. connect / as sysdba

示例:

  1. C:\Users\administrator>set ORACLE_SID=remoteorcl
  2. C:\Users\administrator>sqlplus /nolog
  3. SQL*Plus: Release 11.2.0.1.0 Production on 星期二 3 21 20:43:42 2023
  4. Copyright (c) 1982, 2010, Oracle. All rights reserved.
  5. SQL>
  6. SQL> connect / as sysdba
  7. ERROR:
  8. ORA-00020: maximum number of processes (30) exceeded
  9. SQL>

原因分析
数据库连接数用满,即当前的连接数超出了最大的连接数。在本例中出现这个报错是因为设置的processes数值太小了,只有30,实际运行的processes超过了30。(备注:processes默认值为150)

排查连接数的相关语句:

  1. 0. 设置ORACLE_SID,用于指定连接哪个数据库
  2. set ORACLE_SID=remoteorcl
  3. 1. 以超级管理员身份登录
  4. sqlplus /nolog
  5. connect / as sysdba
  6. (备注:也可以直接使用 sqlplus / as sysdba 这条命令)
  7. 2. 查询当前的连接数
  8. select count(0) from v$process;
  9. 3. 查询最大的连接数(默认值为150
  10. select value from v$parameter where name = 'processes';
  11. (备注:也可以使用 show parameter processes 查询最大的连接数)

解决方案
修改数据库最大连接数,操作如下:

  1. 步骤1:重启数据库服务:OracleServiceXXX
  2. 方式1:通过“服务”界面进行操作,重启数据库服务
  3. 打开“服务”界面,找到数据库服务OracleServiceXXX,点击右键,选择“重新启动”(或者先选择“停止”,在选择“启动”)。
  4. 方式2:通过管理员身份打开控制台执行相关命令,重启数据库服务
  5. 使用管理员身份打开CMD控制台,输入下面命令重启:
  6. 停止数据库服务:net stop OracleServiceXXX
  7. 启动数据库服务:net start OracleServiceXXX
  8. 备注:重启数据库服务OracleServiceXXX的目的是临时解决“ORA-00020: maximum number of processes (30) exceeded”报错导致无法连接登录Oracle数据库的问题(重启数据库服务之后,发现可以连接登录Oracle数据库,再次查询当前连接数,会发现当前连接数变小了)。只有成功连接登录Oracle数据库之后,才能修改最大的连接数。
  9. 步骤2:设置ORACLE_SID,然后以超级管理员身份登录
  10. set ORACLE_SID=remoteorcl
  11. sqlplus /nolog
  12. connect / as sysdba
  13. 步骤3:设置最大的连接数,将processes设置为150(也可以设置得再大一点,比如1000,2000等)
  14. alter system set processes = 150 scope = spfile;
  15. 步骤4:重启数据库,使修改生效。命令如下:
  16. shutdown immediate
  17. startup

备注:关于步骤4,修改最大的连接数processes之后,一定要 重启数据库 或者 重启数据库服务OracleServiceXXX 才能使修改生效。
(1)如果采用 重启数据库 的方式,则在当前的CMD控制台不需要重新连接数据库,就可以直接查询到修改生效后的最大连接数。
(2)如果是采用 重启数据库服务OracleServiceXXX 的方式,则在当前的CMD控制台需要重新连接Oracle数据库(即执行connect / as sysdba 命令连接数据库),才能查询到修改生效后的最大连接数。

示例:

步骤1:重启数据库服务:OracleServiceXXX

方式1:下面是“通过 ‘服务’ 界面操作重启数据库服务”的示例:
在这里插入图片描述

方式2:下面是“通过管理员身份打开控制台执行相关命令重启数据库服务”的示例:

  1. C:\WINDOWS\system32> net stop OracleServiceRemoteOrcl
  2. OracleServiceREMOTEORCL 服务正在停止........
  3. OracleServiceREMOTEORCL 服务已成功停止。
  4. C:\WINDOWS\system32> net start OracleServiceRemoteOrcl
  5. OracleServiceREMOTEORCL 服务正在启动 .......
  6. OracleServiceREMOTEORCL 服务已经启动成功。
  7. C:\WINDOWS\system32>

步骤2~4:“设置ORACLE_SID,然后以超级管理员身份登录” -> “设置最大的连接数” -> “重启数据库,使修改生效”

下面是“修改增加数据库最大连接数”的示例:

  1. C:\Users\administrator>set ORACLE_SID=remoteorcl
  2. C:\Users\administrator>sqlplus /nolog
  3. SQL*Plus: Release 11.2.0.1.0 Production on 星期三 3 22 12:53:11 2023
  4. Copyright (c) 1982, 2010, Oracle. All rights reserved.
  5. SQL> connect / as sysdba
  6. 已连接。
  7. SQL> alter system set processes = 150 scope = spfile;
  8. 系统已更改。
  9. SQL> shutdown immediate
  10. 数据库已经关闭。
  11. 已经卸载数据库。
  12. ORACLE 例程已经关闭。
  13. SQL> startup
  14. ORACLE 例程已经启动。
  15. Total System Global Area 3390558208 bytes
  16. Fixed Size 2180464 bytes
  17. Variable Size 1862273680 bytes
  18. Database Buffers 1509949440 bytes
  19. Redo Buffers 16154624 bytes
  20. 数据库装载完毕。
  21. 数据库已经打开。
  22. SQL>

2. 报错:ORA-01017: invalid username/password; logon denied

场景还原: sqlplus system/******@connect_identifier_remote_orcl

原因分析:用户或密码错误。本次是密码错误。

解决方案:sqlplus system/*********@connect_identifier_remote_orcl

3. 报错:ORA-01031: insufficient privileges

场景还原

  1. C:\Users\administrator>set ORACLE_SID=orcl
  2. C:\Users\administrator>sqlplus /nolog
  3. SQL*Plus: Release 11.2.0.1.0 Production on 星期一 3 13 23:04:51 2023
  4. Copyright (c) 1982, 2010, Oracle. All rights reserved.
  5. SQL> conn / as sysdba;
  6. ERROR: ORA-01031: insufficient privileges
  7. 警告: 您不再连接到 ORACLE

原因分析: sqlnet.ora 文件中默认有“SQLNET.AUTHENTICATION_SERVICES= (NTS)”的配置,如果缺少就会出现上面的报错。

解决方案: 在 sqlnet.ora 文件中补充上“SQLNET.AUTHENTICATION_

发表评论

表情:
评论列表 (有 0 条评论,189人围观)

还没有评论,来说两句吧...

相关阅读

    相关 VS问题汇总

    记录软件使用过程中遇到的各种报错,下次遇到时可以直接解决。 1. “operator new\[\]”: 5 个重载中没有一个可以转换所有参数类型 参考:[https:/