Oracle 常见报错问题汇总
文章目录
- Oracle 常见报错问题汇总
- 一、序言
- 二、Oracle 常见报错问题汇总
- 报错:ORA-00020: maximum number of processes (30) exceeded
- 报错:ORA-01017: invalid username/password; logon denied
- 报错:ORA-01031: insufficient privileges
- 报错:”ORA-01034: ORACLE not available” 和 “ORA-27101: shared memory realm does not exist”
- 报错:“ORA-00119: invalid specification for system parameter LOCAL_LISTENER” 和 “ORA-00132: syntax error or unresolved network name ‘LISTENER_ORCL’”
- 报错:TNS-03505: 无法解析名称
- 报错:ORA-12154: TNS: 无法解析指定的连接标识符
- 报错:ORA-12504: TNS: 监听程序在 CONNECT_DATA 中未获得 SERVICE_NAME
- 报错:ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务
- 报错:ORA-12518: TNS: 监听程序无法分发客户机连接
- 报错:ORA-12541: TNS: 无监听程序
- 报错:ORA-12520: TNS: 监听程序无法为请求的服务器类型找到可用的处理程序
- 报错:ORA-12523: TNS: 监听程序无法找到适用于客户机连接的例程
- 报错:ORA-12560: TNS: 协议适配器错误
- 报错:启动监听服务失败(无法成功启动监听服务,弹框提示内容:“本地计算机上的OracleOraDb11g_home1TNSListener服务启动后停止。某些服务在未由其他服务或程序使用时将自动停止。”)
- 报错: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.ZHS16GBK3、检查
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.ora
和sqlnet.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命令
set ORACLE_SID=remoteorcl
sqlplus /nolog
connect / as sysdba
示例:
C:\Users\administrator>set ORACLE_SID=remoteorcl
C:\Users\administrator>sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on 星期二 3月 21 20:43:42 2023
Copyright (c) 1982, 2010, Oracle. All rights reserved.
SQL>
SQL> connect / as sysdba
ERROR:
ORA-00020: maximum number of processes (30) exceeded
SQL>
原因分析:
数据库连接数用满,即当前的连接数超出了最大的连接数。在本例中出现这个报错是因为设置的processes数值太小了,只有30,实际运行的processes超过了30。(备注:processes默认值为150)排查连接数的相关语句:
0. 设置ORACLE_SID,用于指定连接哪个数据库
set ORACLE_SID=remoteorcl
1. 以超级管理员身份登录
sqlplus /nolog
connect / as sysdba
(备注:也可以直接使用 “sqlplus / as sysdba” 这条命令)
2. 查询当前的连接数
select count(0) from v$process;
3. 查询最大的连接数(默认值为150)
select value from v$parameter where name = 'processes';
(备注:也可以使用 “show parameter processes” 查询最大的连接数)
解决方案:
修改数据库最大连接数,操作如下:
步骤1:重启数据库服务:OracleServiceXXX
方式1:通过“服务”界面进行操作,重启数据库服务
打开“服务”界面,找到数据库服务OracleServiceXXX,点击右键,选择“重新启动”(或者先选择“停止”,在选择“启动”)。
方式2:通过管理员身份打开控制台执行相关命令,重启数据库服务
使用管理员身份打开CMD控制台,输入下面命令重启:
停止数据库服务:net stop OracleServiceXXX
启动数据库服务:net start OracleServiceXXX
备注:重启数据库服务OracleServiceXXX的目的是临时解决“ORA-00020: maximum number of processes (30) exceeded”报错导致无法连接登录Oracle数据库的问题(重启数据库服务之后,发现可以连接登录Oracle数据库,再次查询当前连接数,会发现当前连接数变小了)。只有成功连接登录Oracle数据库之后,才能修改最大的连接数。
步骤2:设置ORACLE_SID,然后以超级管理员身份登录
set ORACLE_SID=remoteorcl
sqlplus /nolog
connect / as sysdba
步骤3:设置最大的连接数,将processes设置为150(也可以设置得再大一点,比如1000,2000等)
alter system set processes = 150 scope = spfile;
步骤4:重启数据库,使修改生效。命令如下:
shutdown immediate
startup
备注:关于步骤4,修改最大的连接数processes之后,一定要 重启数据库 或者 重启数据库服务OracleServiceXXX 才能使修改生效。
(1)如果采用 重启数据库 的方式,则在当前的CMD控制台不需要重新连接数据库,就可以直接查询到修改生效后的最大连接数。
(2)如果是采用 重启数据库服务OracleServiceXXX 的方式,则在当前的CMD控制台需要重新连接Oracle数据库(即执行connect / as sysdba 命令连接数据库),才能查询到修改生效后的最大连接数。示例:
步骤1:重启数据库服务:OracleServiceXXX
方式1:下面是“通过 ‘服务’ 界面操作重启数据库服务”的示例:
方式2:下面是“通过管理员身份打开控制台执行相关命令重启数据库服务”的示例:
C:\WINDOWS\system32> net stop OracleServiceRemoteOrcl
OracleServiceREMOTEORCL 服务正在停止........
OracleServiceREMOTEORCL 服务已成功停止。
C:\WINDOWS\system32> net start OracleServiceRemoteOrcl
OracleServiceREMOTEORCL 服务正在启动 .......
OracleServiceREMOTEORCL 服务已经启动成功。
C:\WINDOWS\system32>
步骤2~4:“设置ORACLE_SID,然后以超级管理员身份登录” -> “设置最大的连接数” -> “重启数据库,使修改生效”
下面是“修改增加数据库最大连接数”的示例:
C:\Users\administrator>set ORACLE_SID=remoteorcl
C:\Users\administrator>sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on 星期三 3月 22 12:53:11 2023
Copyright (c) 1982, 2010, Oracle. All rights reserved.
SQL> connect / as sysdba
已连接。
SQL> alter system set processes = 150 scope = spfile;
系统已更改。
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 3390558208 bytes
Fixed Size 2180464 bytes
Variable Size 1862273680 bytes
Database Buffers 1509949440 bytes
Redo Buffers 16154624 bytes
数据库装载完毕。
数据库已经打开。
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
场景还原:
C:\Users\administrator>set ORACLE_SID=orcl
C:\Users\administrator>sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on 星期一 3月 13 23:04:51 2023
Copyright (c) 1982, 2010, Oracle. All rights reserved.
SQL> conn / as sysdba;
ERROR: ORA-01031: insufficient privileges
警告: 您不再连接到 ORACLE。
原因分析: sqlnet.ora 文件中默认有“SQLNET.AUTHENTICATION_SERVICES= (NTS)”的配置,如果缺少就会出现上面的报错。
解决方案: 在 sqlnet.ora 文件中补充上“SQLNET.AUTHENTICATION_
还没有评论,来说两句吧...