1

oracle异常处理 - xiezhr

 1 year ago
source link: https://www.cnblogs.com/xiezhr/p/17343502.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

oracle异常处理

最近在工作中遇到这么一个场景:

  • 在同一网段内存在着A库和B库,需要将A库下某些表的数据同步到B库
  • B库跑着定时任务,定时调用存储过程将A库下的数据同步到B库。
  • B库和A库是通过建立dblink建立连接的。【关于dblink相关可能会后面单独写博客,先给自己挖个坑,慢慢填 哈哈】。
  • 定时任务的频次呢是10分钟增量同步一次。

但是随着时间推移,问题出来了:一部分数据没同步过去。

排查步骤:

  • 检查定时任务是不是被终止了
  • 检查存储过程是不是出问题了
  • 检查A库中的目标数据是不是不符合规范

排查思路是将从A库中同步到B库的数据都删了,然后手动调用过程,发现全部数据可以正常同步过去,这样就将上面三种情况都排除了。

这就令人很费解了,是哪出问题了呢?最后将问题定位在执行存储过程中,由于某种原因发生了异常,导致数据同步失败。这样看来是存储过程写的不够完善,某些异常没考虑进去。

吸取以上事例教训,下面就来探究下Oracle中异常处理流程

1 异常概念

和其他编程语言一样,用PL/SQL编写的程序,在运行过程中也会出现各种错误,这些错误就是异常。
举个栗子:

declare
v_result number(10) :=0;
begin
    v_result := 10/0;
    dbms_output.put_line('结果是:'||v_result);
end;

以上脚本执行时就会发生除数为0的异常

2 异常分类

  • 预定义异常 (与Oracle 中的错误有关,当出现错误时会自动触发)
  • 非预定义异常(与Oracle 中的错误有关,当出现错误时会自动触发)
  • 自定义异常 (人为的为某种特殊情况定义的异常,不会自动触发,需要显示的操作来触发)

3 异常处理

3.1 异常处理语法

exception
    when exception1 [or exception2...] then   --异常列表
        statement...                          --异常处理语句
    when exception3 [or exception4...] then   --异常列表
         statement...                         --异常语句
    when others then                         
        statement...

--exception 表示申明异常块部分,它是异常处理部分开始标志
-- where 后面是异常列表
-- then 后面是异常处理语句 也就是发生的异常和异常列表里的异常匹配是,执行的指定语句
-- 可以有多个when
--when others then 是异常处理最后部分,表示如果抛出的异常和前面的都不匹配时执行此处  

3.2 预定义异常处理

在oracle中提供一些已经定义好的常用异常,oracle中一共提供了25中预定义异常。
可以根据以下语句查询

select * from dba_source where name='STANDARD' and text like '%EXCEPTION_INIT%'

下面是一些常见异常

Exception ORA Error SQL CODE Condition
CASE_NOT_FOUND ORA-06592 -6592 CASE语句时,WHEN字句没有包含必须的条件分支,并且没有ELSE语句,就会触发该异常
DATA_NOT_FOUND ORA-01403 +100 select into 语句没有返回记录就会触发此异常
TOO_MANY_ROWS ORA-01422 -1422 select into 语句返回记录多余一条就会触发此异常
DUP_VAL_ON_INDEX ORA-00001 -1 当在唯一索引所对应的列上键入重复值时,就会触发该异常
VALUE_ERROR ORA-06522 -06522 赋值是,如果变量长度不足以容纳实际数据,则会触发该异常
ZERO_DIVIDE ORA-01476 -01476 除数为0时触发异常
STORAGE_ERROR ORA-06500 -06500 内存溢出时触发异常
TIMEOUT_ON_RESOURCE ORA-00051 -51 等待资源超时时触发异常
CURSOR_ALREADY_OPEN ORA-06511 -6511 打开一个已经打开的游标时触发异常

举个栗子:

declare
v_result number(10) :=0;
begin
   v_result := 10/0;
   dbms_output.put_line('结果是:'||v_result);
   exception
       when ZERO_DIVIDE then
       dbms_output.put_line('除数为0了');
end;
--除数为0时会立即捕获异常,异常和when中匹配时,执行之后语句。避免程序中断
-- **异常匹配是从上到下的**

3.3 非预定义异常

oracle 中更多的是非预定义异常,它们只有错误编号和错误描述。而没有名称的异常是不能被捕获的。在oracle中允许开发人员为这样的异常取个名称,使他们能够被异常处理模块捕捉到

非预定义异常定义步骤:

  • 申明一个异常名称
  • 把这个名称和异常编号关联起来
  • 在PL/SQL 块的异常情况处理部分对异常情况做出相应的处理
    举个栗子:
--删除指定部门的记录信息,以确保该部门没有员工。
INSERT INTO departments VALUES(50, 'FINANCE', 'CHICAGO');

DECLARE
   v_deptno departments.department_id%TYPE := &deptno;
   deptno_remaining EXCEPTION;    --申明异常
   PRAGMA EXCEPTION_INIT(deptno_remaining, -2292); --把异常名称和错误号关联起来
   /* -2292 是违反一致性约束的错误代码 */
BEGIN
   DELETE FROM departments WHERE department_id = v_deptno;
EXCEPTION
   WHEN deptno_remaining THEN
      DBMS_OUTPUT.PUT_LINE('违反数据完整性约束!');
   WHEN OTHERS THEN
      DBMS_OUTPUT.PUT_LINE(SQLCODE||'---'||SQLERRM);
END;

3.4 自定义异常

用户定义的异常错误是通过显式使用 RAISE 语句来触发。当引发一个异常错误时,控制就转向到 EXCEPTION块异常错误部分,执行错误处理代码。

3.4.1 自定义异常处理步骤

  1. 在PL/SQL 块的定义部分定义异常情况:<异常情况> EXCEPTION;
  2. RAISE <异常情况>;
  3. 在PL/SQL 块的异常情况处理部分对异常情况做出相应的处理。

举个栗子:

--更新指定员工工资,增加100
DECLARE
   v_empno employees.employee_id%TYPE :=&empno;
   no_result  EXCEPTION;
BEGIN
   UPDATE employees SET salary = salary+100 WHERE employee_id = v_empno;
   IF SQL%NOTFOUND THEN
      RAISE no_result;
   END IF;
EXCEPTION
   WHEN no_result THEN
      DBMS_OUTPUT.PUT_LINE('你的数据更新语句失败了!');
   WHEN OTHERS THEN
      DBMS_OUTPUT.PUT_LINE(SQLCODE||'---'||SQLERRM);
END;

4 异常出现位置

4.1 申明部分引发异常错误

在程序申明部分出现错误,那么该错误就能影响到其他块
DECLARE
    abc number(3):='abc';
    其它语句
BEGIN
    其它语句
EXCEPTION
    WHEN OTHERS THEN
    其它语句
END;
-- 以上例子 由于abc number(3)='abc'; 出错,尽管在EXCEPTION中说明了WHEN OTHERS THEN语句,但WHEN OTHERS THEN也不会被执行。这时就需要如下写法才能捕获异常,在该错误语句块的外部有一个异常错误,则该错误能被抓住
BEGIN
    DECLARE
    abc number(3):='abc';
    其它语句
   BEGIN
    其它语句
   EXCEPTION
    WHEN OTHERS THEN
    其它语句
    END;
EXCEPTION
WHEN OTHERS THEN
    其它语句
END;

4.2 执行部分引发异常

  • 1如果当前块对该异常错误设置了处理,则执行它并成功完成该块的执行,然后控制转给包含块。

  • 如果没有对当前块异常错误设置定义处理器,则通过在包含块中引发它来传播异常错误。然后对该包含块执行步骤1)。

5 SQLCODE, SQLERRM异常处理函数

    由于ORACLE 的错信息最大长度是512字节,为了得到完整的错误提示信息,我们可用 SQLERRM和 SUBSTR 函数一起得到错误提示信息。
  • SQLCODE 返回遇到的Oracle错误号
  • SQLERRM 返回遇到的Oracle错误信息
    例如:
SQLCODE=-100    SQLERRM=’no_data_found ‘
SQLCODE=0       SQLERRM=’normal, successfual completion’

常用场景:

-- 1. 将ORACLE错误代码及其信息存入错误代码表
CREATE TABLE errors (errnum NUMBER(4), errmsg VARCHAR2(100));

DECLARE
   err_msg  VARCHAR2(100);
BEGIN
   /*  得到所有 ORACLE 错误信息  */
   FOR err_num IN -100 .. 0 LOOP
      err_msg := SQLERRM(err_num);
      INSERT INTO errors VALUES(err_num, err_msg);
   END LOOP;
END;
DROP TABLE errors;
--2. 查询ORACLE错误代码;
BEGIN
   INSERT INTO employees(employee_id, first_name,last_name,hire_date,department_id)
   VALUES(1111, '张','三', SYSDATE, 20);
   DBMS_OUTPUT.PUT_LINE('插入数据记录成功!');
  
   INSERT INTO employees(employee_id, first_name,last_name,hire_date,department_id)
   VALUES(2222, '李','四', SYSDATE, 20);
   DBMS_OUTPUT.PUT_LINE('插入数据记录成功!');
EXCEPTION
   WHEN OTHERS THEN
      DBMS_OUTPUT.PUT_LINE(SQLCODE||'---'||SQLERRM);   --将错误代码和错误信息打印出来
END;
--3. 利用ORACLE错误代码,编写异常错误处理代码;
DECLARE
   empno_remaining EXCEPTION;
   PRAGMA EXCEPTION_INIT(empno_remaining, -1);
   /* -1 是违反唯一约束条件的错误代码 */
BEGIN
   INSERT INTO employees(employee_id, first_name,last_name,hire_date,department_id)
   VALUES(3333, '王','五', SYSDATE, 20);
   DBMS_OUTPUT.PUT_LINE('插入数据记录成功!');
  
   INSERT INTO employees(employee_id, first_name,last_name,hire_date,department_id)
   VALUES(3333, '赵','六',SYSDATE, 20);
   DBMS_OUTPUT.PUT_LINE('插入数据记录成功!');
EXCEPTION
   WHEN empno_remaining THEN
      DBMS_OUTPUT.PUT_LINE('违反数据完整性约束!');
   WHEN OTHERS THEN
      DBMS_OUTPUT.PUT_LINE(SQLCODE||'---'||SQLERRM);
END;

