oracle异常处理 - xiezhr
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.
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 自定义异常处理步骤
- 在PL/SQL 块的定义部分定义异常情况:<异常情况> EXCEPTION;
- RAISE <异常情况>;
- 在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 | 不能禁用介质恢复 - 文件 需要介质恢 |
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK