ORACLE常见错误代码的分析与解决

合集下载

Oracle错误代码案例总结及解决方案

Oracle错误代码案例总结及解决方案

常见错误:ORA-00001:违反唯一约束条件(主键错误)ORA-00028:无法连接数据库进程ORA-00900:无效sql语句ORA-00904:字段名写错或是建表时最后一个字段有逗号ORA-00907:缺少右括号ORA-00911:无效字符ORA-00917:缺少逗号ORA-00918:未明确定义列ORA-00922:丢失或无效的选项(表名等可能有空格)ORA-00923:未找到FROM关键字ORA-00926:缺少valueORA-00933: SQL命令未正确结束ORA-00936:缺少表达式ORA-00937:不是单组分组函数ORA-00942:表或视图不存在ORA-00947:没有足够的值(一般是插入语句出现的错,插入值的数量与字段不符)ORA-00979:不是group by的表达式ORA-01009:缺少法定参数(eg:sql做参数时,且sql语句为空时,报错)ORA-01098:数据库无法关闭及启动ORA-01400:无法将null值插入ORA-01401:插入的值对于列过大ORA-01476:sql中存在除数为零ORA-01579: 恢复过程中出现写错误ORA-01580: 创建控制备份文件时出错ORA-01581: 尝试使用已分配的回退段() 新区()ORA-01582: 无法打开要备份的控制文件ORA-01583: 无法获得要备份的控制文件的块大小ORA-01584: 无法获得要备份的控制文件的文件大小ORA-01585: 标识备份文件时出错ORA-01586: 无法打开要备份的目标文件ORA-01587: 复制控制文件的备份文件时出错ORA-01588: 要打开数据库则必须使用RESETLOGS 选项ORA-01589: 要打开数据库则必须使用RESETLOGS 或NORESETLOGS 选项ORA-01590: 段可用列表数() 超出最大数ORA-01591: 锁定已被有问题的分配事务处理挂起ORA-01592: 将第7 版回退段() 转换为Oracle 8 版格式时出错ORA-01593: 回退段最佳大小( blks) 小于计算的初始大小( blks)ORA-01594: 尝试放回已释放的回退段() 区()ORA-01595: 释放区() 回退段() 时出错ORA-01596: 无法在参数中指定系统ORA-01597: 无法改变联机或脱机系统回退段ORA-01598: 回退段''未联机ORA-01599: 无法获得回退段(), 高速缓存空间已满ORA-01600: 至多只有一个""在子句""()中ORA-01601: 子句""()中的存储桶大小非法ORA-01603: 子句""()中的分组大小非法ORA-01604: 子句""()中的编号范围非法ORA-01605: 子句""()中缺少编号ORA-01606: gc_files_to_locks 不同于另一已安装例程的参数ORA-01608: 无法将回退段''联机,其状态为()ORA-01609: 日志是线程的当前日志- 无法删除成员ORA-01610: 使用BACKUP CONTROLFILE 选项的恢复必须已完成ORA-01611: 线程编号无效- 必须介于1 和之间ORA-01612: 线程已经启用ORA-01613: 线程只有日志- 要求至少启用2 个日志ORA-01614: 线程正忙- 无法启用ORA-01615: 线程已安装- 无法禁用ORA-01616: 线程已打开- 无法禁用ORA-01617: 无法安装: 不是有效的线程编号ORA-01618: 线程未启用- 无法安装ORA-01619: 线程已由另一例程安装ORA-01620: 没有可用于安装的公用线程ORA-01621: 数据库打开时无法重命名当前日志的成员ORA-01622: 必须指定线程编号- 没有特定默认值ORA-01623: 日志是线程的当前日志- 无法删除ORA-01624: 线程的紧急恢复需要日志ORA-01625: 回退段''不属于此例程ORA-01626: 回退段号''无法处理更多事务处理ORA-01627: 回退段号''未联机ORA-01628: 已达到max # extents ()(回退段)ORA-01629: 已达到max # extents (),此时正在保存表空间的撤消ORA-01630: 表空间中的temp 段达到max # extents()ORA-01631: 表.达到max # extents ()ORA-01632: 索引.达到max # extents ()ORA-01633: 此操作需要Real Application Clusters 选件ORA- 01634: 回退段号''即将脱机ORA-01635: 指定的回退段编号'' 不可用ORA-01636: 回退段''已联机ORA-01637: 回退段''正被另一例程(#) 使用ORA-01638: 参数不允许ORACLE 版本装载群集数据库ORA-01640: 无法将活动事务处理的表空间设置为只读ORA-01641: 表空间''未联机- 无法添加数据文件ORA-01642: 只读表空间''无需开始备份ORA-01643: 系统表空间无法设置为只读ORA-01644: 表空间''已经是只读ORA-01645: 上次尝试设置读写已完成一半ORA-01646: 表空间''不是只读- 无法设置为读写ORA-01647: 表空间''是只读,无法在其中分配空间ORA-01648: 日志是禁用线程的当前日志ORA-01649: 不允许进行备份控制文件操作ORA-01650: 回退段无法通过(在表空间中)扩展ORA-01651: 无法通过(在表空间中)扩展保存撤消段ORA-01652: 无法通过(在表空间中)扩展temp 段ORA-01653: 表.无法通过(在表空间中)扩展ORA-01654: 索引.无法通过(在表空间中)扩展ORA-01655: 群集. 无法通过 (在表空间中) 扩展ORA-01656: 最大区数() 已在群集. 中达到ORA-01657: 无效的SHRINK 选项值ORA-01658: 无法为表空间中的段创建INITIAL 区ORA-01659: 无法分配超出的MINEXTENTS(在表空间中)ORA-01660: 表空间''已是永久性ORA-01661: 表空间''已是临时性ORA-01662: 表空间''非空且无法设置为暂时性ORA-01663: 表空间''的内容不断变动ORA-01664: 扩展排序段的事务处理已终止ORA-01665: 控制文件不是一个备用控制文件ORA-01666: 控制文件用于备用数据库ORA-01667: 无法添加任何其它表空间: 超出限制ORA-01668: 对于数据文件的脱机,备用数据库要求使用DROP 选项ORA-01669: 备用数据库控制文件不一致ORA-01670: 备用数据库恢复需要新数据文件ORA-01671: 控制文件是备份文件,无法设置备用控制文件ORA-01672: 控制文件可能缺少文件或具有额外文件ORA-01673: 未标识数据文件ORA-01674: 数据文件是一个旧的原型而非当前文件ORA-01675: max_commit_propagation_delay 与其它例程不一致ORA-01676: ''的备用文件名转换超出的最大长度ORA-01677: 备用文件名转换参数不同于其它例程ORA-01678: 参数必须是一对样式字符串和取代字符串ORA-01679: 数据库必须以EXCLUSIVE 安装且未打开以激活ORA-01680: 无法通过(在表空间中)扩展LOB 段ORA-01681: max # extents () 已在表空间中的LOB 段达到ORA-01682: 只读DB 无法在表空间中分配临时空间ORA-01683: 索引.分区无法通过(在表空间中)扩展ORA-01684: max # extents () 已在表.分区中达到ORA-01685: max # extents () 已在索引.分区中达到ORA-01686: max # files () 对于表空间已达到ORA-01687: 表空间''的指定记录属性与现有属性相同ORA-01688: 表.分区无法通过(在表空间中)扩展ORA-01689: 子句""()中出现语法错误ORA-01690: 排序区太小ORA-01691: Lob 段.无法通过(在表空间中)扩展ORA-01692: Lob 段.分区无法通过(在表空间中)扩展ORA-01693: max # extents () 已在lob 段.中达到ORA-01694: max # extents () 已在lob 段.分区中达到ORA-01695: 将回退段转换为版本8.0.2 时出错ORA-01696: 控制文件不是'克隆' 控制文件ORA-01697: 控制文件用于'克隆' 数据库ORA-01698: '克隆' 数据库仅可以具有SYSTEM 联机回退段ORA-01699: 正在导入表空间''以用于时间点恢复ORA-01700: 列表中的用户名重复ORA-01701: 此处不允许有群集ORA-01702: 此处不允许有视图ORA-01703: 缺少SYNONYM 关键字ORA-01704: 文字字符串过长ORA-01705: 无法在关联列中指定外部连接ORA-01706: 用户函数的结果值过大ORA-01707: 缺少LIST 关键字ORA-01708: 需要ACCESS 或SESSIONORA-01709: 程序不存在ORA-01710: 缺少OF 关键字ORA-01711: 列出的权限重复ORA-01712: 您不能授予不具有的权限ORA-01713: 该权限的GRANT OPTION 不存在ORA-01714: 执行用户函数时出错ORA-01715: UNIQUE 不可以与簇索引一起使用ORA-01716: NOSORT 不可以与簇索引一起使用ORA-01717: seccta: 访问已过时的模式标记无效ORA-01718: NOAUDIT 不允许BY ACCESS | SESSION 子句ORA-01719: OR 或IN 操作数中不允许外部连接运算符(+)ORA-01720: 授权选项对于'.'不存在ORA-01721: USERENV(COMMITSCN) 在事务处理中调用了多次ORA-01722: 无效数字(比如字段类型为number型、插入的值中却有字母)ORA-01723: 不允许长度为0 的列ORA-01724: 浮点(数)精确度超出范围(1 到126)ORA-01725: 此处不允许USERENV('COMMITSCN')ORA-01726: 此处不允许有表ORA-01727: 数字精度说明符超出范围(1 到38)ORA-01728: 数字标度说明符超出范围(-84 到127)ORA-01729: 需要数据库链接名ORA-01730: 指定的列名数无效ORA-01731: 出现循环的视图定义ORA-01732: 此视图的数据操纵操作非法ORA-01733: 此处不允许虚拟列ORA-01734: 非法的参数- EXTENT MIN 高于EXTENT MAXORA-01735: 非法的ALTER TABLE 选项ORA-01736: 需要[NOT] SUCCESSFULORA-01737: 有效模式: [ROW] SHARE, [[SHARE] ROW] EXCLUSIVE, SHARE UPDATE ORA-01738: 缺少IN 关键字ORA-01739: 缺少MODE 关键字ORA-01740: 标识中缺少双引号ORA-01741: 非法的零长度标识ORA-01742: 备注错误终止ORA-01743: 仅能编制纯函数的索引ORA-01744: 不合理的INTOORA-01745: 无效的主机/赋值变量名ORA-01746: 此处不允许指示符变量ORA-01747: 无效的用户.表.列,表.列,或列规格ORA-01748: 此处只允许简单的列名ORA-01749: 用户不可以自/至自己GRANT/REVOKE 权限ORA-01750: UPDATE/REFERENCES 仅可以从整个表而不能按列REVOKEORA-01751: 无效的转储撤消选项ORA-01752: 不能从没有一个键值保存表的视图中删除ORA-01753: 列定义与聚簇列定义不兼容ORA-01754: 表只能包含一个LONG 类型的列ORA-01755: 必须指定区编号或块编号ORA-01756: 括号内的字符串没有正确结束ORA-01757: 必须指定对象编号ORA-01758: 要添加法定(NOT NULL) 列,则表必须为空ORA-01759: 未正确定义用户函数ORA-01760: 函数的参数非法ORA-01761: DML 操作与连结中的唯一表不对应ORA-01762: vopdrv: FROM 中没有视图查询块ORA-01763: 更新或删除涉及到外部连结表ORA-01764: 连结的新更新值不能保证为唯一ORA-01765: 不允许指定表的所有者名ORA-01766: 此上下文中不允许有字典表ORA-01767: UPDATE ...SET 表达式必须是子查询ORA-01768: 数字字符串过长ORA-01769: 重复的CLUSTER 选项说明ORA-01770: CREATE CLUSTER 命令中不允许有CLUSTER 选项ORA-01771: 选项对聚簇表非法ORA-01772: 必须指定LEVEL 的值(无效数字,插入的值有字母)ORA-01773: 此CERATE TABLE 中没有指定列的数据类型ORA-01774: 转储撤消选项指定了多次ORA-01775: 同义词的循环嵌套链ORA-01776: 无法通过连接视图修改多个基表ORA-01777: 此系统中不允许WITH GRANT OPTIONORA-01778: 超出最大子查询的嵌套层ORA-01779: 无法修改与非键值保存表对应的列ORA-01780: 要求文字字符串ORA-01781: UNRECOVERABLE 不能指定没有AS SELECTORA-01782: 不能为群集或聚簇表指定UNRECOVERABLEORA-01783: 只可以指定RECOVERABLE 或UNRECOVERABLE 子句ORA-01784: 不能指定RECOVERABLE 具有禁用的数据库介质恢复ORA-01785: ORDER BY 项必须是SELECT-list 表达式的数目ORA- 01786: 此查询表达式不允许FOR UPDATEORA-01787: 每个查询块只允许有一个子句ORA-01788: 此查询块中要求CONNECT BY 子句ORA-01789: 查询块具有不正确的结果列数(不能创建唯一索引,发现重复记录)ORA-01790: 表达式必须具有与对应表达式相同的数据类型ORA-01791: 不是SELECTed 表达式ORA-01792: 表或视图中的最大列数为1000ORA-01793: 索引列的最大数为32ORA-01794: 群集列的最大数目为32ORA-01795: 列表中的最大表达式数为1000ORA-01796: 此运算符不能与列表一起使用ORA-01797: 此运算符后面必须跟ANY 或ALLORA-01798: 缺少EXCEPTION 关键字ORA-01799: 列不可以外部连接到子查询ORA-01800: 日期格式中的文字过长以致无法处理ORA-01801: 日期格式对于内部缓冲区过长ORA-01802: Julian 日期超出范围ORA-01803: 无法获得日期/时间ORA-01804: 时区信息无法初始化ORA-01810: 格式代码出现两次ORA-01811: Julian 日期导致年度中的日无法使用ORA-01812: 只可以指定一次年度ORA-01813: 只可以指定一次小时ORA-01814: AM/PM 因使用A.M./P.M. 而发生冲突ORA-01815: BC/AD 因使用B.C./A.D. 而发生冲突ORA-01816: 只可以指定一次月份(文字与格式字符串不匹配。

