最近在工作中遇到这么一个场景:
但是随着时间推移,问题出来了:一部分数据没同步过去。
排查步骤:
排查思路是将从A库中同步到B库的数据都删了,然后手动调用过程,发现全部数据可以正常同步过去,这样就将上面三种情况都排除了。
这就令人很费解了,是哪出问题了呢?最后将问题定位在执行存储过程中,由于某种原因发生了异常,导致数据同步失败。这样看来是存储过程写的不够完善,某些异常没考虑进去。
吸取以上事例教训,下面就来探究下Oracle中异常处理流程
和其他编程语言一样,用PL/SQL编写的程序,在运行过程中也会出现各种错误,这些错误就是异常。
举个栗子:
declare
v_result number(10) :=0;
begin
v_result := 10/0;
dbms_output.put_line('结果是:'||v_result);
end;
以上脚本执行时就会发生除数为0的异常
exception
when exception1 [or exception2...] then --异常列表
statement... --异常处理语句
when exception3 [or exception4...] then --异常列表
statement... --异常语句
when others then
statement...
--exception 表示申明异常块部分,它是异常处理部分开始标志
-- where 后面是异常列表
-- then 后面是异常处理语句 也就是发生的异常和异常列表里的异常匹配是,执行的指定语句
-- 可以有多个when
--when others then 是异常处理最后部分,表示如果抛出的异常和前面的都不匹配时执行此处
在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中匹配时,执行之后语句。避免程序中断
-- **异常匹配是从上到下的**
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;
用户定义的异常错误是通过显式使用 RAISE 语句来触发。当引发一个异常错误时,控制就转向到 EXCEPTION块异常错误部分,执行错误处理代码。
举个栗子:
--更新指定员工工资,增加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;
在程序申明部分出现错误,那么该错误就能影响到其他块
例如:
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;
1如果当前块对该异常错误设置了处理,则执行它并成功完成该块的执行,然后控制转给包含块。
如果没有对当前块异常错误设置定义处理器,则通过在包含块中引发它来传播异常错误。然后对该包含块执行步骤1)。
由于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;
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
不能禁用介质恢复 - 文件 需要介质恢
手机扫一扫
移动阅读更方便
你可能感兴趣的文章