大数据开发场景下,总结并翻译 Oracle 中常见的错误(补充其他错误码:适合初学者)
Oracle大数据开发常见错误在Oracle大数据开发如ETL、Hadoop抽取中常见错误分为五类字段/表错误如ORA-00904无效列名、ORA-00942表不存在数据类型/转换错误如ORA-01722数字转换失败、ORA-12899字段超长连接/权限错误如ORA-01017登录失败、ORA-12541监听未启动性能/资源错误如ORA-01555UNDO空间不足、ORA-04030内存耗尽并行/分区错误如ORA-14400分区键不匹配。初学者高频错误语法类ORA-00923漏写FROM、ORA-00911无效字符约束类ORA-00001主键冲突、ORA-02291外键缺失连接类ORA-12154TNS配置错误。速查建议通过错误码快速定位问题如ORA-00942优先检查表名拼写和权限。大数据开发场景下总结并翻译 Oracle 中常见的错误在 Oracle 大数据开发如数据迁移、ETL、Hadoop 抽取中常见错误可分为连接/权限类、SQL/字段类、数据类型/转换类、资源/性能类。以下是典型错误及中英文对照总结一、字段/表不明确或不存在Oracle 错误英文中文翻译常见原因ORA-00918: column emp_no in field list is ambiguous字段列表中的列 emp_no 有歧义多表关联时未指定表别名ORA-00904: EMP_NO: invalid identifier无效标识符列名写错/不存在未加双引号区分大小写ORA-00942: table or view does not exist表或视图不存在表名拼错、不在当前 schema、无权限ORA-00933: SQL command not properly endedSQL 命令未正确结束多了一条分号或缺少关键字二、数据类型/转换错误大数据 ETL 常见Oracle 错误中文翻译常见原因ORA-01722: invalid number无效数字将字符串转数字时含非数字字符ORA-01843: not a valid month不是有效月份日期格式不匹配ORA-12899: value too large for column列的值过大字段长度不足如 VARCHAR2(10) 存了 12 个字符ORA-01461: can bind a LONG value only for insert into a LONG column只能为 LONG 列绑定 LONG 值将大文本错误插入非 LONG 字段三、连接/权限/资源错误Oracle 错误中文翻译常见原因ORA-01017: invalid username/password; logon denied用户名/密码无效登录被拒绝凭证错误或账户锁定ORA-28009: connection as SYS should be as SYSDBA or SYSOPER以 SYS 连接应使用 SYSDBA 或 SYSOPER未用正确角色连接ORA-12541: TNS:no listenerTNS无监听程序数据库监听未启动ORA-12514: TNS:listener does not currently know of service requested监听程序当前不知道请求的服务服务名错误或未注册四、性能/资源限制大数据抽取时高发Oracle 错误中文翻译常见原因ORA-01555: snapshot too old快照过旧UNDO 表空间不足大查询超过 undo_retentionORA-30036: unable to extend segment by in undo tablespace无法在 undo 表空间中扩展段UNDO 空间不足ORA-01652: unable to extend temp segment by in tablespace无法在表空间中扩展临时段临时表空间太小ORA-04030: out of process memory进程内存不足PGA 不够或 CURSOR 泄漏五、并行/分区/大数据操作错误Oracle 错误中文翻译常见原因ORA-12801: error signaled in parallel query server并行查询服务器中发生错误并行执行中某个从进程失败ORA-14400: inserted partition key does not map to any partition插入的分区键未映射到任何分区无对应分区未建 MAXVALUE 分区ORA-14074: partition maintenance cannot be performed on a table with domain indexes无法在具有域索引的表上执行分区维护未先删除域索引如需用于代码捕获映射可将上述错误按如下方式组织为字典Python示例pythonoracle_errors_map { ORA-00918: 字段列表中的列存在歧义请检查多表关联时的别名, ORA-00904: 无效列名检查是否存在或大小写敏感, ORA-00942: 表或视图不存在检查 schema 或权限, ORA-01722: 数字转换失败检查源数据是否含非数字字符, ORA-01555: 快照过旧增大 UNDO 表空间或缩短查询时间, ORA-12899: 数据列长度超限增加目标字段长度或截断处理, }补充其他错误码适合初学者以下补充适合大数据初学者在 Oracle 开发、数据抽取Sqoop/DataX/Spark中高频遇到的易懂错误码附带中文解释和直观示例。六、基础语法/常见新手错误Oracle 错误中文翻译简单白话解释示例ORA-00923: FROM keyword not found where expected未在期望位置找到 FROM 关键字写了SELECT但忘了写FROM 表名SELECT emp_no→ 少FROM employeesORA-00936: missing expression缺少表达式SELECT后面只跟了逗号或空SELECT , FROM dualORA-00911: invalid character无效字符语句里出现了中文标点或特殊符号分号用了全角ORA-00942: table or view does not exist表或视图不存在表名写错、大小写敏感双引号、或者没加 schema 前缀SELECT * FROM emp但实际表是employeesORA-00933: SQL command not properly endedSQL 命令未正确结束多写了多余的分号或ORDER BY放错位置SELECT * FROM t; WHERE id1七、数据插入/更新新手错误Oracle 错误中文翻译简单白话解释示例ORA-01400: cannot insert NULL into ()无法将 NULL 插入非空列插入时漏掉了一个必填字段INSERT INTO emp (id) VALUES (1)但 name 列不允许 NULLORA-00001: unique constraint violated违反唯一约束插入了重复的主键或唯一键值两次插入相同id100ORA-02291: integrity constraint violated - parent key not found外键约束违规 - 父键不存在插入子表的外键值在主表里没有插入订单时写了一个不存在的客户编号ORA-02292: child record found存在子记录删除主表记录时报错因为子表还在引用它DELETE FROM dept但该部门还有员工八、表/字段操作新手错误Oracle 错误中文翻译简单白话解释ORA-00955: name is already used by an existing object名称已被现有对象使用重复创建同名表、索引或序列ORA-00903: invalid table name无效表名表名用了保留关键字如SELECT作为表名或数字开头ORA-00904: invalid identifier无效标识符列名写错或者改表结构后忘了提交九、常见连接/环境错误初学者容易踩坑Oracle 错误中文翻译白话解释检查方法ORA-12154: TNS:could not resolve the connect identifier specifiedTNS无法解析指定的连接标识符连接字符串或 tnsnames.ora写错了检查ORCL那一行是否有格式错误ORA-12560: TNS:protocol adapter errorTNS协议适配器错误本地没有启动 Oracle 服务或环境变量不对运行lsnrctl status看服务状态ORA-01033: ORACLE initialization or shutdown in progressOracle 正在初始化或关闭中数据库正在启动或关闭等一会儿再连多等 30 秒重试十、SELECT 查询新手经典错误Oracle 错误中文翻译白话解释ORA-00979: not a GROUP BY expression不是 GROUP BY 表达式GROUP BY中漏写了要直接展示的列ORA-00918: column ambiguously defined列定义有歧义两个表都有id列必须写表.idORA-01747: invalid user.table.column, table.column, or column specification无效的列指定更新时试图修改系统保留字作为列名一个适合初学者的「错误码×解决方法」速查表常见场景你看到的错误优先检查方法ORA-009421. 表名是否拼错 2. 是否少写了用户名.表名 3. 是否有权限ORA-01722数据里是否有字母或空字符串被转数字ORA-01400INSERT时所有NOT NULL列是否都给了值ORA-00001是否重复插入了主键ORA-12154tnsnames.ora 是否写对、路径是否生效