如何查询 PL 对象创建异常原因?

本文介绍 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)

赞!