ORCALE异常错误处理

合集下载

oracle常见故障处理手册

oracle常见故障处理手册

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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常见错误处理系列-ORA-00600

ORACLE常见错误处理系列-ORA-00600

3.修改/etc/hosts配置文件中的对应主机名。
将hostname添加到/etc/hosts文件中,重新启动数据库。
解释:
如果出现这个bug时,启动实例时报ORA-00600: [keltnfy-ldmInit], [46]错误,如果没有创建数据库,将无法创建数据库,同时sqlplus连接数据库会非常慢,这时大家可以用lsof去看sqlplus进程在干什么。
补充一点:修改linux主机名可以分三步走,按此步骤改肯定不会有问题:
1.hostname命令修改主机名,即时生效,重新登陆shell即可看到修改后的主机名。
2.修改/etc/sysconfig/network文件中的主机名,使主机名的修改永久生效(不经此步,机器重启后,主机名将被恢复为原先的)。
ORACLE常见错误处理系列-ORA-00600:internal error code,arguments:[keltnfy-ldmInit],[46],[1],[],[2008-01-13 01:47 启动数据库的时候得到一个错误ORA-00600: internal error code, arguments: [keltnfy-ldmInit], [46], [1], [], []。
在10gR2+rhel4u1中,一般不要随便修改机器的名称,如果要修改机器名,稍一不慎重,就有可能会触发ORA-00600: [keltnfy-ldmInit], [46]这样的错误,最严重的结果是实例无法启动,如果一定要修改机器名,需要修改的比较彻底,需要修改/etc/hosts,/etc/sysconfig/network这两个文件,如果忘了将/etc/hosts中127.0.0.1对应的机器修改成network文件中的一样,将会导致上面描述的错误。

oracle常见故障处理

oracle常见故障处理

oracle常见故障处理
--1.语句级故障,通常为DML ,DQL,DCL,DDL等等
⽆效数据 -->使⽤数据符合相关约束,满⾜值域的数据
缺少权限 -->给予⽤户所需的权限
空间分配问题 -->使⽤alter session enable resumable,增加⽤户配额,增加表空间⼤⼩
应⽤程序逻辑错误 -->修正逻辑错误
--2.⽤户进程故障
⽤户⾮登出的异常退出
⽤户会话异常终⽌
程序错误导致会话结束
对于上述错误,实例后台进程PMON会⾃动回滚未提交的事务,并释放相关锁资源
--3.⽹络故障
侦听器故障 -->配置⼀个备份的侦听器,connect-time故障转移
⽹络接⼝卡故障 -->使⽤多个⽹络接⼝卡
⽹络连接故障(路由) -->配置⼀个备份的⽹络连接
--4.⽤户错误
⽤户意外删除或修改数据 -->回滚或使⽤闪回查询来恢复
⽤户删除表 -->从回收站闪回删除
--5.介质故障
磁盘故障
磁盘控制器故障
删除或损坏数据⽂件
可能的解决⽅案,使⽤联机事务⽇志从备份恢复受影响的⽂件或恢复数据⽂件到新的物理位置
--6.实例故障
电源负载故障
硬件故障
后台进程失败
异常关闭数据库
解决⽅案,使⽤startup 重新启动实例。

实例实现⾃动恢复,根据联机⽇志⽂件前滚提交的事务,回滚未提交的事务查看告警⽇志、跟踪⽇志等找出出现故障的原因。

oracle数据库中ora-报错原因及处理

oracle数据库中ora-报错原因及处理

ORA-00214 控制文件''版本与文件''版本不一致 ORA-00215 必须至少存在一个控制文件 ORA-00216 无法重新调整从8.0.2移植的控制文件大小 ORA-00217 从9.0.1进行移植无法重新调整控制文件的大小 ORA-00218 控制文件的块大小与DB_BLOCK_SIZE()不匹配 ORA-00219 要求的控制文件大小超出了允许的最大值 ORA-00220 第一个例程未安装控制文件,有关详情,请检查警告日志 ORA-00221 写入控制文件出错 ORA-00222 操作将重新使用当前已安装控制文件的名称 ORA-00223 转换文件无效或版本不正确 ORA-00224 控制文件重设大小尝试使用非法记录类型() ORA-00225 控制文件的预期大小与实际大小不同 ORA-00226 备用控制文件打开时不允许进行操作 ORA-00227 控制文件中检测到损坏的块:(块,#块) ORA-00228 备用控制文件名长度超出了最大长度 ORA-00229 操作不允许:已挂起快照控制文件入队 ORA-00230 操作不允许:无法使用快照控制文件入队 ORA-00231 快照控制文件未命名 ORA-00232 快照控制文件不存在,已损坏或无法读取 ORA-00233 控制文件副本已损坏或无法读取 ORA-00234 标识或打开快照或复制控制文件时出错 ORA-00235 控制文件固定表因并发更新而不一致 ORA-00236 快照操作不允许:挂上的控制文件为备份文件 ORA-00237 快照操作不允许:控制文件新近创建 ORA-00238 操作将重用属于数据库一部分的文件名 ORA-00250 未启动存档器 ORA-00251 LOG_ARCHIVE_DUPLEX_DEST不能是与字符串相同的目的地 ORA-00252 日志在线程上为空,无法存档 ORA-00253 字符限制在以内,归档目的字符串超出此限制 ORA-00254 存档控制字符串''时出错 ORA-00255 存档日志(线程,序列#)时出错 ORA-00256 无法翻译归档目的字符串 ORA-00257 存档器错误。在释放之前仅限于内部连接 ORA-00258 NOARCHIVELOG模式下的人工存档必须标识日志 ORA-00259 日志(打开线程)为当前日志,无法存档 ORA-00260 无法找到联机日志序列(线程) ORA-00261 正在存档或修改日志(线程)

Oracle_存储过程exception异常处理大全及实例经典最终

Oracle_存储过程exception异常处理大全及实例经典最终

Oracle_存储过程exception异常处理大全及实例经典最终异常处理是编程中非常重要的一部分,它允许我们处理代码中可能出现的错误和异常情况,以确保程序的稳定性和正确性。

在Oracle存储过程中,我们可以使用异常处理来捕获并处理各种类型的异常。

下面是Oracle存储过程中常见的一些异常以及它们的处理方式:1.NO_DATA_FOUND:当SELECT语句或游标未找到任何数据时引发此异常。

通常使用一个特殊值或条件来处理这种异常,例如使用NULL值或设置默认值。

示例:```sqlDECLAREv_data NUMBER;BEGINSELECT column INTO v_data FROM table WHERE condition;--处理数据EXCEPTIONWHENNO_DATA_FOUNDTHENv_data := 0; -- 设置默认值为0END;```2.TOO_MANY_ROWS:当SELECT语句或游标返回多行数据时引发此异常。

通常使用限制条件来确保只返回一行数据,或者使用游标来处理多行数据。

示例:```sqlDECLARECURSOR c_data IS SELECT column FROM table WHERE condition;v_data NUMBER;BEGINOPEN c_data;FETCH c_data INTO v_data;IF c_data%FOUND THEN--处理数据...ELSE--处理异常情况...ENDIF;CLOSE c_data;EXCEPTIONWHENTOO_MANY_ROWSTHEN--处理异常情况...END;```3.DUP_VAL_ON_INDEX:当INSERT或UPDATE语句违反唯一性约束时引发此异常。

通常使用异常处理块来处理该异常或使用MERGE语句来处理重复数据。

示例:```sqlBEGININSERT INTO table (column1, column2) VALUES (value1, value2);EXCEPTIONWHENDUP_VAL_ON_INDEXTHEN--处理异常情况...END;```4.VALUE_ERROR:当数据类型转换错误或算术溢出时引发此异常。

oracle exception error message

Oracle数据库中的异常错误信息可以通过PL/SQL的异常处理机制来获取。

当在Oracle数据库中执行操作时,如果发生错误,会触发一个异常,并且可以通过捕获该异常来获取相关的错误信息。

在PL/SQL中,可以使用BEGIN ... EXCEPTION ... END;块结构来捕获异常。

当在BEGIN ... END;块中的代码引发异常时,控制将转移到与该异常匹配的EXCEPTION部分。

以下是一个示例,演示如何在PL/SQL中捕获异常并获取错误消息:sqlDECLAREv_error_message VARCHAR2(4000);BEGIN-- 执行可能引发异常的数据库操作-- 例如:-- INSERT INTO table_name (column1, column2) VALUES (value1, value2);EXCEPTIONWHEN OTHERS THENv_error_message := SQLERRM; -- 获取错误消息DBMS_OUTPUT.PUT_LINE('发生异常:' || v_error_message); -- 输出错误消息END;在上面的示例中,我们声明了一个变量v_error_message来存储错误消息。

在BEGIN ... END;块中,我们执行可能引发异常的数据库操作。

如果在执行过程中发生异常,控制将转移到EXCEPTION部分。

在EXCEPTION部分,我们使用WHEN OTHERS THEN语句来捕获所有其他类型的异常。

然后,我们将SQLERRM函数的返回值赋给v_error_message变量,该函数返回与异常关联的错误消息。

最后,我们使用DBMS_OUTPUT.PUT_LINE过程将错误消息输出到控制台。

请注意,上述示例中的代码是PL/SQL代码,需要在Oracle数据库环境中执行。

此外,还可以使用其他PL/SQL异常处理机制,如自定义异常、异常传播等来更详细地处理异常和错误。

Oracle ORA-01033 错误,ORA-12528 错误和ORA-01041错误处理

问题描述:1. 以SYSDBA 身份连接 C:\>sqlplus sys/orcl@orcl as sysdba ,登陆ORCL 库,执行关闭(SHUTDOWN)数据库。

2.然后重新启动(STARTUP)数据库时报错:ORA-12528 :TNS:监听程序:所有适用的例程都不允许建立新的连接ORA-01041:内部错误,hostdef扩展名不存在。

3. 重新用 C:\>sqlplus sys/orcl@orcl as sysdba 登录数据库输入用户和密码后报 ORA-01033:ORACLE initialization or shutdown in progress 的错误。

解决思路:1.首先查看listener状态,在命令行输入lsnrctl status ,结果中显示监听例程ORCL状态为"BLOCKED";2. 以SYSDBA权限登录(注意不指定数据库名),具体步骤:1) 开始 - 运行 -cmd2) 命令行中输入 SQLPLUS SYS/密码 AS SYSDBA3) 输入 SHUTDOWN IMMEDIATE4) 输入 STARTUP再次输入用户和密码登录成功,查看listener状态,结果中显示监听例程ORCL 状态为READY。

