gpt4 book ai didi

database - 以用户身份连接时在 Oracle 数据库中收集 dba_users 信息

转载 作者:搜寻专家 更新时间:2023-10-30 20:02:34 24 4
gpt4 key购买 nike

我是 Oracle 数据库的新手。我看到如果我以 sys 用户身份连接,我可以做

从 dba_users 中选择 *;

但是一旦我完成了conn nonsys@dbid,我就不能再这样做了;我会收到一条错误消息

ORA-00942:表或 View 不存在

select * from sys.dba_users; 也不起作用。

您能否解释一下为什么会这样,以及在以非 sys 用户身份连接后我如何select * from dba_users;

此外,disconnect 让我完全断开连接;是否可以在 sqlplus 中仅“退出”当前用户并返回 sys,如果可以,该怎么做?

最佳答案

Oracle 中的 DBA_* View 包含有关数据库中所有对象的信息,无论所有权如何。默认情况下,只有管理帐户可以访问这些 View 。这样做是出于安全原因。为了让“普通”用户获得对这些 View 的访问权限,他们必须被授予对它们的访问权限,或者直接在每个 View 的基础上,或者通过诸如 SELECT ANY TABLE(不推荐)之类的系统特权全局访问。最好授予对用户真正需要的实际 DBA_ View 的访问权限。通常,ALL_ View 将为典型用户提供他们需要的所有信息。

要离开当前用户 session 并以另一个用户身份连接,请使用 CONNECT 命令:

CONNECT sys/pw as sysdba

编辑:

对象的所有者可以通过 GRANT command: 将对其任何对象的访问权限授予另一个用户或角色

GRANT SELECT ON dba_users TO nonsys;

作为用户 SYS 执行,这将向用户 nonsys 授予对 dba_users View 的选择访问权限。

执行授权后,用户 nonsys 将能够通过 SELECT 语句从此 View 中进行选择:

SELECT * FROM dba_users;

关于database - 以用户身份连接时在 Oracle 数据库中收集 dba_users 信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9881126/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com