oracle常见故障处理手册

oracle常见故障处理手册

oracle常见故障处理手册一、数据库启动与关闭故障1.数据库启动失败原因:可能是由于Oracle数据库配置不正确、系统环境变量设置不正确、初始化参数设置不正确等原因导致。

解决方法:检查数据库日志文件,查看错误信息,根据错误信息进行相应的修复。

2.数据库关闭失败原因:可能是由于数据库事务未完成、数据库锁未释放等原因导致。

解决方法:检查数据库日志文件,查看错误信息,根据错误信息进行相应的修复。

二、连接故障1.连接不成功原因:可能是由于网络连接问题、数据库用户名或密码错误、数据库实例名错误等原因导致。

解决方法:检查网络连接是否正常,检查数据库用户名和密码是否正确,检查数据库实例名是否正确。

2.连接断开原因:可能是由于网络不稳定、数据库服务器异常等原因导致。

解决方法:检查网络连接是否正常,检查数据库服务器是否正常。

三、数据恢复故障1.数据丢失原因:可能是由于数据库损坏、磁盘故障等原因导致。

解决方法:根据数据丢失的原因,选择相应的恢复方法,如使用备份恢复数据或使用日志文件恢复数据。

2.数据不一致原因:可能是由于数据修改不一致、数据复制不一致等原因导致。

解决方法:检查数据修改和复制的日志文件,找到不一致的数据并修复。

四、性能优化故障1.性能下降原因:可能是由于CPU占用过高、内存占用过高、磁盘IO过大等原因导致。

解决方法:优化数据库配置参数,如增加内存、优化磁盘IO等。

2.查询速度慢原因:可能是由于查询语句不优化、表没有建立索引等原因导致。

解决方法:优化查询语句,为表建立索引等。

五、存储管理故障1.存储空间不足原因:可能是由于磁盘空间不足、表空间不足等原因导致。

解决方法:清理磁盘空间,增加磁盘空间,调整表空间大小等。

2.数据文件丢失或损坏原因:可能是由于磁盘故障、人为误删除或修改等原因导致。

解决方法:使用备份恢复数据文件或修复损坏的数据文件。

六、网络连接故障1.网络连接中断原因:可能是由于网络设备故障、网络连接线故障等原因导致。

20类oracle常见错误号详解

20类oracle常见错误号详解

1,ORA-01002 fetch out of sequence 读取(提取)违法顺序2,ORA-00957: duplicate column name 重复列名3,ORA-01403: no data found 未找到数据4,ORA-00928: missing SELECT keyword 缺失SELECT 关键字5,ORA-00904: "OBJECTID": invalid identifier 无效标识符6,ORA-00904 invalid column name 列名无效7,ORA-01406: fetched column value was truncated 读取的列值被截断9,ORA-00942:table or view does not exist 表和视图不存在10,ORA-12560: TNS:protocol adapter error TNS: 协议适配器错误11,ORA-00980: synonym translation is no longer valid 同义词转换不再有效12,ORA-02291:integrity constraint (约束名) violated - parent key not found 违反完整约束条件(orauser.FK_KNO_EVENTTYPE1)--未找到父项关键字13,ORA-02292: integrity constraint <constraint name> violated - child record found 违反完整约束条件(orauser.FK_KNO_EVENTTYPE1)--已找到子记录14,ORA-00936: missing expression 缺失表达式15,ORA-00001: unique constraint (BUSHR.PK_T_DIC_BMFL) violated 违反唯一约束条件(主键值重复)16,ORA-01031 insufficient privileges 权限不足17,ORA-12514:TNS:listener does not currently know of serverice requested in connect descriptorTNS:监听程序当前无法识别连接描述符中请求的服务18,ORA-28001 口令已经失效19,ORA-28000 帐户已被锁定20,ORA-27072:ORA-19502: 磁盘空间不足错误处理。