问题分析:1、在以 C:\>sqlplus sys/orcl@orcl as sysdba 登陆时,是在库ORCL操作,完成 SHUTDOWN 后,执行STARTUP 时始终是在库ORCL中操作,而这时ORCL 已经关闭了,因此出现错误。

2、重新以 C:\>sqlplus sys/orcl as sysdba 登陆,以空例程登陆时,再STARTUP 时就可以将库ORCL 重新启动。

备注:(1)当有多个数据库实例时,执行shutdown会关闭所有数据库实例,要重新打开,执行startup,而不要指明具体的实例(2)先执行shutdown会关闭所有数据库实例,然后执行startup open orcl,此时执行lsnrctl status ,结果中显示监听例程中其他的数据库实例状态为"BLOCKED";此时通过执行lsnrctl stop和lsnrctl start并不能将这些数据库实例状态从"BLOCKED"变成“Ready”。

ORACLE 数据库故障解决方案

ORACLE 数据库故障解决方案一、引言ORACLE 数据库是一种常用的关系型数据库管理系统,用于存储和管理大量的结构化数据。

然而,在数据库运行过程中,可能会遇到各种故障,如数据库崩溃、数据丢失、性能下降等。

本文将介绍一些常见的ORACLE数据库故障解决方案,以匡助管理员快速恢复数据库的正常运行。

