如何以非管理员身份运行 dbms_output 的功能?
Posted
技术标签:
【中文标题】如何以非管理员身份运行 dbms_output 的功能?【英文标题】:How can I run functions of dbms_output as non-admin? 【发布时间】:2021-09-12 14:06:18 【问题描述】:我的计算机上有 XE,使用的是 Oracle Database 18c。早些时候,即使我以系统管理员或默认角色登录,我也能够执行函数dbms_output.put_line();
。现在,我只能在以 sysadmin/sysdba 身份登录时运行dbms_output.put_line()
。作为默认用户,我收到以下消息:
PLS-00201: identifier ‘DBMS_OUPUT.PUT_LINE’ must be declared
我尝试添加权限以使用命令执行dbms_output
grant execute on DBMS_OUTPUT to username;
,但是,当我执行包含dbms_output.put_line()
的命令时收到此消息:
ORA-04067: not executed, package body "PERFSTAT.DBMS_OUTPUT" does not exist
ORA-06508: PL/SQL: could not find program unit being called: "PERFSTAT.DBMS_OUTPUT"
使用 sqlplus,我作为默认用户收到以下错误:
PLS-00201: identifier 'DBMS_OUTPUT.ENABLE' must be declared
我该如何解决这个问题?
【问题讨论】:
您是否在尝试解决您的问题时创建了同义词 - 最初似乎只是一个错字?什么是“默认用户”? @AlexPoole,“默认用户”的意思是“非管理员用户”。可能是因为我正在阅读 Tom Kyte 写的书,其中有一部分是我们 - 设置 Statspack - 创建一个名为“Perfstat”的模式。 【参考方案1】:那可能是因为你把它命名错了:
No : DBMS_OUPUT.PUT_LINE (not "ouput" but "output")
Yes: DBMS_OUTPUT.PUT_LINE
截至第二条消息;好吧,这个:PERFSTAT.DBMS_OUTPUT
没有意义,PERFSTAT 不拥有该软件包。它被称为
begin
dbms_output.put_line('Hello');
end;
/
适用于任何用户,无需特殊授权。
【讨论】:
我编写了您在此处添加的代码,但我仍然收到perfstat
-错误。 ://
你愿意吗?如果我在发布的代码中从未提到过 PERFSTAT,那怎么办?
您可以尝试拨打sys.dbms_output.put_line('Hello');
。如果这样可行,也许您为 dbms_output 创建了一个损坏的同义词 perfstat.dbms_output。以上是关于如何以非管理员身份运行 dbms_output 的功能?的主要内容,如果未能解决你的问题,请参考以下文章
windows 10中Microsoft Edge Beta登录账户提示:以管理员身份运行 Microsoft Edge 时不支持登录。请以非管理员身份重新启动 Microsoft Edge,然后重新
如何在 Debian 上以非 root 用户身份运行 Spring Boot 应用程序?