一、基础环境
操作系统:Windows 或 Linux
数据库版本:Oracle Database 11.2.0.1.0 及以上版本
二、错误代码、产生原因及处理方案
- ORA-00911:无效字符
问题详情:在 PL/SQL 或者 SQL*PLUS 中可以正常执行的 SQL 语句,在程序中不能正常执行,报以上错误。
解决方案:将 SQL 语句中的末尾分号去掉。 - ORA-00917:缺失逗号
- ORA-01017: 用户名/口令无效:登陆被拒绝
- ORA-01031: 权限不足
问题详情:在进行系统的操作的时候提示权限不足,请检查该用户是否有相应的权限。 - ORA-01502: 索引或这类索引的分区处于不可用状态
问题详情:在向表插入数据时,提示此信息。
原因分析:1、该数据表被迁移过表空间;2、该索引被禁用过。
解决方案:
1、重建索引。alter index index_name rebuild online ;
2、重新启用索引。alter index index_name unusable ;
- ORA-01722: 无效数字
问题详情:在进行使用TO_NUMBER()函数,将文本转换为数字的时候,提示此错误。原因是该文本中存在除了正负号、小数点、阿拉伯数字0-9之外的其他字符。可以使用正则表达式进行筛选。还有一种原因是该文本为全角字符,需要转换为半角字符才能使用此函数进行转换。 - ORA-02449:表中的唯一/主键被外键引用
- ORA-00257:存档程序错误。仅连接内部,直到释放
- 原因分析:开启归档模式,归档日志空间已满。
- 解决方案:使用系统自带的命令清理归档日志。
- ORA-03113:通信通道的文件结尾
可能原因:归档空间满了,清理一下即可。 - ORA-12514:TNS: 监听程序当前无法识别连接描述符中请求的服务
原因分析:
A、数据库实例没有注册到监听,请1分钟后重试。 - ORA-12560:TNS: 协议适配器错误
原因分析:
A、数据库实例没有启动。
B、数据库监听没有启动。
C、此错误常见于 Windows 平台,出现此错误的原因是系统当前默认的ORACLE_SID 不可用或不正确。
处理方案:查看系统当前默认的Oracle_Sid 的方法是:使用快捷键Windows+R打开【运行】对话框,输入【regedit
】按回车键,即可打开注册表,在地址栏输入:
计算机\HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDb11g_home1
查看右侧名称为:ORACLE_SID
的数据数值,是否为当前系统运行实例的SID,如果不是请修改,然后关闭注册表即可。
D、数据库端口(默认为1521)为防火墙阻止连接,在防火墙中开放此端口即可。
- ORA-14400: 插入的分区关键字未映射到任何分区
插入的数据不在所有分区规则之内,需要添加相应的分区。 - ORA-19502: 文件 *, 块编号 * (块大小=4096) 上出现写入错误
- ORA-27072: 文件 I/O 错误
- ORA-31693: 表数据对象 * 无法加载/卸载并且被跳过