二、数据库崩溃的解决方案1. 数据库崩溃可能由于硬件故障、软件错误、人为操作等原因引起。

当数据库崩溃时,管理员应采取以下步骤进行故障排查和修复:a. 检查数据库日志文件,查找崩溃前的异常信息;b. 尝试重启数据库实例,使用备份恢复数据;c. 如果无法恢复数据,可以考虑使用数据库恢复工具进行修复。

2. 数据丢失的解决方案数据丢失可能由于误删除、磁盘损坏等原因导致。

为了防止数据丢失,管理员应采取以下预防措施:a. 定期备份数据库,并将备份文件存储在安全的位置;b. 使用数据库的日志文件功能,可以实现数据的增量备份;c. 配置RAID技术,提高数据库的容错能力。

3. 性能下降的解决方案当数据库性能下降时,可能会导致用户访问延迟、查询速度变慢等问题。

管理员可以采取以下措施来提高数据库性能:a. 优化数据库的查询语句,使用索引、视图等技术来加速查询;b. 增加硬件资源,如CPU、内存等,提升数据库的处理能力;c. 定期清理数据库,删除不必要的数据和索引,减少数据库的负载。

4. 数据库安全的解决方案数据库安全是保护数据库免受未经授权的访问和数据泄露的重要任务。