oracle错误ORA-01017问题分析与解决方法

oracle错误ORA-01017问题分析与解决方法

Oracle常见错误 ORA-01017通常表示用户名或密码不正确,但在您的情况下,问题可能与 Oracle 11g 客户端和 Oracle 19c 数据库之间的兼容性有关。

可能的原因用户名或密码错误:首先,确保输入的用户名和密码是正确的。

密码版本兼容性:Oracle 19c 默认使用更高版本的密码加密算法,而 Oracle 11g 客户端可能不支持。

数据库参数配置:某些数据库参数可能需要调整以支持旧版本客户端的连接。

解决方案1. 确认用户名和密码首先,确保您输入的用户名和密码是正确的,并且没有输入错误。

2. 检查密码案例敏感Oracle 11g 和 19c 在处理密码时可能有不同的大小写敏感。

确保密码的大小写与创建用户时设置的密码一致。

3. 调整密码版本兼容Oracle 19c 默认使用 12c 及以上版本的密码加密算法。

为了兼容旧版本客户端,可以调整数据库参数,使其支持旧版本的密码加密算法。

连接到 Oracle 19c 数据库实例:sqlplus / as sysdba检查当前的 SQLNET.ALLOWED_LOGON_VERSION_SERVER 参数:SHOW PARAMETER SQLNET.ALLOWED_LOGON_VERSION_SERVER;如果需要修改参数,可以编辑 sqlnet.ora 文件:vi $ORACLE_HOME/network/admin/sqlnet.ora添加或修改以下参数:SQLNET.ALLOWED_LOGON_VERSION_SERVER=11SQLNET.ALLOWED_LOGON_VERSION_CLIENT=11保存并关闭文件,然后重启数据库监听程序:lsnrctl stoplsnrctl start4. 重新设置用户密码重新设置用户密码可以确保密码使用兼容的加密算法。

连接到 Oracle 19c 数据库实例:sqlplus / as sysdba重新设置用户密码:ALTER USER <username> IDENTIFIED BY <new_password>;5. 检查和调整数据库参数某些数据库参数可能需要调整以支持旧版本客户端的连接。

Oracle常见错误及解决方案

Oracle常见错误及解决方案

O r a c l e常见错误及解决方案问题1:Oracle服务器进入PL/SQL Developer时报ora-01033:oracle initialization or shutdown in progress 错误提示,应用系统无法连接Oracle服务。

解决方法如下:⑴进入CMD,执行set ORACLE_SID=fbms,确保连接到正确的SID;⑵运行sqlplus "/as sysdba"SQL>shutdown immediate停止服务SQL>startup启动服务,观察启动时有无数据文件加载报错,并记住出错数据文件标号SQL>shutdown immediate再次停止服务SQL>startup mountSQL> recover datafile 2恢复出错的数据文件SQL>shutdown immediate再次停止服务SQL>startup启动服务,此次正常。

⑶进入PL/SQL Developer检查,没有再提示错误。

问题2:Oracle密码忘记了怎么办?解决方法有很多种,这里讲述以下三种:⑴打开cmd,输入sqlplus /nolog,回车;输入“conn / as sysdba”;输入“alter user sys identified by 新密码”。

注意:新密码最好以字母开头,否则可能出现错误Ora-00988。

有了这个方法后,只要自己对oracle 服务器有管理员权限,Oracle密码忘记了也不用着急,可以随意修改密码。

⑵在命令行执行如下命令:sqlplus "/@服务名as sysdba"然后在sqlplus中运行以上命令即可修改密码:alter user sys identified by 新密码;alter user system identified by 新密码;⑶运行到C盘根目录输入:SET ORACLE_SID = 你的SID名称输入:sqlplus/nolog输入:connect/as sysdba输入:alert user sys identified by sys输入:alert user system identified by system完成以上5步,则密码更改完成,密码是Oracle数据库的初始密码。

oracle报错处理 案例

oracle报错处理 案例

oracle报错处理案例Oracle数据库在运行过程中可能会遇到各种错误,下面列举几个报错案例以及相应的解决思路:1、ORA-00701: 这个错误通常与内部错误或者核心对象有关。

根据2021年的信息,处理ORA-00701的一个解决方案是将数据库启动到升级模式(upgrade mode)进行修复,或者配置特定的事件(如event 38003),以便让Oracle跳过某些验证步骤。

在某些情况下,可能需要重建受影响的核心对象。

2、数据库无法打开并开始crash recovery:当数据库因异常关闭(如服务器断电)后,重启时可能会出现类似"alter database open... crash recovery"的情况。

此时,Oracle会自动尝试执行恢复过程来确保数据一致性。

DBA需要监控redo日志应用情况和归档日志状态,确保所有必需的redo已成功应用,以完成数据库的正常恢复开放。

3、ORA-00235:这个错误在官方文档中没有明确记录,但根据历史资料中的案例,它可能与备份或RMAN操作期间的同步恢复目录有关。

解决方案可能涉及检查并协调任何冲突的RMAN任务、确保恢复目录的一致性,或者重新同步恢复目录信息。

4、服务器断电导致的数据恢复:在服务器意外断电后,Oracle数据库可能无法正常启动。

在这种情况下,数据恢复工作包括检查物理文件的完整性、评估控制文件、联机重做日志文件和数据文件的状态,并使用RMAN或其他工具进行介质恢复或不完全恢复操作。

如果数据文件损坏严重,可能还需要从最近的有效备份和归档日志中恢复。

在实际处理Oracle数据库错误时,关键在于理解错误的具体含义、分析错误产生的上下文环境,并按照Oracle官方提供的最佳实践和建议步骤进行操作。

同时,维护详细的日志记录和定期备份也是避免数据丢失和快速恢复服务的关键措施。

Oracle错误代码案例总结及解决方案

Oracle错误代码案例总结及解决方案
6 / 13
个人收集整理-ZQ
: 小时与日中的秒发生冲突 : 小时中的分与日中的秒发生冲突 : 分中的秒与日中的秒发生冲突 : 指定月份的日期无效 : 输入值对于日期格式不够长 : (全)年度值必须介于 和 之间,且不为 : 季度值必须介于 和 之间月份中的周值必须介于 和 之间 : 周中的日无效
: 月份中日的值必须介于 和当月最后一日之间 (判断字符型能否转换成日期型)
: 年度中的日值必须介于 和 之间(闰年为 ) : 小时值必须介于 和 之间 : 小时值必须介于 和 之间 : 分钟值必须介于 和 之间 : 秒值必须介于 和 之间 : 日中的秒值必须介于 和 之间 : 日期必须介于 和 之间 : 要求 . 或 . : 要求 . 或 . : 无效的时区 : 在要求输入数字处找到非数字字符 : 在要求输入字母处找到非字母字符 : 年度中的周值必须介于 和 之间 : 文字与格式字符串不匹配 : 数字值与格式项目的长度不匹配: 年度不支持当前日历 : 日期超出当前日历的范围 : 无效的纪元 : 日期时间类无效 : 间隔无效 : 间隔的前导精度太小 : 保留以供将来使用 : 间隔或日期时间不是相互可比较的 : 秒数必须少于 : 保留以供将来使用 : 间隔的前导精度太小 : 时区小时必须在 和 之间 : 时区分钟必须在 和 之间 : 年份必须不少于 : 内部缓冲区的字符串太长 : 在日期时间或间隔中没有找到指定的字段 : 字段必须在 和 之间 : 零点几秒必须在 和 之间
个人收集整理-ZQ
Oracle 错误代码案例总结及解决方案
常见错误: :违反唯一约束条件(主键错误) :无法连接数据库进程:无效语句 :字段名写错或是建表时最后一个字段有逗号 :缺少右括号 :无效字符:缺少逗号 :未明确定义列 :丢失或无效的选项(表名等可能有空格) :未找到关键字:缺少 : 命令未正确结束 :缺少表达式 :不是单组分组函数 :表或视图不存在:没有足够的值(一般是插入语句出现的错,插入值的数量 与字段不符) :不是 的表达式 :缺少法定参数(:做参数时,且语句为空时,报错) :数据库无法关闭及启动 :无法将值插入 :插入的值对于列过大 :中存在除数为零

Oracle常见错误及解决方法

Oracle常见错误及解决方法

Oracle常见错误及解决⽅法1、ORA-12541:TNS:没有监听器原因:没有启动监听器或者监听器损坏。

如果是前者,使⽤命令net start OracleOraHome81TNSListener(名字可能有出⼊)即可;如果是后者,则使⽤“Net8 Configuration Assistant”⼯具向导之“监听程序配置”增加⼀个监听器即可(基本不⽤写任何信息,⼀路OK。

在添加之前可能需要把所有的监听器先删除!)2、ORA-12500:TNS:监听程序⽆法启动专⽤服务器进程或 ORA-12560:TNS:协议适配器错误原因:ORACLE的数据库服务没有启动。

使⽤命令net start ORACLESERVICEORADB(ORADB为数据库名字)即可。

如果仍没有解决,请继续向下看。

3、如果数据库服务启动失败,则很有可能是其注册表项值损坏,最好的做法是以下两步:1)ORADIM -DELETE -SID oradb 删除数据库服务项2)ORADIM -NEW -SID oradb 新增数据库服务项注:这个过程中如果出错,就重启计算机!4、ORA-12154:TNS:能解析服务名原因:ORACLE的⽹络服务名没有正确配置。

请使⽤“Net8 Configuration Assistant”⼯具向导之“本地⽹络服务名配置”配置TNS即可。

如果仍没有解决,请继续向下看。

5、ORA-1034 :TNS:ORACLE不可⽤原因:ORACLE的数据库服务正确启动,但是数据库没有打开!使⽤命令:1)svrmgrl 启动服务管理器2)connect internal 以internal⾝份登陆3)startup 打开数据库6、ORA-12560:TNS:协议适配器错误(顽固性的)原因:未知。

解决:必杀技--打开“Windows任务管理器”,杀死ORACLE.exe及ORADIM.exe进程,书写⾃⼰的ora_startup.bat,执⾏之!7、ORA-12638:⾝份证明检索失败原因:服务端开了防⽕墙,且使⽤了本地操作系统认证解决:修改sqlnet.ora⽂件,1)NTS改为NONE,oracle将采⽤⼝令⽂件认证(此时 remote_login_passwordfile=exclusive)如connect /as sysdba 登录,后报错RA-01031: insufficient privileges,实际上是要求你输⼊sysdba的⽤户名和密码SQLNET.AUTHENTICATION_SERVICES= (NONE)2)修改查找连接的字符串顺序:tnsnames.ora,直接使⽤简单连接字符串,使⽤计算机名称NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT, HOSTNAME)8、ArcSDE数据被锁定后的解锁⽅法描述:(1)删除所选对象失败锁定请求与已有锁定冲突。

ORACLE常见错误代码的分析与解决

ORACLE常见错误代码的分析与解决

ORACLE常见错误代码的分析与解决在使用ORACLE的过程过,我们会经常遇到一些ORACLE产生的错误,对于初学者而言,这些错误可能有点模糊,而且可能一时不知怎么去处理产生的这些错误,本人就使用中出现比较频繁的错误代码一一做出分析,希望能够帮助你找到一个合理解决这些错误的方法,同时也希望你能够提出你的不同看法。

毕竟作为一种交流的手段,个人意见难免过于偏颇,而且也必定存在着不足,出错之处在所难免。

写这篇文章的目的就是想通过相互之间的交流共同促进,共同进步。

ORA-01650:unable to extend rollback segment NAME by NUM intablespace NAME产生原因:上述ORACLE错误为回滚段表空间不足引起的,这也是ORACLE数据管理员最常见的ORACLE错误信息。

当用户在做一个非常庞大的数据操作导致现有回滚段的不足,使可分配用的回滚段表空间已满,无法再进行分配,就会出现上述的错误。

解决方式:使用“ALTER TABLESPACE tablespace_name ADD DATAFILE filename SIZE size_of_file”命令向指定的数据增加表空间,根据具体的情况可以增加一个或多个表空间。

当然这与还与你主机上的裸盘设备有关,如果你主机的裸盘设备已经没有多余的使用空间,建议你不要轻意的增加回滚段表空间的大小,可使用下列的语句先查询一下剩余的tablespace空间有多少:Select user_name,sql_text from V$open_cursor where user_name=’<user_name>’;如果多余的空间比较多,就可以适当追加一个大的回滚段给表空间使用,从而避免上述的错误。

你也可以用以下语句来检测一下rollback segment的竞争状况:Select class,count from V$waitstat where calss in(‘system undo header’,’system undo block’,’undo header’,’undo block’);和Select sum(value) from V$sysstat where name in (‘db_block_gets’,’consistents gets’);如果任何一个class in count/sum(value)大于1%,就应该考虑增加rollback segment。

Oracle常见错误及解决办法

Oracle常见错误及解决办法

Oracle常见错误及解决办法Ø简介本⽂主要记录 Oracle 常见错误及解决办法,包括以下内容:1.ORA-00054: 资源正忙, 但指定以 NOWAIT ⽅式获取资源, 或者超时失效2.ORA-01034: ORACLE not available3.ORA-01261: Parameter db_recovery_file_dest destination string cannot be translated(启动数据库报错)4.ORA-12154: TNS: ⽆法解析指定的连接标识符5.ORA-12514: TNS:listener does not currently know of service requested in connect descriptor6.ORA-12541: TNS:no listener7.ORA-12560: TNS: 协议适配器错误8.ORA-27125: unable to create shared memory segment(启动数据库报错)9.ORA-28040: 没有匹配的验证协议((11g dblink 连接 12c 时)1.ORA-00054: 资源正忙, 但指定以 NOWAIT ⽅式获取资源, 或者超时失效n错误原因由于其他 Session 已经对⽬标表做了操作,并且已经有排他锁在表上了,所以新的 Session ⽆法再对表进⾏DDL操作。

n解决办法以 system ⽤户登录:1)查询被锁的会话IDselect session_id from v$locked_object;2)查询 sid, serial# 字段SELECT sid, serial#, username, osuser FROM v$session where sid = 9;3)将锁定的会话关闭ALTER SYSTEM KILL SESSION '9,99';2.ORA-01034: ORACLE not available1)检查当前数据库实例是否启动3.ORA-01261: Parameter db_recovery_file_dest destination string cannot be translated(启动数据库报错)n错误描述SQL> startupORA-01261: Parameter db_recovery_file_dest destination string cannot be translatedORA-01262: Stat failed on a file destination directoryLinux-x86_64 Error: 2: No such file or directoryn解决办法(没有效果)不知道是什么原因,导致 $ORACLE_BASE/fast_recovery_area 少了这个⽬录,⽽导致了这个错误。

Oracle错误代码案例总结及解决方案

Oracle错误代码案例总结及解决方案

