本文介绍 PL 对象创建异常时如何进行原因排查。
适用版本
OceanBase 数据库 V2.x、V3.x 版本
V2.x 版本适用场景
在 OceanBase 数据库中创建 PL 对象成功,但存在 warning 提示,对象创建后状态为 invalid,可以通过视图 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 |
+-------+--------------+-------------+---------+
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)