使用DBMS_ERRLOG.CREATE_ERROR_LOG创建错误日志表时提示表或视图不存在
使用DBMS_ERRLOG.CREATE_ERROR_LOG报错"table or view does not exist"
问题场景
执行DBMS_ERRLOG.CREATE_ERROR_LOG创建错误日志表时,触发错误提示table or view does not exist,先后尝试了两种写法:
- PL/SQL块写法:
Begin dbms_errlog.create_error_log(dml_table_name => 'table_name'); End; /
- EXEC命令写法:
exec dbms_errlog.create_error_log(dml_table_name => 'table_name');
排查与解决方法
验证目标表存在性
先确认table_name拼写无误,Oracle表名默认自动转为大写存储,可执行以下SQL验证:SELECT table_name FROM all_tables WHERE table_name = 'TABLE_NAME'; -- 替换为大写的目标表名如果表属于其他用户,需加上所有者前缀查询,比如
WHERE owner = 'SCOTT' AND table_name = 'EMP'。指定表的所有者(跨Schema场景)
若目标表不在当前用户的Schema下,必须在参数中明确指定所有者,示例:exec dbms_errlog.create_error_log(dml_table_name => 'SCOTT.EMP');检查权限
当前用户需具备:CREATE TABLE权限(用于创建错误日志表)- 目标表的
SELECT权限
处理大小写敏感的表名
如果目标表是用双引号创建的大小写混合名称,必须在参数中用双引号包裹,示例:exec dbms_errlog.create_error_log(dml_table_name => '"MyCustomTable"');
内容的提问来源于stack exchange,提问作者Piyush
相关产品推荐
相关产品推荐

