Oracle中使用utPLSQL执行测试遇ORA-01031权限不足问题求助
解决utPLSQL执行单元测试时ORA-01031权限不足问题
确保utPLSQL核心对象的直接授权
Oracle中执行存储过程时,角色赋予的权限会失效,必须直接将utPLSQL核心对象的EXECUTE权限授予UTESTER用户,覆盖错误栈中提到的对象及其他相关组件:GRANT EXECUTE ON UT_RUNNER TO UTESTER; GRANT EXECUTE ON UT_TRIGGER_CHECK TO UTESTER; GRANT EXECUTE ON UT TO UTESTER; GRANT EXECUTE ON UT_ASSERT TO UTESTER; -- 若还有其他utPLSQL对象触发权限错误,同理补充授权验证测试对象的访问权限
确认UTESTER对被测试的add_numbers函数拥有EXECUTE权限,若函数属于其他用户,需显式授权:GRANT EXECUTE ON ADD_NUMBERS TO UTESTER;同时检查自身创建的
TEST_ADD_NUMBERS测试包是否编译正常,无权限相关的编译错误。补充必要的系统权限
utPLSQL运行时可能需要额外系统权限,可尝试授予:GRANT CREATE ANY VIEW, ALTER SESSION TO UTESTER; GRANT EXECUTE ON DBMS_OUTPUT TO UTESTER;检查utPLSQL安装用户的权限传递
若utPLSQL安装在其他用户(如UT3)下,需确认该用户已将所有内部对象权限授予UTESTER。可通过以下语句排查缺失的权限:-- 查看utPLSQL相关对象的授权情况 SELECT GRANTEE, PRIVILEGE, TABLE_NAME FROM DBA_TAB_PRIVS WHERE GRANTEE = 'UTESTER' AND TABLE_NAME LIKE 'UT_%'; -- 查看系统权限 SELECT GRANTEE, PRIVILEGE FROM DBA_SYS_PRIVS WHERE GRANTEE = 'UTESTER';根据结果补充缺失的权限。
使用完整对象名执行测试
若测试包不属于当前用户,执行时需指定用户前缀,避免对象解析错误:EXEC ut.run('UTESTER.TEST_ADD_NUMBERS');
内容的提问来源于stack exchange,提问作者AnhCao
相关产品推荐
相关产品推荐