6 oracle 错误码归纳

errcode err
ORA-00001 违反唯一约束条件 (.)
ORA-00017 请求会话以设置跟踪事件
ORA-00018 超出最大会话数
ORA-00019 超出最大会话许可数
ORA-00020 超出最大进程数 ()
ORA-00021 会话附属于其它某些进程;无法转换会话
ORA-00022 无效的会话 ID;访问被拒绝
ORA-00023 会话引用进程私用内存;无法分离会话
ORA-00024 单一进程模式下不允许从多个进程注册
ORA-00025 无法分配
ORA-00026 丢失或无效的会话 ID
ORA-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 等待资源超时
ORA-00052 超出最大入队资源数 ()
ORA-00053 超出最大入队数
ORA-00054 资源正忙,要求指定 NOWAIT
ORA-00055 超出 DML 锁的最大数
ORA-00056 对象 '.' 上的 DDL 锁以不兼容模式挂起
ORA-00057 超出临时表锁的最大数
ORA-00058 DB_BLOCK_SIZE 必须为才可安装此数据库 (非 )
ORA-00059 超出 DB_FILES 的最大值
ORA-00060 等待资源时检测到死锁
ORA-00061 另一个例程设置了不同的 DML_LOCKS
ORA-00062 无法获得 DML 全表锁定;DML_LOCKS 为 0
ORA-00063 超出 LOG_FILES 的最大数
ORA-00064 对象过大以至无法分配在此 O/S (,)
ORA-00065 FIXED_DATE 的初始化失败
ORA-00066 LOG_FILES 为 但需要成为 才可兼容
ORA-00067 值 对参数 无效;至少必须为
ORA-00068 值 对参数 无效,必须在 和 之间
ORA-00069 无法获得锁定 -- 禁用了表锁定
ORA-00070 命令无效
ORA-00071 进程号必须介于 1 和 之间
ORA-00072 进程""不活动
ORA-00073 命令 介于 和 个参数之间时使用
ORA-00074 未指定进程
ORA-00075 在此例程未找到进程 ""
ORA-00076 未找到转储
ORA-00077 转储 无效
ORA-00078 无法按名称转储变量
ORA-00079 未找到变量
ORA-00080 层次 指定的全局区域无效
ORA-00081 地址范围 [,) 不可读
ORA-00082 的内存大小不在有效集合 [1], [2], [4] 之内
ORA-00083 警告: 可能损坏映射的 SGA
ORA-00084 全局区域必须为 PGA, SGA 或 UGA
ORA-00085 当前调用不存在
ORA-00086 用户调用不存在
ORA-00087 命令无法在远程例程上执行
ORA-00088 共享服务器无法执行命令
ORA-00089 ORADEBUG 命令中无效的例程号
ORA-00090 未能将内存分配给群集数据库 ORADEBUG 命令
ORA-00091 LARGE_POOL_SIZE 至少必须为
ORA-00092 LARGE_POOL_SIZE 必须大于 LARGE_POOL_MIN_ALLOC
ORA-00093 必须介于 和 之间
ORA-00094 要求整数值
ORA-00096 值 对参数 无效,它必须来自 之间
ORA-00097 使用 Oracle SQL 特性不在 SQL92 级中
ORA-00099 等待资源时发生超时,可能是 PDML 死锁所致
ORA-00100 未找到数据
ORA-00101 系统参数 DISPATCHERS 的说明无效
ORA-00102 调度程序无法使用网络协议
ORA-00103 无效的网络协议;供调度程序备用
ORA-00104 检测到死锁;全部公用服务器已锁定等待资源
ORA-00105 未配置网络协议 的调度机制
ORA-00106 无法在连接到调度程序时启动/关闭数据库
ORA-00107 无法连接到 ORACLE 监听器进程
ORA-00108 无法设置调度程序以同步进行连接
ORA-00111 由于服务器数目限制在 , 所以没有启动所有服务器
ORA-00112 仅能创建多达 (最多指定) 个调度程序
ORA-00113 协议名 过长
ORA-00114 缺少系统参数 SERVICE_NAMES 的值
ORA-00115 连接被拒绝;调度程序连接表已满
ORA-00116 SERVICE_NAMES 名过长
ORA-00117 系统参数 SERVICE_NAMES 的值超出范围
ORA-00118 系统参数 DISPATCHERS 的值超出范围
ORA-00119 系统参数 的说明无效
ORA-00120 未启用或安装调度机制
ORA-00121 在缺少 DISPATCHERS 的情况下指定了 SHARED_SERVERS
ORA-00122 无法初始化网络配置
ORA-00123 空闲公用服务器终止
ORA-00124 在缺少 MAX_SHARED_SERVERS 的情况下指定了 DISPATCHERS
ORA-00125 连接被拒绝;无效的演示文稿
ORA-00126 连接被拒绝;无效的重复
ORA-00127 调度进程 不存在
ORA-00128 此命令需要调度进程名
ORA-00129 监听程序地址验证失败 ''
ORA-00130 监听程序地址 '' 无效
ORA-00131 网络协议不支持注册 ''
ORA-00132 语法错误或无法解析的网络名称 ''
ORA-00150 重复的事务处理 ID
ORA-00151 无效的事务处理 ID
ORA-00152 当前会话与请求的会话不匹配
ORA-00153 XA 库中的内部错误
ORA-00154 事务处理监视器中的协议错误
ORA-00155 无法在全局事务处理之外执行工作
ORA-00160 全局事务处理长度 超出了最大值 ()
ORA-00161 事务处理的分支长度 非法 (允许的最大长度为 )
ORA-00162 外部 dbid 的长度 超出了最大值 ()
ORA-00163 内部数据库名长度 超出了最大值 ()
ORA-00164 在分布式事务处理中不允许独立的事务处理
ORA-00165 不允许对远程操作进行可移植分布式自治转换
ORA-00200 无法创建控制文件
ORA-00201 控制文件版本 与 ORACLE 版本 不兼容
ORA-00202 控制文件: ''
ORA-00203 使用错误的控制文件
ORA-00204 读控制文件时出错 (块 ,# 块 )
ORA-00205 标识控制文件出错,有关详情,请检查警告日志
ORA-00206 写控制文件时出错 (块 ,# 块 )
ORA-00207 控制文件不能用于同一数据库
ORA-00208 控制文件的名称数超出限制
ORA-00209 控制文件块大小不匹配,有关详情,请检查警告日志
ORA-00210 无法打开指定的控制文件
ORA-00211 控制文件与先前的控制文件不匹配
ORA-00212 块大小 低于要求的最小大小 ( 字节)
ORA-00213 不能重新使用控制文件;原文件大小为 ,还需
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 正在存档或修改日志 (线程 )
ORA-00262 当前日志 (关闭线程 ) 无法切换
ORA-00263 线程 没有需要存档的记录
ORA-00264 不要求恢复
ORA-00265 要求例程恢复,无法设置 ARCHIVELOG 模式
ORA-00266 需要存档日志文件名
ORA-00267 无需存档日志文件名
ORA-00268 指定的日志文件不存在 ''
ORA-00269 指定的日志文件为线程 的一部分 (非 )
ORA-00270 创建存档日志 时出错
ORA-00271 没有需要存档的日志
ORA-00272 写存档日志 时出错
ORA-00273 未记录的直接加载数据的介质恢复
ORA-00274 非法恢复选项
ORA-00275 已经开始介质恢复
ORA-00276 CHANGE 关键字已指定但未给出更改编号
ORA-00277 UNTIL 恢复标志 的非法选项
ORA-00278 此恢复不再需要日志文件 ''
ORA-00279 更改 (在 生成) 对于线程 是必需的
ORA-00280 更改 对于线程 是按序列 # 进行的
ORA-00281 不能使用调度进程执行介质恢复
ORA-00282 UPI 调用不被支持,请使用 ALTER DATABASE RECOVER
ORA-00283 恢复会话因错误而取消
ORA-00284 恢复会话仍在进行
ORA-00285 TIME 未作为字符串常数给出
ORA-00286 无可用成员,或成员无有效数据
ORA-00287 未找到指定的更改编号 (在线程 中)
ORA-00288 要继续恢复,请键入 ALTER DATABASE RECOVER CONTINUE
ORA-00289 建议:
ORA-00290 操作系统出现存档错误。请参阅下面的错误
ORA-00291 PARALLEL 选项要求数字值
ORA-00292 未安装并行恢复功能
ORA-00293 控制文件与重做日志不同步
ORA-00294 无效的存档日志格式标识 ''
ORA-00295 数据文件号 无效,必须介于 1 与 之间
ORA-00296 已超出 RECOVER DATAFILE LIST 的最大文件数 ()
ORA-00297 必须在 RECOVER DATAFILE START 之前指定 RECOVER DATAFILE LIST
ORA-00298 丢失或无效的 TIMEOUT 间隔
ORA-00299 必须在数据文件 上使用文件级介质恢复
ORA-00300 指定的重做日志块大小 非法 - 超出限制
ORA-00301 添加日志文件 '' 时出错 - 无法创建文件
ORA-00302 日志超出限制
ORA-00303 无法处理多次中断的重做
ORA-00304 请求的 INSTANCE_NUMBER 在使用中
ORA-00305 日志 (线程 ) 不一致;属于另一个数据库
ORA-00306 此数据库中的例程限制
ORA-00307 请求的 INSTANCE_NUMBER 超出限制,最大为
ORA-00308 无法打开存档日志 ''
ORA-00309 日志属于错误的数据库
ORA-00310 存档日志包含序列 ;要求序列
ORA-00311 无法从存档日志读取标题
ORA-00312 联机日志 线程 : ''
ORA-00313 无法打开日志组 (线程 ) 的成员
ORA-00314 日志 (线程 ),预计序号 与 不匹配
ORA-00315 日志 (线程 ),标题中的线程 # 错误
ORA-00316 日志 (线程 ),标题中的类型 不是日志文件
ORA-00317 标题中的文件类型 不是日志文件
ORA-00318 日志 (线程 ),预计文件大小 与 不匹配
ORA-00319 日志 (线程 ) 具有错误的日志重置状态
ORA-00320 无法从日志 (线程 ) 读取文件标题
ORA-00321 日志 (线程 ),无法更新日志文件标题
ORA-00322 日志 (线程 ) 不是当前副本
ORA-00323 线程 的当前日志不可用而所有其它日志均需要存档
ORA-00324 日志文件 '' 的翻译名 '' 太长, 字符超出 限制
ORA-00325 已归档线程 的日志,标题中的线程 # 错误
ORA-00326 日志在更改 开始,需要更早的更改
ORA-00327 日志 (线程 ),实际大小 小于需要的
ORA-00328 归档日志在更改 结束,需要稍后的更改
ORA-00329 归档日志在更改 开始,需要更改
ORA-00330 归档日志在更改 结束,需要更改
ORA-00331 日志版本 与 ORACLE 版本 不兼容
ORA-00332 归档日志过小 - 可能未完全归档
ORA-00333 重做日志读取块 计数 出错
ORA-00334 归档日志: ''
ORA-00335 联机日志 : 没有此编号的日志,日志不存在
ORA-00336 大小为 的日志文件块数小于最小 块数
ORA-00337 日志文件 '' 不存在且未指定大小
ORA-00338 日志 (线程 ) 比控制文件更新
ORA-00339 归档日志未包含任何重做
ORA-00340 处理联机日志 (线程 ) 时出现 I/O 错误
ORA-00341 日志 (线程 ),标题中的日志 # 错误
ORA-00342 归档日志在上一个 RESETLOGS 之前创建程序包
ORA-00343 错误过多,已关闭日志成员
ORA-00344 无法重新创建联机日志 ''
ORA-00345 重做日志写入块 计数 出错
ORA-00346 日志成员标记为 STALE
ORA-00347 日志 (线程 ),预计块大小 与 不匹配
ORA-00348 单一进程重做失败;必须中止例程
ORA-00349 无法获得 '' 的块大小
ORA-00350 日志 (线程 ) 中需要归档
ORA-00351 recover-to 时间无效
ORA-00352 线程 的所有日志均需要归档 - 无法启用
ORA-00353 日志损坏接近块 更改 时间
ORA-00354 损坏重做日志块标题
ORA-00355 更改编号无次序
ORA-00356 更改说明中的长度不一致
ORA-00357 日志文件指定了过多成员,最大为
ORA-00358 指定了过多文件成员,最大为
ORA-00359 日志文件组 不存在
ORA-00360 非日志文件成员:
ORA-00361 无法删除最后一个日志成员 (组 )
ORA-00362 组成组 中的有效日志文件要求输入成员
ORA-00363 日志不是归档版本
ORA-00364 无法将标题写入新日志成员
ORA-00365 指定日志不是正确的下一个日志
ORA-00366 日志 (线程 ),文件标题中的校验和错误
ORA-00367 日志文件标题中的校验和错误
ORA-00368 重做日志块中的校验和错误
ORA-00369 线程 的当前日志不可用且其它日志已被清除
ORA-00370 Rcbchange 操作过程中可能出现死锁
ORA-00371 共享池内存不足
ORA-00372 此时无法修改文件
ORA-00373 联机日志版本 与 ORACLE 版本 不兼容
ORA-00374 参数 db_block_size = 无效; 它必须是 的倍数, 范围为 [..]
ORA-00375 无法获得默认 db_block_size
ORA-00376 此时无法读取文件
ORA-00377 文件 的频繁备份导致写操作延迟
ORA-00378 无法按指定创建缓冲池
ORA-00379 缓冲池 中无法提供 K 块大小的空闲缓冲区
ORA-00380 无法指定 db_k_cache_size, 因为 K 是标准块大小
ORA-00381 无法将新参数和旧参数同时用于缓冲区高速缓存的大小说明
ORA-00382 不是有效的块大小, 有效范围为 [..]
ORA-00383 DEFAULT 高速缓存的块大小 不能减少至零
ORA-00384 没有足够的内存来增加高速缓存的大小
ORA-00385 cannot enable Very Large Memory with new buffer cache parameters
ORA-00390 日志 (线程 ) 正被清除,无法成为当前日志
ORA-00391 所有线程必须同时转换为新的日志格式
ORA-00392 日志 (线程 ) 正被清除,不允许操作
ORA-00393 脱机数据文件的恢复需要日志 (线程 )
ORA-00394 在尝试存档时重新使用联机日志
ORA-00395 '克隆' 数据库的联机日志必须重命名
ORA-00396 错误 需要退回到单次遍历恢复
ORA-00397 对于文件 (块 ), 检测到写入丢失情况
ORA-00398 由于重新配置而中止了线程恢复
ORA-00399 重做日志中的更改说明已损坏
ORA-00400 无效的版本值 (对于参数 )
ORA-00401 此版本不支持参数 的值
ORA-00402 版本 的数据库更改无法用于版本
ORA-00403 () 不同于其它例程 ()
ORA-00404 未找到转换文件: ''
ORA-00405 兼容类型""
ORA-00406 COMPATIBLE 参数需要为 或更大
ORA-00407 不允许从版本 . 到 . 滚动升级
ORA-00408 参数 设置为 TRUE
ORA-00409 COMPATIBLE 必须是 或更高值才能使用 AUTO SEGMENT SPACE MANAGEMENT
ORA-00436 没有 ORACLE 软件使用权,请与 Oracle 公司联系获得帮助
ORA-00437 没有 ORACLE 软件功能使用权,请与 Oracle 公司联系获得帮助
ORA-00438 未安装 选项
ORA-00439 未启用特性:
ORA-00443 背景进程 "" 未启动
ORA-00444 背景进程 "" 启动时失败
ORA-00445 背景进程 "" 在 秒之后仍没有启动
ORA-00446 背景进程意外启动
ORA-00447 背景进程出现致命错误
ORA-00448 背景进程正常结束
ORA-00449 背景进程 '' 因错误 异常终止
ORA-00470 LGWR 进程因错误而终止
ORA-00471 DBWR 进程因错误而终止
ORA-00472 PMON 进程因错误而终止
ORA-00473 ARCH 进程因错误而终止
ORA-00474 SMON 进程因错误而终止
ORA-00475 TRWR 进程因错误而终止
ORA-00476 RECO 进程因错误而终止
ORA-00477 SNP* 进程因错误而终止
ORA-00478 SMON 进程由于 错误终止
ORA-00480 LCK* 进程因错误而终止
ORA-00481 LMON 进程因错误而终止
ORA-00482 LMD* 进程因错误而终止
ORA-00483 关闭进程过程中异常终止
ORA-00484 LMS* 进程因错误而终止
ORA-00485 DIAG 进程由于 错误终止
ORA-00486 功能不可用
ORA-00568 超出中断处理程序的最大数
ORA-00574 osndnt: $CANCEL 失败 (中断)
ORA-00575 osndnt: $QIO 失败 (发送 out-of-band 中断)
ORA-00576 带内中断协议错误
ORA-00577 带外中断协议错误
ORA-00578 重置协议错误
ORA-00579 osndnt: 服务器收到连接请求格式不正确
ORA-00580 协议版本不匹配
ORA-00581 osndnt: 无法分配上下文区域
ORA-00582 osndnt: 无法撤消分配上下文区域
ORA-00583 osndnt: $TRNLOG 失败
ORA-00584 无法关闭连接
ORA-00585 主机名称格式错误
ORA-00586 osndnt: LIB$ASN_WTH_MBX 失败
ORA-00587 无法连接到远程主机
ORA-00588 来自主机的信息过短
ORA-00589 来自主机的信息数据长度错误
ORA-00590 来自主机的信息类型错误
ORA-00591 写入的字节数错误
ORA-00592 osndnt: $QIO 失败 (邮箱队列)
ORA-00593 osndnt: $DASSGN 失败 (网络设备)
ORA-00594 osndnt: $DASSGN 失败 (邮箱)
ORA-00595 osndnt: $QIO 失败 (接收)
ORA-00596 osndnt: $QIO 失败 (发送)
ORA-00597 osndnt: $QIO 失败 (邮箱队列)
ORA-00598 osndnt: $QIO IO 失败 (邮箱读取)
ORA-00600 内部错误代码,参数: [], [], [], [], [], [], [], []
ORA-00601 清除锁定冲突
ORA-00602 内部编程异常错误
ORA-00603 ORACLE 服务器会话因致命错误而终止
ORA-00604 递归 SQL 层 出现错误
ORA-00606 内部错误代码
ORA-00607 当更改数据块时出现内部错误
ORA-00701 无法改变热启动数据库所需的对象
ORA-00702 引导程序版本 '' 与版本 '' 不一致
ORA-00703 超出行高速缓存例程锁的最大数
ORA-00704 引导程序进程失败
ORA-00705 启动过程中的状态不一致;请在关闭例程后重新启动
ORA-00706 更改文件 '' 的格式时出错
ORA-00816 错误信息无法转换
ORA-00900 无效 SQL 语句
ORA-00901 无效 CREATE 命令
ORA-00902 无效数据类型
ORA-00903 表名无效
ORA-00904 : 无效的标识符
ORA-00905 缺少关键字
ORA-00906 缺少左括号
ORA-00907 缺少右括号
ORA-00908 缺少 NULL 关键字
ORA-00909 参数个数无效
ORA-00910 指定的长度对于数据类型而言过长
ORA-00911 无效字符
ORA-00913 值过多
ORA-00914 缺少 ADD 关键字
ORA-00915 当前不允许网络访问字典表
ORA-00917 缺少逗号
ORA-00918 未明确定义列
ORA-00919 无效函数
ORA-00920 无效的关系运算符
ORA-00921 未预期的 SQL 命令结尾
ORA-00922 缺少或无效选项
ORA-00923 未找到预期 FROM 关键字
ORA-00924 缺少 BY 关键字
ORA-00925 缺失 INTO 关键字
ORA-00926 缺少 VALUES 关键字
ORA-00927 缺少等号
ORA-00928 缺少 SELECT 关键字
ORA-00929 缺少句号
ORA-00930 缺少星号
ORA-00931 缺少标识
ORA-00932 不一致的数据类型: 要求 得到的却是
ORA-00933 SQL 命令未正确结束
ORA-00934 此处不允许使用分组函数
ORA-00935 分组函数的嵌套太深
ORA-00936 缺少表达式
ORA-00937 非单组分组函数
ORA-00938 函数没有足够的参数
ORA-00939 函数的参数过多
ORA-00940 无效的 ALTER 命令
ORA-00941 群集名缺少
ORA-00942 表或视图不存在
ORA-00943 群集不存在
ORA-00944 没有足够的聚簇列数
ORA-00945 指定的聚簇列不存在
ORA-00946 缺少 TO 关键字
ORA-00947 没有足够的值
ORA-00948 不再支持 ALTER CLUSTER 语句
ORA-00949 非法引用远程数据库
ORA-00950 无效 DROP 选项
ORA-00951 群集非空
ORA-00952 缺少 GROUP 关键字
ORA-00953 缺少或无效索引名
ORA-00954 缺少 IDENTIFIED 关键字
ORA-00955 名称已由现有对象使用
ORA-00956 缺少或无效审计选项
ORA-00957 列名重复
ORA-00958 缺少 CHECK 关键字
ORA-00959 表空间''不存在
ORA-00960 选择列表中的命名含糊
ORA-00961 错误的日期/间隔值
ORA-00962 group-by / order-by 表达式过多
ORA-00963 不支持的间隔类型
ORA-00964 表名不在 FROM 列表中
ORA-00965 列别名中不允许'*'
ORA-00966 缺少 TABLE 关键字
ORA-00967 缺少 WHERE 关键字
ORA-00968 缺少 INDEX 关键字
ORA-00969 缺少 ON 关键字
ORA-00970 缺少 WITH 关键字
ORA-00971 缺少 SET 关键字
ORA-00972 标识过长
ORA-00973 无效的行数估计
ORA-00974 无效 PCTFREE 值 (百分比)
ORA-00975 不允许日期 + 日期
ORA-00976 此处不允许为 LEVEL, PRIOR 或 ROWNUM
ORA-00977 重复的审计选项
ORA-00978 嵌套分组函数没有 GROUT BY
ORA-00979 不是 GROUP BY 表达式
ORA-00980 同义词转换不再有效
ORA-00981 不能将表和系统审计选项混在一起
ORA-00982 缺少加号
ORA-00984 列在此处不允许
ORA-00985 无效的程序名
ORA-00986 缺少或无效组名
ORA-00987 缺少或无效用户名
ORA-00988 缺少或无效口令
ORA-00989 给出的用户名口令过多
ORA-00990 缺少或无效权限
ORA-00991 过程仅有 MAC 权限
ORA-00992 REVOKE 命令格式无效
ORA-00993 缺少 GRANT 关键字
ORA-00994 缺少 OPTION 关键字
ORA-00995 缺少或无效同义词标识
ORA-00996 连接运算符是
ORA-00997 非法使用 LONG 数据类型
ORA-00998 必须使用列别名命名此表达式
ORA-00999 无效的视图名
ORA-01000 超出打开游标的最大数
ORA-01001 无效的游标
ORA-01002 读取违反顺序
ORA-01003 语句未进行语法分析
ORA-01004 不支持默认用户名特性;登录被拒绝
ORA-01005 未给出口令;登录被拒绝
ORA-01006 赋值变量不存在
ORA-01007 选择列表中没有变量
ORA-01008 并非所有变量都已关联
ORA-01009 缺少法定参数
ORA-01010 无效的 OCI 操作
ORA-01011 在与第 6 版服务器会话时不能使用第 7 版兼容模式
ORA-01012 没有登录
ORA-01013 用户请求取消当前的操作
ORA-01014 ORACLE 正在关闭过程中
ORA-01015 循环登录请求
ORA-01016 此函数仅可以在读取后调用
ORA-01017 无效的用户名/口令;拒绝登录
ORA-01018 列不具有 LONG 数据类型
ORA-01019 无法在用户方分配内存
ORA-01020 未知的上下文状态
ORA-01021 指定的上下文大小无效
ORA-01022 此配置中不支持数据库操作
ORA-01023 未找到游标上下文 (无效的游标编号)
ORA-01024 OCI 调用中的数据类型无效
ORA-01025 UPI 参数超出范围
ORA-01026 赋值列表中存在多个大小 > 4000 的缓冲区
ORA-01027 在数据定义操作中不允许对变量赋值
ORA-01028 内部双工错误
ORA-01029 内部双工错误
ORA-01030 SELECT ...INTO 变量不存在
ORA-01031 权限不足
ORA-01032 没有这样的用户标识
ORA-01033 ORACLE 正在初始化或关闭过程中
ORA-01034 ORACLE 不可用
ORA-01035 ORACLE 只允许具有 RESTRICTED SESSION 权限的用户使用
ORA-01036 非法的变量名/编号
ORA-01037 超出最大游标内存
ORA-01038 无法写入数据库文件版本 (使用 ORACLE 版本 )
ORA-01039 视图基本对象的权限不足
ORA-01040 口令中的字符无效;登录被拒绝
ORA-01041 内部错误,hostdef 扩展名不存在
ORA-01042 不允许使用打开游标分离会话
ORA-01043 用户方内存损坏 [], [], [], []
ORA-01044 缓冲区大小 (与变量关联) 超出了最大限制
ORA-01045 用户 没有 CREATE SESSION 权限;登录被拒绝
ORA-01046 无法获得扩展上下文区域的空间
ORA-01047 以上错误出现在 schema=, package=, procedure= 中
ORA-01048 给定的上下文中无法找到指定的过程
ORA-01049 流动 RPC 中不支持按名称赋值
ORA-01050 无法获得打开上下文区域的空间
ORA-01051 延迟 rpc 缓冲区格式无效
ORA-01052 未指定所需的目的 LOG_ARCHIVE_DUPLEX_DEST
ORA-01053 无法读取用户存储地址
ORA-01054 无法写入用户存储地址
ORA-01057 用户出口中引用的 block.field 无效或有歧义
ORA-01058 内部 New Upi 接口错误
ORA-01059 在赋值或执行之前进行语法分析
ORA-01060 不允许数组赋值或执行
ORA-01061 无法使用第 7 版客户应用程序启动第 8 版服务器
ORA-01062 无法分配定义缓冲区所需的内存
ORA-01070 服务器使用 Oracle 的旧版本
ORA-01071 无法不启动 ORACLE 而执行操作
ORA-01072 无法停止 ORACLE;因为 ORACLE 不在运行
ORA-01073 致命的连接错误: 不能识别的调用类型
ORA-01074 无法关闭 ORACLE;请首先在注册会话中注销
ORA-01075 您现在已登录
ORA-01076 尚不支持每个进程的多次登录
ORA-01077 背景进程初始化失败
ORA-01078 处理系统参数失败
ORA-01079 ORALCE 数据库未正确创建,操作中止
ORA-01080 关闭 ORACLE 时出错
ORA-01081 无法启动已在运行的 ORACLE --- 请首先关闭
ORA-01082 'row_locking = always' 要求事务处理处理选项
ORA-01083 参数 "" 的值与其它例程序的相应参数值不一致。
ORA-01084 OCI 调用中的参数无效
ORA-01085 延迟 rpc 到 ".." 之前的错误
ORA-01086 从未创建保留点 ''
ORA-01087 不能启动 ORALCE --- 现在已登录
ORA-01088 不能在存在活动进程时关闭 ORACLE
ORA-01089 正在进行紧急关闭 - 不允许进行任何操作
ORA-01090 正在进行关闭 --- 不允许连接
ORA-01091 强行启动出错
ORA-01092 ORACLE 例程终止。强行断开连接
ORA-01093 ALTER DATABASE CLOSE 仅允许在没有连接会话时使用
ORA-01094 ALTER DATABASE CLOSE 正在进行。不允许连接
ORA-01095 DML 语句处理了零个行
ORA-01096 程序版本 () 与例程 () 不兼容
ORA-01097 无法在事务处理过程中关闭 - 首先提交或返回
ORA-01098 在 Long Insert 过程中出现程序接口错误
ORA-01099 如果在单进程模式下启动,则无法在 SHARED 模式下安装数据库
ORA-01100 数据库已安装
ORA-01101 要创建的数据库当前正由其它例程安装
ORA-01102 无法在 EXCLUSIVE 模式下安装数据库
ORA-01103 控制文件中的数据库名 '' 不是 ''
ORA-01104 控制文件数 () 不等于
ORA-01105 安装与其它例程的安装不兼容
ORA-01106 必须在卸下之前关闭数据库
ORA-01107 必须安装数据库才可以进行介质恢复
ORA-01108 文件 正处于备份或介质恢复过程中
ORA-01109 数据库未打开
ORA-01110 数据文件 : ''
ORA-01111 数据文件 名称未知 - 请重命名以更正文件
ORA-01112 未启动介质恢复
ORA-01113 文件 需要介质恢复
ORA-01114 将块写入文件 时出现 IO 错误 (块 # )
ORA-01115 从文件 读取块时出现 IO 错误 (块 # )
ORA-01116 打开数据库文件时出错
ORA-01117 对文件 '' 添加非法块大小: ;限制为
ORA-01118 无法添加任何其它数据库文件: 超出限制
ORA-01119 创建数据库文件 '' 时出错
ORA-01120 无法删除联机数据库文件
ORA-01121 无法重命名数据库文件 - 文件在使用中或在恢复中
ORA-01122 数据库文件 验证失败
ORA-01123 无法启动联机备份;未启用介质恢复
ORA-01124 无法恢复数据文件 - 文件在使用中或在恢复中
ORA-01125 无法禁用介质恢复 - 文件 设置了联机备份
ORA-01126 对于此操作,数据库必须以 EXCLUSIVE 模式安装且未打开
ORA-01127 数据库名 '' 超出 个字符的限制
ORA-01128 无法启动联机备份 - 文件 处于脱机状态
ORA-01129 用户默认或临时表空间不存在
ORA-01130 数据库文件版本 与 ORACLE 版本 不兼容
ORA-01131 DB_FILES 系统参数值 超出限制
ORA-01132 数据库文件名 '' 的长度超出 个字符的限制
ORA-01133 日志文件名 '' 的长度超出 个字符的限制
ORA-01134 数据库已由其它例程独立安装
ORA-01135 DML/query 访问的文件 处于脱机状态
ORA-01136 文件 ( 块) 的指定大小小于 块的原大小
ORA-01137 数据文件 仍处于脱机过程中
ORA-01138 数据库必须在此例程中打开或根本没有打开
ORA-01139 RESETLOGS 选项仅在不完全数据库恢复后有效
ORA-01140 无法结束联机备份 - 所有文件均处于脱机状态
ORA-01141 重命名数据文件 时出错 - 未找到新文件 ''
ORA-01142 无法结束联机备份 - 没有文件在备份中
ORA-01143 不能禁用介质恢复 - 文件 需要介质恢

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK