ORACLE常见错误代码的分析与解决
- 格式:doc
- 大小:59.50 KB
- 文档页数:18
常见错误: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常见故障处理手册一、数据库启动与关闭故障1.数据库启动失败原因:可能是由于Oracle数据库配置不正确、系统环境变量设置不正确、初始化参数设置不正确等原因导致。
解决方法:检查数据库日志文件,查看错误信息,根据错误信息进行相应的修复。
2.数据库关闭失败原因:可能是由于数据库事务未完成、数据库锁未释放等原因导致。
解决方法:检查数据库日志文件,查看错误信息,根据错误信息进行相应的修复。
二、连接故障1.连接不成功原因:可能是由于网络连接问题、数据库用户名或密码错误、数据库实例名错误等原因导致。
解决方法:检查网络连接是否正常,检查数据库用户名和密码是否正确,检查数据库实例名是否正确。
2.连接断开原因:可能是由于网络不稳定、数据库服务器异常等原因导致。
解决方法:检查网络连接是否正常,检查数据库服务器是否正常。
三、数据恢复故障1.数据丢失原因:可能是由于数据库损坏、磁盘故障等原因导致。
解决方法:根据数据丢失的原因,选择相应的恢复方法,如使用备份恢复数据或使用日志文件恢复数据。
2.数据不一致原因:可能是由于数据修改不一致、数据复制不一致等原因导致。
解决方法:检查数据修改和复制的日志文件,找到不一致的数据并修复。
四、性能优化故障1.性能下降原因:可能是由于CPU占用过高、内存占用过高、磁盘IO过大等原因导致。
解决方法:优化数据库配置参数,如增加内存、优化磁盘IO等。
2.查询速度慢原因:可能是由于查询语句不优化、表没有建立索引等原因导致。
解决方法:优化查询语句,为表建立索引等。
五、存储管理故障1.存储空间不足原因:可能是由于磁盘空间不足、表空间不足等原因导致。
解决方法:清理磁盘空间,增加磁盘空间,调整表空间大小等。
2.数据文件丢失或损坏原因:可能是由于磁盘故障、人为误删除或修改等原因导致。
解决方法:使用备份恢复数据文件或修复损坏的数据文件。
六、网络连接故障1.网络连接中断原因:可能是由于网络设备故障、网络连接线故障等原因导致。
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 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. 检查和调整数据库参数某些数据库参数可能需要调整以支持旧版本客户端的连接。
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数据库在运行过程中可能会遇到各种错误,下面列举几个报错案例以及相应的解决思路: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常见错误及解决⽅法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产生的错误,对于初学者而言,这些错误可能有点模糊,而且可能一时不知怎么去处理产生的这些错误,本人就使用中出现比较频繁的错误代码一一做出分析,希望能够帮助你找到一个合理解决这些错误的方法,同时也希望你能够提出你的不同看法。
毕竟作为一种交流的手段,个人意见难免过于偏颇,而且也必定存在着不足,出错之处在所难免。
写这篇文章的目的就是想通过相互之间的交流共同促进,共同进步。
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 常见错误及解决办法,包括以下内容: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常见错误代码的分析与解决来源:网络收集加入时间: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更改其名字,然后再装载表回数据库。
查看其错误出现的地方,如果出现在回滚段或索引上,那么必须将其删除并重建,如果出现在临时表空间,修改临时表空间的存储字段,便可解决这个问题。