常见错误:ORA-00001:违反唯一约束条件(主键错误)ORA-00028:无法连接数据库进程ORA-00900:无效sql语句ORA-00904:字段名写错或是建表时最后一个字段有逗号ORA-00907:缺少右括号ORA-00911:无效字符ORA-00917:缺少逗号ORA-00918:未明确定义列ORA-00922:丢失或无效的选项(表名等可能有空格)ORA-00923:未找到FROM关键字ORA-00926:缺少valueORA-00933: SQL命令未正确结束ORA-00936:缺少表达式ORA-00937:不是单组分组函数ORA-00942:表或视图不存在ORA-00947:没有足够的值(一般是插入语句出现的错,插入值的数量与字段不符)ORA-00979:不是group by的表达式ORA-01009:缺少法定参数(eg:sql做参数时,且sql语句为空时,报错)ORA-01098:数据库无法关闭及启动ORA-01400:无法将null值插入ORA-01401:插入的值对于列过大ORA-01476:sql中存在除数为零ORA-01579: 恢复过程中出现写错误ORA-01580: 创建控制备份文件时出错ORA-01581: 尝试使用已分配的回退段 () 新区 ()ORA-01582: 无法打开要备份的控制文件ORA-01583: 无法获得要备份的控制文件的块大小ORA-01584: 无法获得要备份的控制文件的文件大小ORA-01585: 标识备份文件时出错ORA-01586: 无法打开要备份的目标文件ORA-01587: 复制控制文件的备份文件时出错ORA-01588: 要打开数据库则必须使用 RESETLOGS 选项ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项ORA-01590: 段可用列表数 () 超出最大数ORA-01591: 锁定已被有问题的分配事务处理挂起ORA-01592: 将第 7 版回退段 () 转换为 Oracle 8 版格式时出错ORA-01593: 回退段最佳大小 ( blks) 小于计算的初始大小 ( blks)ORA-01594: 尝试放回已释放的回退段 () 区 ()ORA-01595: 释放区 () 回退段 () 时出错ORA-01596: 无法在参数中指定系统ORA-01597: 无法改变联机或脱机系统回退段ORA-01598: 回退段''未联机ORA-01599: 无法获得回退段 (), 高速缓存空间已满ORA-01600: 至多只有一个""在子句""()中ORA-01601: 子句""()中的存储桶大小非法ORA-01603: 子句""()中的分组大小非法ORA-01604: 子句""()中的编号范围非法ORA-01605: 子句""()中缺少编号ORA-01606: gc_files_to_locks 不同于另一已安装例程的参数ORA-01608: 无法将回退段''联机,其状态为 ()ORA-01609: 日志是线程的当前日志 - 无法删除成员ORA-01610: 使用 BACKUP CONTROLFILE 选项的恢复必须已完成ORA-01611: 线程编号无效 - 必须介于 1 和之间ORA-01612: 线程已经启用ORA-01613: 线程只有日志 - 要求至少启用 2 个日志ORA-01614: 线程正忙 - 无法启用ORA-01615: 线程已安装 - 无法禁用ORA-01616: 线程已打开 - 无法禁用ORA-01617: 无法安装: 不是有效的线程编号ORA-01618: 线程未启用 - 无法安装ORA-01619: 线程已由另一例程安装ORA-01620: 没有可用于安装的公用线程ORA-01621: 数据库打开时无法重命名当前日志的成员ORA-01622: 必须指定线程编号 - 没有特定默认值ORA-01623: 日志是线程的当前日志 - 无法删除ORA-01624: 线程的紧急恢复需要日志ORA-01625: 回退段''不属于此例程ORA-01626: 回退段号''无法处理更多事务处理ORA-01627: 回退段号''未联机ORA-01628: 已达到 max # extents ()(回退段)ORA-01629: 已达到 max # extents (),此时正在保存表空间的撤消ORA-01630: 表空间中的 temp 段达到 max # extents()ORA-01631: 表.达到 max # extents ()ORA-01632: 索引.达到 max # extents ()ORA-01633: 此操作需要 Real Application Clusters 选件ORA- 01634: 回退段号''即将脱机ORA-01635: 指定的回退段编号 '' 不可用ORA-01636: 回退段''已联机ORA-01637: 回退段''正被另一例程 (#) 使用ORA-01638: 参数不允许 ORACLE 版本装载群集数据库ORA-01640: 无法将活动事务处理的表空间设置为只读ORA-01641: 表空间''未联机- 无法添加数据文件ORA-01642: 只读表空间''无需开始备份ORA-01643: 系统表空间无法设置为只读ORA-01644: 表空间''已经是只读ORA-01645: 上次尝试设置读写已完成一半ORA-01646: 表空间''不是只读 - 无法设置为读写ORA-01647: 表空间''是只读,无法在其中分配空间ORA-01648: 日志是禁用线程的当前日志ORA-01649: 不允许进行备份控制文件操作ORA-01650: 回退段无法通过(在表空间中)扩展ORA-01651: 无法通过(在表空间中)扩展保存撤消段ORA-01652: 无法通过(在表空间中)扩展 temp 段ORA-01653: 表.无法通过(在表空间中)扩展ORA-01654: 索引.无法通过(在表空间中)扩展ORA-01655: 群集 . 无法通过 (在表空间中) 扩展ORA-01656: 最大区数 () 已在群集 . 中达到ORA-01657: 无效的 SHRINK 选项值ORA-01658: 无法为表空间中的段创建 INITIAL 区ORA-01659: 无法分配超出的 MINEXTENTS(在表空间中)ORA-01660: 表空间''已是永久性ORA-01661: 表空间''已是临时性ORA-01662: 表空间''非空且无法设置为暂时性ORA-01663: 表空间''的内容不断变动ORA-01664: 扩展排序段的事务处理已终止ORA-01665: 控制文件不是一个备用控制文件ORA-01666: 控制文件用于备用数据库ORA-01667: 无法添加任何其它表空间: 超出限制ORA-01668: 对于数据文件的脱机,备用数据库要求使用 DROP 选项ORA-01669: 备用数据库控制文件不一致ORA-01670: 备用数据库恢复需要新数据文件ORA-01671: 控制文件是备份文件,无法设置备用控制文件ORA-01672: 控制文件可能缺少文件或具有额外文件ORA-01673: 未标识数据文件ORA-01674: 数据文件是一个旧的原型而非当前文件ORA-01675: max_commit_propagation_delay 与其它例程不一致ORA-01676: ''的备用文件名转换超出的最大长度ORA-01677: 备用文件名转换参数不同于其它例程ORA-01678: 参数必须是一对样式字符串和取代字符串ORA-01679: 数据库必须以 EXCLUSIVE 安装且未打开以激活ORA-01680: 无法通过(在表空间中)扩展 LOB 段ORA-01681: max # extents () 已在表空间中的 LOB 段达到ORA-01682: 只读 DB 无法在表空间中分配临时空间ORA-01683: 索引.分区无法通过(在表空间中)扩展ORA-01684: max # extents () 已在表.分区中达到ORA-01685: max # extents () 已在索引.分区中达到ORA-01686: max # files () 对于表空间已达到ORA-01687: 表空间''的指定记录属性与现有属性相同ORA-01688: 表.分区无法通过(在表空间中)扩展ORA-01689: 子句""()中出现语法错误ORA-01690: 排序区太小ORA-01691: Lob 段.无法通过(在表空间中)扩展ORA-01692: Lob 段.分区无法通过(在表空间中)扩展ORA-01693: max # extents () 已在 lob 段.中达到ORA-01694: max # extents () 已在 lob 段.分区中达到ORA-01695: 将回退段转换为版本 8.0.2 时出错ORA-01696: 控制文件不是 '克隆' 控制文件ORA-01697: 控制文件用于 '克隆' 数据库ORA-01698: '克隆' 数据库仅可以具有 SYSTEM 联机回退段ORA-01699: 正在导入表空间''以用于时间点恢复ORA-01700: 列表中的用户名重复ORA-01701: 此处不允许有群集ORA-01702: 此处不允许有视图ORA-01703: 缺少 SYNONYM 关键字ORA-01704: 文字字符串过长ORA-01705: 无法在关联列中指定外部连接ORA-01706: 用户函数的结果值过大ORA-01707: 缺少 LIST 关键字ORA-01708: 需要 ACCESS 或 SESSIONORA-01709: 程序不存在ORA-01710: 缺少 OF 关键字ORA-01711: 列出的权限重复ORA-01712: 您不能授予不具有的权限ORA-01713: 该权限的 GRANT OPTION 不存在ORA-01714: 执行用户函数时出错ORA-01715: UNIQUE 不可以与簇索引一起使用ORA-01716: NOSORT 不可以与簇索引一起使用ORA-01717: seccta: 访问已过时的模式标记无效ORA-01718: NOAUDIT 不允许 BY ACCESS | SESSION 子句ORA-01719: OR 或 IN 操作数中不允许外部连接运算符 (+)ORA-01720: 授权选项对于'.'不存在ORA-01721: USERENV(COMMITSCN) 在事务处理中调用了多次ORA-01722: 无效数字(比如字段类型为number型、插入的值中却有字母)ORA-01723: 不允许长度为 0 的列ORA-01724: 浮点(数)精确度超出范围(1 到 126)ORA-01725: 此处不允许 USERENV('COMMITSCN')ORA-01726: 此处不允许有表ORA-01727: 数字精度说明符超出范围(1 到 38)ORA-01728: 数字标度说明符超出范围(-84 到 127)ORA-01729: 需要数据库链接名ORA-01730: 指定的列名数无效ORA-01731: 出现循环的视图定义ORA-01732: 此视图的数据操纵操作非法ORA-01733: 此处不允许虚拟列ORA-01734: 非法的参数 - EXTENT MIN 高于 EXTENT MAXORA-01735: 非法的 ALTER TABLE 选项ORA-01736: 需要 [NOT] SUCCESSFULORA-01737: 有效模式: [ROW] SHARE, [[SHARE] ROW] EXCLUSIVE, SHARE UPDATE ORA-01738: 缺少 IN 关键字ORA-01739: 缺少 MODE 关键字ORA-01740: 标识中缺少双引号ORA-01741: 非法的零长度标识ORA-01742: 备注错误终止ORA-01743: 仅能编制纯函数的索引ORA-01744: 不合理的 INTOORA-01745: 无效的主机/赋值变量名ORA-01746: 此处不允许指示符变量ORA-01747: 无效的用户.表.列,表.列,或列规格ORA-01748: 此处只允许简单的列名ORA-01749: 用户不可以自/至自己 GRANT/REVOKE 权限ORA-01750: UPDATE/REFERENCES 仅可以从整个表而不能按列 REVOKE ORA-01751: 无效的转储撤消选项ORA-01752: 不能从没有一个键值保存表的视图中删除ORA-01753: 列定义与聚簇列定义不兼容ORA-01754: 表只能包含一个 LONG 类型的列ORA-01755: 必须指定区编号或块编号ORA-01756: 括号内的字符串没有正确结束ORA-01757: 必须指定对象编号ORA-01758: 要添加法定 (NOT NULL) 列,则表必须为空ORA-01759: 未正确定义用户函数ORA-01760: 函数的参数非法ORA-01761: DML 操作与连结中的唯一表不对应ORA-01762: vopdrv: FROM 中没有视图查询块ORA-01763: 更新或删除涉及到外部连结表ORA-01764: 连结的新更新值不能保证为唯一ORA-01765: 不允许指定表的所有者名ORA-01766: 此上下文中不允许有字典表ORA-01767: UPDATE ...SET 表达式必须是子查询ORA-01768: 数字字符串过长ORA-01769: 重复的 CLUSTER 选项说明ORA-01770: CREATE CLUSTER 命令中不允许有 CLUSTER 选项ORA-01771: 选项对聚簇表非法ORA-01772: 必须指定 LEVEL 的值(无效数字,插入的值有字母)ORA-01773: 此 CERATE TABLE 中没有指定列的数据类型ORA-01774: 转储撤消选项指定了多次ORA-01775: 同义词的循环嵌套链ORA-01776: 无法通过连接视图修改多个基表ORA-01777: 此系统中不允许 WITH GRANT OPTIONORA-01778: 超出最大子查询的嵌套层ORA-01779: 无法修改与非键值保存表对应的列ORA-01780: 要求文字字符串ORA-01781: UNRECOVERABLE 不能指定没有 AS SELECTORA-01782: 不能为群集或聚簇表指定 UNRECOVERABLEORA-01783: 只可以指定 RECOVERABLE 或 UNRECOVERABLE 子句ORA-01784: 不能指定 RECOVERABLE 具有禁用的数据库介质恢复ORA-01785: ORDER BY 项必须是 SELECT-list 表达式的数目ORA- 01786: 此查询表达式不允许 FOR UPDATEORA-01787: 每个查询块只允许有一个子句ORA-01788: 此查询块中要求 CONNECT BY 子句ORA-01789: 查询块具有不正确的结果列数(不能创建唯一索引,发现重复记录)ORA-01790: 表达式必须具有与对应表达式相同的数据类型ORA-01791: 不是 SELECTed 表达式ORA-01792: 表或视图中的最大列数为 1000ORA-01793: 索引列的最大数为 32ORA-01794: 群集列的最大数目为 32ORA-01795: 列表中的最大表达式数为 1000 ORA-01796: 此运算符不能与列表一起使用ORA-01797: 此运算符后面必须跟 ANY 或 ALL ORA-01798: 缺少 EXCEPTION 关键字ORA-01799: 列不可以外部连接到子查询ORA-01800: 日期格式中的文字过长以致无法处理ORA-01801: 日期格式对于内部缓冲区过长ORA-01802: Julian 日期超出范围ORA-01803: 无法获得日期/时间ORA-01804: 时区信息无法初始化ORA-01810: 格式代码出现两次ORA-01811: Julian 日期导致年度中的日无法使用ORA-01812: 只可以指定一次年度ORA-01813: 只可以指定一次小时ORA-01814: AM/PM 因使用 A.M./P.M. 而发生冲突ORA-01815: BC/AD 因使用 B.C./A.D. 而发生冲突ORA-01816: 只可以指定一次月份(文字与格式字符串不匹配。

