首批通过分布式安全可靠测评,为关键业务系统打造
OceanBase 数据库 V4.x 版本 Oracle 模式租户下,跨用户访问 INDEX 的 DDL,报错 ORA-31603: object 'XXXXX' of type INDEX not found 的原因和解决方法
更新时间:2026-05-09 09:36
问题现象
OceanBase 数据库 V4.x 版本 Oracle 模式租户下跨用户查询 INDEX DDL,报错 INDEX not found,示例如下。
obclient [TEST]> select dbms_metadata.get_ddl('INDEX','UIX_SEC_EVALUATE_INFO','AAA') as ddl from dual;
ORA-31603: object 'UIX_SEC_EVALUATE_INFO' of type INDEX not found in schema 'AAA'
[xxx.xxx.xxx.xxx:2882] [2024-06-20 14:34:23.170785] [xxxxx-xxxxx-xxxxx-xxxxx]
at package body oceanbase.DBMS_METADATA.SHOW_CREATE_TABLE_OR_VIEW , line : 16, col : 1
at anonymous block , line : 150, col : 0
关键日志信息。
[2024-12-07 20:54:09.652578] WDIAG [SQL.SESSION] check_obj_plist_or (ob_ora_priv_check.cpp:461) [91056][T1002_L0_G0][T1002][xxxxx-xxxxx-xxxxx-xxxxx] [lt=14][errcode=-5036] fail to exec check_obj_plist_or_in_roles(guard, tenant_id, user_id, obj_type, obj_id, col_id, plist, role_id_array)(ret=-5036, tenant_id=1002, user_id=500005, obj_type=1, obj_id=500017, col_id=65535, plist=[10, 7, 4, 11, 6, 12])
[2024-12-07 20:54:10.014192] WDIAG ere3 (ob_dbms_sys_error.cpp:83) [91056][T1002_L0_G0][T1002][xxxxx-xxxxx-xxxxx-xxxxx] [lt=19][errcode=-9503] ORA-31603: object 'UIX_SEC_EVALUATE_INFO' of type INDEX not found in schema 'AAA'...
ob_ora_priv_check 权限检查报错 errcode=-5036 即没有权限访问对应的对象信息。
问题原因
该问题环境 OceanBase 数据库 V4.x 版本下,Oracle 模式租户没有 SELECT_CATALOG_ROLE 角色,无法单独授权该角色权限,在用户不具备 select any table 情况下无权限访问索引信息,导致报错 INDEX not found。
问题的风险及影响
跨用户访问 INDEX DDL 报错。
影响租户
影响 OceanBase 数据库中的 Oracle 租户,对于 SYS 租户和 MySQL 租户无影响。
适用版本
OceanBase 数据库 V4.x 版本。
解决方法及规避方式
授权 grant select any table 绕过。