Oracle常见错误处理【实时更新版】

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;

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值