ORACLE错误码及解决方法

ORACLE错误码及解决方法

以下内容均以错误码,错误名,错误原因,修改建议形式介绍。

ORA-00903 无效的表名试图在不存在的表中创建的索引。

设置正确的表名。

ORA-00904 无效的标识符试图在不存在的列中创建的索引。

检查表中的列名,并且确定应该使用的列名。

ORA-01408 已经索引过的列表试图创建索引,而带有相同顺序的列集合已经存在。

确保列具有正确的顺序,如果索引已经存在,就不需要再次创建该索引了。

ORA-00959 表空间已经存在试图在不存在的表空间中创建索引。

使用DBA_TABLESPACES或者USER_TABLESPACES视图来找出正确的表空间名称。

ORA-01418 指定的索引不存在试图删除不存在的索引。

检查ALL_INDEXES 视图来确定要删除的索引的实际名称。

ORA-01631,ORA-01632 索引中可以达到的最大的区号索引扩展超出了maxextents所设置的值,扩展操作将会失败。

这时需要增大索引的maxextents设置值或者使用更大的initial和next设置值来重新创建索引。

ORA-01467 排序键太长数据库会遇到排序操作的问题。

这些问题可能是由于给过多的列排序造成的,或者可能是由于使用过多的组函数所造成的也有可能是由于ORACLE数据库自身运行的错误所造成的。

应该使用ORDER BY子句来减少列的数目,这是因为一此排序操作受限于数据库的块大小。

需要注意的是,这个错误与sort_area_size无关。

ORA-01031 权限不够创建索引的权限不正确。

如果在除自己模式外的另一个模式中创建索引,则需要确保拥有create any index的权限;如果创建基于函数的索引,则需要确保拥有query rewrite的权限。

ORA-01654 不能表空间中扩展对象"数据试图向所列出的索引中添加额外的区,而该操作执行失败,可能产生的原因是:1.表空间中的空闲空间已用尽2.在表空间中没有足够的相邻数据文件存在3.Pctincrease设置的值不正确解决办法包括向表空间添加空间或者为索引重新设置next 参数值"。

Oracle错误代码案例总结及解决方案

Oracle错误代码案例总结及解决方案

Oracle错误代码案例总结及解决方案随着Oracle数据库的使用,难免会遇到一些错误代码。

本文将介绍一些常见的Oracle错误代码以及解决方案。

这个错误通常是由于输入的用户名或密码不正确造成的。

解决办法是验证用户名和密码是否正确,并确保数据库实例启动。

这个错误通常是由于在SQL查询中引用了一个不存在的列或表名造成的。

解决办法是检查查询中的列名或表名是否正确,如果需要,可以使用引号将其括起来。

这个错误通常是由于连接描述符无法被解析造成的。

解决办法是检查tnsnames.ora文件中的连接描述符是否正确,并确保listener服务正在运行。

这个错误通常是由于在数值比较中使用了无效的字符造成的。

解决办法是检查数据类型是否正确,并确保传入的值是有效的数字。

这个错误通常是由于SQL语句缺少了必要的结束符号造成的。

解决办法是确保每条SQL语句以分号结尾,并检查语法是否正确。

这个错误通常是由于插入或更新操作违反了表的完整性约束条件造成的。

解决办法是确保插入或更新的值符合表的约束条件,并确保触发器、外键等相关对象正确配置。

这个错误通常是由于在更新语句的THEN子句中没有包含所有列造成的。

解决办法是确保更新语句中的THEN子句包含所有需要更新的列。

这个错误通常是由于在SQL语句中缺少需要的表达式造成的。

解决办法是确保SQL语句中的所有操作数都是有效的,并检查语法是否正确。

这个错误通常是由于插入或更新操作违反了UNIQUE约束条件造成的。

解决办法是确保插入或更新的值不会违反UNIQUE约束条件,并确保索引、触发器等相关对象正确配置。

这个错误通常是由于读取的数据已被其他会话修改或删除造成的。

解决办法是增加undo表空间的大小,或调整事务隔离级别以减少读取之间的时间差。

总结:本文介绍了一些常见的Oracle错误代码以及解决方案,包括无效的用户名/密码、无效的标识符、无法解析指定的连接标识符、无效数字、SQL命令未正确结束、违反完整性约束条件、缺失表达式、UNIQUE约束条件违背和快照过旧等。

Oracle错误代码大全

Oracle错误代码大全

Oracle错误代码大全•Introduction•ORA-00001: Unique Constraint Violated•ORA-00904: Invalid Identifier•ORA-01017: Invalid Username/Password•ORA-12154: TNS:could not resolve the connect identifier specified•ConclusionIntroduction在使用 Oracle 数据库时,用户可能会遇到各种各样的错误代码。

错误代码是 Oracle 数据库用于通知用户发生了什么问题的一种标准化方式。

本文档旨在向用户提供一个 Oracle 错误代码的大全,以帮助用户更好地理解和解决这些错误。

ORA-00001: Unique Constraint ViolatedORA-00001 错误通常表示在插入或更新操作中违反了唯一约束。

这意味着在插入或更新数据时,新数据中的一个或多个列的值与已存在的数据中的某个列的值冲突。

要解决此错误,可以采取以下措施: - 检查数据库中是否存在重复的唯一约束。

- 检查插入或更新数据的值是否与表中现有数据的值冲突。

- 检查是否有其他进程正在访问或修改正在插入或更新的数据。

ORA-00904: Invalid IdentifierORA-00904 错误表示在 SQL 语句中使用了无效的标识符。

