Oracle错误码是Oracle数据库中用于指示发生错误类型的数字代码。每个错误码通常伴有一条或多条描述性消息,这些消息可以帮助数据库管理员或开发人员识别和解决问题。
分析Oracle报错时应从头开始,一个问题可能会引发多个错误信息。
EXP-00056
问题分析:配置文件存在问题,数据库配置需加地址。
解决方案:
步骤1:检查数据库连接信息是否正确。
步骤2:查看tnsnames.ora跟sql是否一致。
IMP-00015
原因分析:由于对象已存在,下列语句失败
解决方案:在导入数据库命令中添加指令”full=y ignore=y ”。
IMP-00019错误与修改oracle11g字符集
原因分析:字符集不对
解决方案:SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER SYSTEM ENABLE RESTRICTED SESSION;
ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
ALTER SYSTEM SET AQ_TM_PROCESSES=0;
ALTER DATABASE OPEN;
ALTER DATABASE CHARACTER SET INTERNAL_USE ZHS16GBK;
SHUTDOWN IMMEDIATE;
STARTUP;
IMP-00003 IMP-00017 ORA-06550 Oracle小版本不一致
解决方案:在导入/出数据库命令中添加指令”statistics=none ”。
ORA-00001: 违反唯一约束条件
触发主键唯一约束,查看一下插入数据是否存在或者主键字段数据是否冲突。
ORA-00054: 资源忙
ORA-00904: 无效标识符
ORA-00942: 表或视图不存在
ORA-00933: SQL命令不正确结束
ORA-01017 : 无效用户名/密码
问题分析
用户名/口令无效,登录被拒绝
解决方案
sqlplus / as sysdba
alter user 用户名 identified by 密码
ORA-01400: 不能将NULL插入到非空列
问题分析
当前列约束为非空,不允许插入为空。
解决方案
方法1:插入‘ ’值。
方法2:变更列字段条件。
ORA-01722: 无效数值
ORA-04063: 不存在或无效的触发器
ORA-12170: TNS: 连接超时
问题分析:连接超时
解决方案:先确认网络连接是否正常,再检查SQL格式。
ORA-12560:TNS:协议适配器错误
问题分析:协议适配器错误
解决方案:
步骤1:检查连接状态是否正常,优先处理上面的报错。
步骤2:检查监听服务
Windows:
方法1:打开Oracle服务端"Oracle Net Configuration Assistant",创建监听服务(一直下一步,直到完成)。
方法2:若已经配置好监听服务,检查任务管理器 (桌面-任务栏-右击)中包含"%TNSListener%“名称的服务状态为开启。
Linux:
① lsnrctl status 检查状态
② lsnrctl start/stop/restart 启动/停止/重启监听
步骤3:检查服务端服务
Windows:
检查任务管理器 (桌面-任务栏-右击)中包含”%Service%"名称的服务状态为开启。
ORA-12899 编码集异常
原因分析:使用ZHS16GBK字符集数据库进行导出的dmp文件再导入到字符集为UTF-8的新数据库中,会出现ora-12899的错误,导致dmp文件中的数据无法导入到新的库中,修改新数据库字符集与dmp一致即可。
修改方案:本问题处理方案分成两种,Windows/Linux,具体如下:【Windows】
步骤1.查看字符集
select * from v$nls_parameters;(select userenv(‘language’) from dual;)
步骤2.修改编码集
方法1:修改注册表
① cmd开启命令窗口,输入Regedit打开注册表。
② 在左侧窗口找到HKEY_LOCAL_MACHINE --> SOFTWARE —>WOW6432Node --> ORACLE
③ 翻找ORACLE下的子项目,并在右侧窗口找到:NLS_LANG(我的NLS-LANG是在 “KEY_OraDb11g_home1 ”下)
④ 双击设置NLS_LANG 数值为: SIMPLIFIED CHINESE_CHINA.ZHS16GBK
/
方法2:SQL命令修改
① 登录: Sqlplus user/123@orcl as sysdba
② 依次输入如下命令(要谨慎)
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER SYSTEM ENABLE RESTRICTED SESSION;
ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
ALTER SYSTEM SET AQ_TM_PROCESSES=0;
ALTER DATABASE OPEN;
ALTER DATABASE CHARACTER SET INTERNAL_USE ZHS16GBK;
SHUTDOWN IMMEDIATE;
STARTUP;【Linux】
1.查看字符集格式 select userenv(‘language’) from dual;
2.命令执行 SQL>SHUTDOWN IMMEDIATE SQL>STARTUP MOUNT SQL>ALTER SYSTEM ENABLE RESTRICTED SESSION; SQL>ALTER SYSTEM SET
JOB_QUEUE_PROCESSES=0; SQL>ALTER SYSTEM SET AQ_TM_PROCESSES=0;
SQL>ALTER DATABASE OPEN; SQL>ALTER DATABASE CHARACTER SET INTERNAL_USE
ZHS16GBK; SQL>SHUTDOWN IMMEDIATE SQL>STARTUP
ORA-12712
问题分析:字符集不兼容
解决方案:
SQL>ALTER DATABASE CHARACTER SET INTERNAL_USE ZHS16GBK;
SQL>SHUTDOWN IMMEDIATE SQL>STARTUP
ORA-12154: 无法连接到数据库
解决方案:
方法1:检查监听状态;
方法2:检查数据库状态/重启数据库;
ORA-28000 SYS Account Locked on standby
问题分析:数据库账户被锁
解决方案:
① 登录sys :sqlplus sys/ as sysdba
② 解锁账户:alter user ctsdb account unlock;
ORA-28040 No Matching Authentication Protocol After Upgrade of the Database to Version
原因分析(两种):
1.oracle低版本连接高版本(11g连接19c)会报错ORA-28040:NO matching authentication protocol。
2.连接数据库,提示协议不匹配。
解决方案:
在oracle/product/版本/db_1/network/admin目录下,配置一个sqlnet.ora的文件,文件中写如下语句:
SQLNET.ALLOWED_LOGON_VERSION_SERVER=8
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8
修改所需要的连接的用户名的密码即可连接成功。
alter user system identified by oracle;
重启服务
ORA-30036:unable to extend segment by 8 in undo tablespace ‘UNDOTBS1’
问题分析:
UNDO表空间不足
解决方案:
1.该表空间最大只能到32G不能进行扩大。
2.执行脚本新建表空间文件即可:
ALTER tablespace UNDOTBS1 ADD datafile ‘/home/oracle/app/oradata/ctsdb/undotbs02.dbf’ SIZE 10M autoextend ON;