管理员应采取以下安全措施来保护数据库:a. 设置强密码策略,要求用户使用复杂的密码,并定期更换密码;b. 限制数据库用户的权限,只赋予其必要的访问权限;c. 定期更新数据库软件和补丁,以修复已知的安全漏洞;d. 使用防火墙和入侵检测系统,监控数据库的网络访问。

三、总结本文介绍了ORACLE数据库常见故障的解决方案,包括数据库崩溃、数据丢失、性能下降和数据库安全等方面。

Oracle数据库 ORA-28000 错误处理方式

Oracle数据库 ORA-28000 错误处理方式ORA-28000: the account is locked-的解决办法ORA-28000: the account is locked第一步:使用PL/SQL,登录名为system,数据库名称不变,选择类型的时候把Normal修改为Sysdba;第二步:选择myjob,查看users;第三步:选择system,右击点击“编辑”;第四步:修改密码,把“帐户被锁住”的勾去掉;第五步:点击“应用”再点击“关闭”;第六步:重新登录就可以通过验证了;第二种ALTER USER username ACCOUNT UNLOCK;第三种在plsql developer中要是以scott/tiger登录时提示ora-28000 the account is locked。

解决办法:新装完Oracle10g后,用scott/tiger测试,会出现以下错误提示:oracle10g the account is lockedoracle10g the password has expired原因:默认Oracle10g的scott不能登陆。

解决:(1)conn sys/sys as sysdba; //以DBA的身份登录(2)alter user scott account unlock;// 然后解锁(3)conn scott/tiger //弹出一个修改密码的对话框,修改一下密码就可以了在运行里面输入cmd在DOS模式下输入sqlplus,以system用户名登录,密码是刚装oracle时自己填写的密码orcl,登录进去以后。

SQL> conn sys/sys as sysdba; (分号是必须的但是我是以system登录的所在这不应该写conn sys/sys as sysdba应该写conn system/orcl as sysdba;)Connected.SQL> alter user scott account unlock;User altered.SQL> commit;Commit complete.SQL> conn scott/tiger//请输入新密码,并确认后OKPassword changedConnected.这时再到plsql developer里面以scott/tiger登录就可以了。

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

1.ORACLE预定义常见的异常错误
2.ORACLE用户定义的异常处理
调用DBMS_STANDARD(ORACLE提供的包)包所定义RAISE_APPLICATION_ERROR过程,可以重新定义异常错误消息
RAISE_APPLICATION_ERROR的语法如下:
RAISE_APPLICATION_ERROR(error_number,error_message,[keep_errors]);
这里的error_number是从–20,000 到–20,999 之间的参数,
error_message是相应的提示信息(< 2048 字节),
keep_errors为可选,如果keep_errors =TRUE ,则新错误将被添加到已经引发的错误列表中。

如果keep_errors=FALSE(缺省),则新错误将替换当前的错误列表。

3.捕获ORACLE用户定义的异常处理
首先,在存储过程里声明以下参数:
empno_remaining EXCEPTION;
PRAGMA EXCEPTION_INIT(empno_remaining, error_number);
error_number是调用的接口所自定义的异常参数
然后通过以下的格式捕获异常
EXCEPTION
WHEN empno_remaining THEN
--详细处理代码—
4.ORCALE注意点
ORACLE提供的所定义DBMS_UTILITY.format_error_backtrace过程,其主要作用是捕获异常
发生所在行,DBMS_UTILITY.format_error_backtrace 跟错误信息相拼是放在
RAISE_APPLICATION_ERROR(error_number,error_message,[keep_errors])中的error_message,在PICC系统中最好把DBMS_UTILITY.format_error_backtrace放在最后,否则放在的其后面是信息
在PICC错误页面是无法显示的。

5.系统中ORCALE异常错误处理
PICC中自定义异常已通过P_ERROR(I_TYPE_ID number, I_MSG varchar2)接口进行了封装
其主要的代码
create or replace procedure P_ERROR(I_TYPE_ID number, I_MSG varchar2) is
begin
raise_application_error(-20100, I_TYPE_ID || ',' || I_MSG);
end P_ERROR;
所以I_TYPE_ID 并不是上述的error_number,I_TYPE_ID是t_string_resource中的信息主键,
对于P_ERROR封装的错误信息在ExceptionFactory.java中的parse()方法中进行了详细的解码。

P_ERROR 封装的异常错误码都是-20100 不具备特殊性,所以在需求中遇到特殊的ORCALE异常错误处理,需要我们通过原始的raise_application_error来自定义异常,当要注意在
ExceptionFactory.java是否需要进行特殊的处理。

相关文档
最新文档