这可能是由于以下原因导致的: - SQL 语句中引用了不存在的列名。

- SQL 语句中引用了不存在的表名。

- SQL 语句中引用了不存在的别名。

- SQL 语句中引用了无效的变量名。

要解决此错误,可以采取以下措施: - 检查 SQL 语句中的所有列名、表名、别名和变量名的拼写是否正确。

-确保所引用的对象〔表、列等〕存在于数据库中。

- 使用适宜的引用标记,例如双引号或方括号,以确保正确解析标识符。

oracle中常出现的错误信息及解决方案

oracle中常出现的错误信息及解决方案

oracle中常出现的错误信息及解决方案Oracle中常出现的错误信息及解决方案错误信息一:ORA-00001 违反唯一约束条件最常见的问题原因是:主键序列化问题,即ORACLE表主键ID突然从已经存在的ID值开始自动生成,导致违反主键唯一性约束;解决方案,修改序列值,将序列最小值值设置的大一些。

如果在修改的时候出现违反唯一约束,说明你对主键值进行修改时出现重复,或者没加where条件。

错误信息二:oracle ORA-01745: 无效的主机/绑定变量名最常见的原因:sql语句中语法错误太多,例:多写了一个冒号或逗号,或者变量名称使用了oracle关键字解决方案:审查sql语句,更改为正确的sql语句。

错误信息三:ORA-01460: 转换请求无法实现或不合理常见原因有一下几种:1.读入到数据库中的字符过长无法实现。

解决方案:将字符串(只有4000)类型改为clob类型2.客户端和服务端字符集不一致。

解决方案:step1、通过执行select * from V$NLS_PARAMETERS查看服务端字符集PARAMETER VALUENLS_LANGUAGE AMERICANNLS_TERRITORY AMERICANLS_CURRENCY $NLS_ISO_CURRENCY AMERICANLS_NUMERIC_CHARACTERS .,NLS_CALENDAR GREGORIANNLS_DATE_FORMAT DD-MON-RRNLS_DATE_LANGUAGE AMERICANNLS_CHARACTERSET ZHS32GB18030NLS_SORT BINARYNLS_TIME_FORMAT HH.MI.SSXFF AMNLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZRNLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZRNLS_DUAL_CURRENCY $NLS_NCHAR_CHARACTERSET UTF8NLS_COMP BINARYNLS_LENGTH_SEMANTICS BYTENLS_NCHAR_CONV_EXCP FALSEstep2、通过regedit修改注册表(仅讨论windows版)进行客户端的字符集,位置\HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0\NLS _LANG修改为[NLS_LANGUAGE ]_[NLS_ISO_CURRENCY]_[NLS_CHARAC TERSET],如上面的的服务器,应该修改为:AMERICAN_AMERICA.ZHS32GB18030。

oracle-00031原理

oracle-00031原理

Oracle是世界上领先的企业级数据库管理系统,被广泛应用于企业的信息管理和数据处理中。

其中,Oracle-00031错误是一个常见的数据库错误,本文将深入探讨Oracle-00031错误的产生原理及解决方法。

一、Oracle-00031错误的产生原因1.1 表空间不足Oracle数据库中的表空间是用来存储表和索引数据的逻辑结构,如果表空间不足,数据库就无法正常存储数据,从而导致Oracle-00031错误的产生。

1.2 数据库连接失败当数据库连接失败时,用户无法正常访问数据库中的数据,这也可能导致Oracle-00031错误的出现。

1.3 数据文件损坏数据文件是Oracle数据库中用来存储实际数据的物理文件,如果数据文件损坏或丢失,数据库将无法正常读取数据,从而引发Oracle-00031错误。

1.4 日志文件满数据库的日志文件用来记录数据库的操作日志,当日志文件满时,数据库就无法继续记录新的操作日志,从而导致Oracle-00031错误的产生。

二、解决Oracle-00031错误的方法2.1 扩充表空间当出现表空间不足的情况时,可以通过扩充表空间的方式解决这一问题。

可以通过 ALTER TABLESPACE 命令来扩充表空间的大小,使其能够满足数据库存储数据的需求。

2.2 修复数据文件如果数据文件损坏或丢失,可以通过使用 RMAN 或者恢复数据库备份文件的方式来修复数据文件,保障数据库的正常运行。

2.3 清理日志文件当日志文件满时,可以通过定期清理日志文件的方式来避免日志文件满的情况发生。

可以通过设置自动日志文件清理策略,定期清理过期日志文件,保证数据库的正常运行。

2.4 重新连接数据库当数据库连接失败时,可以尝试重新连接数据库,或者检查网络连接,确保数据库可以正常访问。

三、结论通过以上分析可以看出,Oracle-00031错误通常是由于表空间不足、数据库连接失败、数据文件损坏、日志文件满等原因引起的。

Oracle错误代码详解及解决方式

Oracle错误代码详解及解决方式

Oracle错误代码详解及解决方式ORA-00001: 违反唯一约束条件 (.)错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。

ORA-00017: 请求会话以设置跟踪事件ORA-00018: 超出最大会话数ORA-00019: 超出最大会话许可数ORA-00020: 超出最大进程数 ()ORA-00021: 会话附属于其它某些进程;无法转换会话ORA-00022: 无效的会话 ID;访问被拒绝ORA-00023: 会话引用进程私用内存;无法分离会话ORA-00024: 单一进程模式下不允许从多个进程注册ORA-00025: 无法分配ORA-00026: 丢失或无效的会话 IDORA-00027: 无法删去当前会话ORA-00028: 您的会话己被删去ORA-00029: 会话不是用户会话ORA-00030: 用户会话 ID 不存在。

ORA-00031: 标记要删去的会话ORA-00032: 无效的会话移植口令ORA-00033: 当前的会话具有空的移植口令ORA-00034: 无法在当前 PL/SQL 会话中ORA-00035: LICENSE_MAX_USERS 不能小于当前用户数ORA-00036: 超过递归 SQL () 级的最大值ORA-00037: 无法转换到属于不同服务器组的会话ORA-00038: 无法创建会话: 服务器组属于其它用户ORA-00050: 获取入队时操作系统出错ORA-00051: 等待资源超时说明:如果Oracle在等待资源时出现超时错误,会触发此异常。

ORA-00052: 超出最大入队资源数 ()ORA-00053: 超出最大入队数ORA-00054: 资源正忙,要求指定 NOWAIT英文解析:resource busy and acquire with NOWAIT specified 错误解析:表被锁住了,要不等待表解锁,要不就去kill了它。

Oracle_ORA一些错误整理

Oracle_ORA一些错误整理

1、ORA-12560: TNS: 协议适配器错误场景:在cmd窗口输入:sqlplus "/as sysdba"想打开数据库时报的错;原因:没有启动Oracle服务器;解决:WIN+R,跳出运行窗口,输入"services.msc",打开服务窗口;找到OracleServiceORACLE服务,查看是否为启动,右键启动即可。

2、ORA-12541:TNS:no listener场景:用pl/sql developer客户端连接数据库;原因:监听器没有启动;解决:打开服务,启动OracleOraDB12Home1TNSListener。

3、ORA-28547:connection to server failed,probable Oracle Net admin error 场景:将监听器配置文件:listener.ora中的SID_NAME 更改后导致的;原因:多数是因为navicat本地的OCI版本与Oracle服务器器不符造成的;解决:将SID_NAME修改为原来的名称。

4、ORA-01438因为插入的数值大于所在的列的最大允许精度。

5、ORA-12899字符值大于此列指定的允许精度6、ORA-00942:表或视图不存在表或试图不存在7、ORA-01400: 无法将NULL 插入("SCOTT"."ITEMS"."ITEMNAME")因向表中插入数据时,主键/约束的列为空。

8、ORA-00001: 违反唯一约束条件(SCOTT.PK_ITEMS)因想表中插入数据时,某列设置了唯一约束,插入的值,表中已经存在了。

9、ORA-01017: 用户名/口令无效; 登录被拒绝有可能用户名或者密码错误10、ORA-01507有可能是关系数据库后,启动的时候没有加载数据库,如:startup nomount就是启动实例不加载数据库的11、ORA-01034: ORACLE not available数据库处于关闭状态。

oracle基础~报错汇总与解决办法

oracle基础~报错汇总与解决办法

oracle基础~报错汇总与解决办法1 错误代码: ora-27101 ora-01034 shard memory realm does not exit错误分析: 此错误是不能连接oracle服务器的提⽰,代表oracle服务整体异常,重启oracle服务能恢复正常,再进⾏memory_target调整,降低配置(内存不够⽤ 11G) 就能进⾏恢复了2 错误代码 ORA-00600: internal error code, arguments: [ktbsdp2], [18446744073709551615], [], [], [], [], [], [], [], [], [], [],分析:1 根据错误获取致命错误事务位置和 object 具体对象2 select object_name,owner from dba_objects where object_id='object_id' ; 获取对应的表名3 此表进⾏重建,然后将数据插⼊总结1 定期进⾏打补丁升级修复漏洞可能导致ora-006002 热点表IO 读写过⼤,当IO读写达到零界点的时候是可能导致表损坏的。

