本文介绍 PL 对象创建异常时如何进行原因排查。
适用版本
OceanBase 数据库 V3.X 版本
适用场景
在 OceanBase 数据库中创建 PL 对象成功,但存在
warning
提示,对象创建后状态为
invalid
,可以通过
show errors;
命令定位异常原因。如果没有返回结果,就通过视图
all_errors
定位异常原因。
obclient> SOURCE YJK_CORE-schema.sql Query OK, 0 rows affected, 1 warning (0.06 sec) obclient> SELECT a.OWNER,a.OBJECT_TYPE,a.OBJECT_NAME,a.status FROM dba_objects a WHERE a.OBJECT_NAME = ‘YJK_CORE’; ±------±-------------±------------±--------+ | OWNER | OBJECT_TYPE | OBJECT_NAME | STATUS | ±------±-------------±------------±--------+ | OPS | PACKAGE | YJK_CORE | VALID | | OPS | PACKAGE BODY | YJK_CORE | INVALID | ±------±-------------±------------±--------+
查询 PL 对象创建异常原因
查询
all_errors
视图,并通过
TEXT
列的信息判断异常的原因。 在本示例中,通过
TEXT
列的信息可以判断是由于 PL 引用的序列不存在导致的问题。
obclient> SELECT * FROM all_errors WHERE name=‘YJK_CORE’; ±----------±-----------------------------±-------------±---------±-----±---------±-------------------------------------------------------------------------±----------±---------------+ | OWNER | NAME | TYPE | SEQUENCE | LINE | POSITION | TEXT | ATTRIBUTE | MESSAGE_NUMBER | ±----------±-----------------------------±-------------±---------±-----±---------±-------------------------------------------------------------------------±----------±---------------+ | OPS | YJK_CORE | PACKAGE BODY | 0 | 7 | 1 | ORA-02289: sequence does not exist | ERROR | -4298 | ±----------±-----------------------------±-------------±---------±-----±---------±-------------------------------------------------------------------------±----------±---------------+ 1 row in set (0.30 sec)