如果热点SQL或热点表没有索引,这是⼤忌,⼀般情况需要创建索引3 错误代码 ora-00845 MEMORY_TARGET not supported on this system错误分析在Oracle 11g中如果采⽤AMM内存管理,那么当MEMORY_TARGET的值⼤于/dev/shm的时候,就会报ORA-00845: MEMORY_TARGET not supported on this system错误,解决办法增加/dev/shm⼤⼩,在redhat系列系统中,/dev/shm的默认值是系统总内存的⼀半修改/etc/fstab 磁盘挂载相关。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

ORACLE常见错误代码的分析与解决来源:网络收集加入时间:04月18日 13:40在使用ORACLE的过程过,我们会经常遇到一些ORACLE产生的错误,对于初学者而言,这些错误可能有点模糊,而且可能一时不知怎么去处理产生的这些错误,本人就使用中出现比较频繁的错误代码一一做出分析,希望能够帮助你找到一个合理解决这些错误的方法,同时也希望你能够提出你的不同看法。

毕竟作为一种交流的手段,个人意见难免过于偏颇,而且也必定存在着不足,出错之处在所难免。

写这篇文章的目的就是想通过相互之间的交流共同促进,共同进步。

ORA-01650:unable to extend rollback segment NAME by NUM intablespace NAME产生原因:上述ORACLE错误为回滚段表空间不足引起的,这也是ORACLE数据管理员最常见的ORACLE错误信息。

当用户在做一个非常庞大的数据操作导致现有回滚段的不足,使可分配用的回滚段表空间已满,无法再进行分配,就会出现上述的错误。

解决方式:使用“ALTER TABLESPACE tablespace_name ADD DATAFILE filename SIZE size_of_file”命令向指定的数据增加表空间,根据具体的情况可以增加一个或多个表空间。

当然这与还与你主机上的裸盘设备有关,如果你主机的裸盘设备已经没有多余的使用空间,建议你不要轻意的增加回滚段表空间的大小,可使用下列的语句先查询一下剩余的tablespace空间有多少:Select user_name,sql_text from V$open_cursor where user_name=’<user_name>’;如果多余的空间比较多,就可以适当追加一个大的回滚段给表空间使用,从而避免上述的错误。

你也可以用以下语句来检测一下rollback segment的竞争状况:Select class,count from V$waitstat where calss in(‘system undo header’,’system undo block’,’undoheader’,’undo block’);和Select sum(value) from V$sysstat where name in (‘db_block_gets’,’consistents gets’);如果任何一个class in count/sum(value)大于1%,就应该考虑增加rollback segment。

相应的英文如下:Cause:Failed to allocate extent from the rollback segment in tablespaceAction:Use the ALTER TABLESPACE ADD DATAFILE statement to add one or more files to the specifiedtablespace.ORA-01652:unable to extend temp segment by num in tablespace name 产生原因:ORACLE临时段表空间不足,因为ORACLE总是尽量分配连续空间,一但没有足够的可分配空间或者分配不连续就会出现上述的现象。

解决方法:我们知道由于ORACLE将表空间作为逻辑结构-单元,而表空间的物理结构是数据文件,数据文件在磁盘上物理地创建,表空间的所有对象也存在于磁盘上,为了给表空间增加空间,就必须增加数据文件。

先查看一下指定表空间的可用空间,使用视图SYS.DBA_FREE_SPACE,视图中每条记录代表可用空间的碎片大小:SQL>Select file_id,block_id,blocks,bytes fromsys.dba_free_space where tablespace_name=’<users>’;返回的信息可初步确定可用空间的最大块,看一下它是否小于错误信息中提到的尺寸,再查看一下缺省的表空间参数:SQL>SELECT INITIAL_EXTENT,NEXT_EXTENT,MIN_EXTENTS,PCT_INCREASE FROM SYS.DBA_TABLESPACES WHERETABLESPACE_NAME=name;通过下面的SQL命令修改临时段表空间的缺省存储值:SQL>ALTER TABLESPACE name DEFAULT STORAGE (INITIAL XXX NEXT YYY); 适当增大缺省值的大小有可能解决出现的错误问题,也可以通过修改用户的临时表空间大小来解决这个问题:SQL>ALTER USER username TEMPORARY TABLESPACEnew_tablespace_name;使用ALTER TABLESPACE命令,一但完成,所增加的空间就可使用,无需退出数据库或使表空间脱机,但要注意,一旦添加了数据文件,就不能再删除它,若要删除,就要删除表空间。

一个报错例子如下:ORA-1652:unable to extend temp segment by 207381 in tablespace TEMPSPACE相应的英文如下:Cause: Failed to allocate extent for temp segment in tablespace Action:Use the ALTER TABLESPACE ADD DATAFILE statement to add one or more files to the specifiedtablespace or create the object in another tablespace.产生原因:当ORACLE访问一个数据块时,由于1、硬件的I/O错误;2、操作系统的I/O错误或缓冲问题;3、内存或paging问题;4、ORACLE试图访问一个未被格式化的系统块失败;5、数据文件部分溢出等上述几种情况的一种引起了逻辑坏块或者物理坏块,这时就会报ORA-01578的错误。

解决方式:由于ORACLE只有在访问到有问题的数据文件时才会报错,所以报错的时间有可能会比实际出错的时间要晚,如果ORA-01578出错信息提示数据坏块指向的是用户自己的数据文件,则用以下方法来解决:如果通过下面的SQL语句查出的坏块出现有索引上,则只需重建索引即可SQL>Select owner,segment_name,segment_type from dba_extents where file_id=<F> and <B> between block_id andblock_id+blocks-1;(<F>和<B>分别是ORA-01578报出的坏块出现的文件号和块号)如果坏块出现在表上,先用以下语句分析是否为永久性坏块(建议多执行一两次,有助于鉴别数据坏块是永久性的(硬盘上的物理坏块)还是随机性的(内存或硬件错误引起)):SQL>Analyze table <table_name> validate structure cascade;执行该命令后,可能会出现以下的结果:ORA-01578:与原先错误信息有相同的参数,为永久性的物理或逻辑坏块;与原先错误信息有不同的参数,可能与内存,page space和I/O设备有关。

如果用户有此表的最新备份,那么最好是用此备份来恢复此表,或者使用event 10231来取出坏块以外的数据:<1>.先关闭数据库<2>.编辑init<sid>.ora文件,加入:event=”10231 trace name context forever,level 10”<3>.startup restrict<4>.创建一个临时表:SQL>create table errortemp as select * from error;(error是坏表的表名)<5>.把event从init<sid>.ora文件中删掉并重起数据库<6>.rename坏表,把临时表rename成坏表的表名<7>.创建表上的INDEX等如果ORA-01578出错信息提示数据坏块指向的是数据字典或者是回滚段的话,你应该立即与ORACLE公司联系,共同商量一个好的解决办法。

这里所讲的解决方法只是比较常见的一种,一些更为具体的解决办法可以查看一下ORACLE的故障解决手册,那里面有浞及使用ROWID方法来取出坏块以外的数据的方法,这里就不介绍了。

相应的英文如下:Cause:The given data block was corrupted,probably due to program errorsAction:Try to restore the segment containing the given data block,This may involve dropping the segmentand recreating it,If there is a trace file,report the messages recorded in it to customer support.ORA-01628:max # of extents num reached for rollback segment num 产生原因:这种错误通常为一个回滚段和一个表空间已经达到MAXEXTENTS参数设置的极限。

要注意的是这个MAXEXTENTS不是该回滚段或表空间的硬件极限,硬件极限取决于数据库创建时在init.ora文件中指定的DB_BLOCK_SIZE参数的值。

解决方法:使用SQL命令ALTER TABLESPACE…STORAGE(MAXEXTENTS XXXX)来增加 MAXEXTENTS,其中“XXXX”值必须大于错误信息中所指的数值,但不能大于LARGEST MAXEXTENT的值,如果已经达到了LARGEST MAXEXTENT VALUE,解决的办法就是重新创建较大的范围尺寸,使用带有选项COMPRESS=Y的Export工具导出表,如果表空间有可用空间,先给表做一个备份,用alter tablespace tablespace_name更改其名字,然后再装载表回数据库。

查看其错误出现的地方,如果出现在回滚段或索引上,那么必须将其删除并重建,如果出现在临时表空间,修改临时表空间的存储字段,便可解决这个问题。

相关文档
最新文档